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



推荐阅读
  • Python 异步编程:ASGI 服务器与框架详解
    自 Python 3.5 引入 async/await 语法以来,异步编程迅速崛起,吸引了大量开发者的关注。本文将深入探讨 ASGI(异步服务器网关接口)及其在现代 Python Web 开发中的应用,介绍主流的 ASGI 服务器和框架。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 开源组件是什么意思_iView 发布微信小程序 UI 组件库 iView Weapp
    末尾有彩蛋。过去的两年里,iView开源项目已经帮助成千上万的开发者快速完成网站开发,大幅度提高了开发效率,成为Vue.js生态里重要的一 ... [详细]
  • iView 一周年了,同时宣布了 2.0 正式版,但这只是最先...
    两年前,我最先打仗Vue.js框架,当时就被它的轻量、组件化和友爱的API所吸收。以后我将Vue.js和Webpack手艺栈引入我的公司(TalkingData)可视化团队,并经由 ... [详细]
  • 10 个 GitHub 上超火和超好看的管理后台模版,后期工作可能用的上
    大家好,我是你们的超级猫,一个不喜欢吃鱼、又不喜欢喵的超级猫~前言一般人没事的时候刷刷朋友圈、微博、电视剧、知乎,而有些人是没事的时候刷刷 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 移动开发经过前几年爆炸式的增长之后,移动开发进入了一个精细化管理操作的时期,除了拓展自己的能力,在移动开发外寻求到更好的职业道路这条路外,移动开发这份工 ... [详细]
  • vue.js的ui框架是什么
    小编给大家分享一下vue.js的ui框架是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!vue.js的ui框架有:Element、iview、vuetify、vu ... [详细]
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社区 版权所有