热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Apple开源机器学习框架TuriCreate简介与实践

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Apple开源机器学习框架TuriCreate简介与实践相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Apple 开源机器学习框架 Turi Create 简介与实践相关的知识,希望对你有一定的参考价值。


引言


本文是 TalkingData 张永超同学原创发表在内部资讯平台 Furion 上的一篇文章,介绍了 Apple 开源机器学习框架 Turi Create,并用其尝试做了图像识别的简单实践。


日前,苹果在 GitHub 平台上公布了 Turi Create 框架,苹果表示,这个框架旨在通过简化机器学习模型的开发,降低开发者构建模型的门槛。


图片来自:the iBulletin


1. Turi Create 概述


Turi Create 简化了自定义机器学习模型的开发。你不需要成为机器学习的专家,即可为你的程序添加推荐、对象检测、图像分类、图像相似度识别或活动分类。


1.1 Turi Create 的特点及应用场景


具体来说,它有以下特点:




  • 易于使用:让你聚焦于任务而不是算法


  • 可视化:内置的流式可视化功能可以探索你的数据


  • 灵活:支持文本,图像,音频,视频和传感器数据


  • 快速和可扩展性:可在单台机器上处理大型数据集


  • 易于准备配置:模型导出到 Core ML 即可用于 ios、macOS、watchOS 和 tvOS 应用程序



使用 Turi Create,你可以处理很多常见的场景:




  • 推荐系统


  • 图像分类


  • 图像相似度检测


  • 对象检测


  • 活动分类器


  • 文本分类器



你还可以使用基本的机器学习模型做成基于算法的工具包:




  • 分类


  • 回归


  • 图谱分析


  • 聚类


  • 最近邻元素


  • 主题模型



1.2 支持的平台及安装方法


Turi Create 支持:




  • macOS 10.12+


  • Linux(依赖于 glibc 2.12+)


  • Windows 10(需要 WSL)



系统要求




  • Python 2.7(即将支持 Python 3.5+)


  • x86_64 架构



安装


Linux 不同变种的安装详细说明,参阅 LINUX_INSTALL.md。常见的安装问题,参阅 INSTALL_ISSUES.md。


苹果官方推荐使用环境 virtualenv,安装或建立 Turi Create。请务必使用你的系统 pip 安装 virtualenv。




  1. pip install virtualenv



安装 Turi Create 的方法参照标准的 Python 包安装步骤。要创建一个名为 venv 的 Python 虚拟环境,请参照以下步骤:




  1. # Create a Python virtual environment


  2. cd ~


  3. virtualenv venv



要激活新的虚拟环境并在此环境中安装 Turi Create,请按照下列步骤操作:




  1. # Active your virtual environment


  2. source ~/venv/bin/activate



  3. # Install Turi Create in the new virtual environment, pythonenv


  4. (venv) pip install -U turicreate



另外,如果你使用的是 Anaconda,你可以使用它的虚拟环境:




  1. conda create -n venv python=2.7 anaconda


  2. source activate venv



在您的虚拟环境中安装 Turi Create:




  1. (venv) pip install -U turicreate



GPU 支持


Turi Create 不一定需要 GPU,但某些模型可以通过使用 GPU 加速。如果要在安装 turicreate 包后启用 GPU 支持,请执行以下步骤:


安装 CUDA 8.0(说明)

为 CUDA 8.0 安装 cuDNN 5(说明)


确保将 CUDA 库路径添加到 LD_LIBRARY_PATH 环境变量。通常情况下,这意味着将以下行添加到 ~/.bashrc 文件中:




  1. export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH



如果你将 cuDNN 文件安装到单独的目录中,请确保单独添加它。下一步是卸载 mxnet 并安装启用 CUDA 的 mxnet-cu80 包:




  1. (venv) pip uninstall -y mxnet


  2. (venv) pip install mxnet-cu80==0.11.0



确保你安装的 MXNet 版本与 turicreate 依赖的版本相同(当前为 0.11.0)。如果你在设置 GPU 时遇到困难,可参阅 MXNet 安装说明。


当然,除了上述的安装方式之外,你还可以从源码构建,如果想要从源码构建,可参阅 BUILD.md 中的详细说明。


