热门标签 | 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 还刚开源不久,相信在社区的力量下,会带来不同的功能和体验,拭目以待。



推荐阅读
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 深入解析 Unity URP/SRP 渲染管线:匠心打造的全面指南
    本文深入探讨了Unity中的URP、SRP和HDRP渲染管线,详细解析了它们之间的关系及各自的特点。首先介绍了SRP的基本概念及其在Unity渲染架构中的作用,随后重点阐述了URP和HDRP的设计理念与应用场景。文章还分析了SRP诞生的背景,解释了为何Unity需要引入这一灵活的渲染框架,以满足不同项目的需求。通过对比URP和HDRP,读者可以更好地理解如何选择合适的渲染管线,以优化项目的性能和视觉效果。 ... [详细]
  • 每日一书丨AI圣经《深度学习》作者斩获2018年图灵奖
    2019年3月27日——ACM宣布,深度学习之父YoshuaBengio,YannLeCun,以及GeoffreyHinton获得了2018年的图灵奖, ... [详细]
  • Python错误重试让多少开发者头疼?高效解决方案出炉
    ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
  • 系统转换的三种方法及其具体应用分析
    系统转换是信息技术领域中常见的任务,本文详细探讨了三种主要的系统转换方法及其具体应用场景。这些方法包括:代码迁移、数据迁移和平台迁移。文章通过实例分析了每种方法的优势和局限性,并提供了实际操作中的注意事项和技术要点。例如,代码迁移适用于从VB6获取网页源码,数据迁移在Ubuntu中用于隐藏侧边栏,而平台迁移则涉及Tomcat 6.0的使用和谷歌爬虫的测试。此外,文章还讨论了蓝翰互动PHP面试和5118 SEO工具在系统转换中的应用,为读者提供了全面的技术参考。 ... [详细]
  • NFT市场热度持续攀升,波卡能否抓住机遇迎来NFT夏季热潮?
    NFT市场热度持续攀升,波卡能否抓住机遇迎来NFT夏季热潮? ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 短信验证码安全性堪忧,多因素认证或成未来主流
    短信验证码安全性堪忧,多因素认证或成未来主流 ... [详细]
  • PyCharm调试技巧:开发者的实用指南
    PyCharm调试技巧:开发者的实用指南 ... [详细]
  • 读手语图像识别论文笔记2
    文章目录一、前言二、笔记1.名词解释2.流程分析上一篇快速门:读手语图像识别论文笔记1(手语识别背景和方法)一、前言一句:“做完了&#x ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • TensorFlow入门上
    前置准备在阅读本文之前,请确定你已经了解了神经网络的基本结构以及前向传播、后向传播的基本原理,如果尚未了解,可以查看下文。神经网络初探​chrer.com也可以直接在我博客阅读Te ... [详细]
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社区 版权所有