2. 猫狗大战


Turi Create 可以训练定制的机器学习模型。这意味着可以开发可识别不同对象的模型,只要您使用大量图像训练模型即可。


这里我们以识别猫狗为例,建立一个自定义的模型,可以识别图像是猫还是狗。


2.1. 下载猫和狗的图像


第一步是下载很多猫和狗的图像。这是必要的,因为我们将使用图像来训练我们的自定义模型。这里我使用的是 Kaggle Dogs vs. Cats 的数据集。如果你觉得在这里单独下载麻烦,可直接在 Kaggle Cats and Dogs Dataset 中下载全量数据集。


Apple 开源机器学习框架 Turi Create 简介与实践


下载好图像数据集之后,我们解压到对应的文件夹内备用。


2.2. 标记数据、训练模型


在开始训练我们的模型前,首先需要对每一张图像标记其为‘cat’还是‘dog’。幸运的是 Turi Create 提供了标记基于不同文件夹的图像的功能,具体代码如下:




  1. import turicreate as tc



  2. # load the images


  3. data = tc.image_analysis.load_images('PetImages', with_path = True)


  4. data['label'] = data['path'].apply(lambda path:'Dog' if 'Dog' in path else 'Cat')


  5. print(data.groupby('label',[tc.aggregate.COUNT]))


  6. # save the data


  7. data.save('cats-dogs.sframe')



  8. data.explore()



标记完成后,可以看到数据集的全局情况:


Apple 开源机器学习框架 Turi Create 简介与实践


上述代码的最后一行 data.explore(),会自动打开 Turi Create 的图像可视化查看工具,在这里你可以看到每张图像以及相应的标记,也是一种核查标记是否正确的方式。


Apple 开源机器学习框架 Turi Create 简介与实践


数据集准备完成后,就可以进行模型的训练了。在训练的时候,会将数据集按照‘二八原则’进行训练集和测试集划分,然后进行模型训练:




  1. import turicreate as tc



  2. # load the data


  3. data = tc.SFrame('cats-dogs.sframe')


  4. # random split data


  5. train_data, test_data = data.random_split(0.8)


  6. # train model


  7. model = tc.image_classifier.create(train_data, target='label')


  8. # test model


  9. predictions = model.predict(test_data)


  10. # get model metrics


  11. metrics = model.evaluate(test_data)


  12. # print test accuracy


  13. print(metrics['accuracy'])


  14. # save .model


  15. model.save('mymodel.model')


  16. # export CoreML model


  17. model.export_coreml('CatsAndDogs.mlmodel')



训练的过程可能会花一点时间,长短取决对机器的配置。在训练的过程中,Turi Create 会打印出每一步执行的动作,如下:


Apple 开源机器学习框架 Turi Create 简介与实践


……



最终我们得到的正确率为:0.986954749287,但看这个结果还不错。并且已经导出了 mymodel.model 和支持 Core ML 的 CatsAndDogs.mlmodel。


2.3. 移植模型到 iOS 应用程序


有了 CatsAndDogs.mlmodel 模型文件后,我们就可以将其移植到 iOS 应用程序中了。关于如何集成,可参考 Apple 官方的图像识别例子,这里不再陈述:


Integrating a Core ML Model into Your App


Classifying Images with Vision and Core ML


总结


本篇内容对 Apple 公开的 Turi Create 机器学习框架进行了简单的介绍,并实践了 Turi Create 在图像识别方面的一些基本用法。Turi Create 不仅仅能用于图像识别,在其他方面能有很好的表现,目前 Turi Create 还刚开源不久,相信在社区的力量下,会带来不同的功能和体验,拭目以待。



推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • PL2303HXD电路图(USB转UART)介绍及应用
    本文介绍了PL2303HXD电路图(USB转UART)的特性和应用,该电路图可以实现RS232和USB信号的转换,方便嵌入到手持设备中。PL2303HXD作为USB/RS232双向转换器,可以将USB数据转换为RS232信息流格式发送给外设,并将RS232外设的数据转换为USB数据格式传送回主机。通过利用USB块传输模式和自动流量控制,PL2303HXD能够实现更高的数据传输吞吐量比传统的UART端口。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
author-avatar
手机用户2702932800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有