为了账号安全,请及时绑定邮箱和手机立即绑定

手把手教你构建食物识别AI:小白轻易可上手,人气高赞有Demo | 资源

标签:
人工智能
铜灵 编译整理
量子位 出品  

5c8faa390001eb1106400480.jpg

谁说深度学习任务都是步骤复杂、高深难懂的?

其实,小白也可以轻易上手,还能做出好玩有用的作品。

最近,工程师Nidhin Pattaniyil和Reshama Shaikh写了一篇从零开始构建网页&App版食物识别AI的教程,有数据、有教程、有Demo,简洁好懂,赢得了大批推特网友点赞。

连fast.ai创始人、Kaggle前主席及首席科学家Jeremy Howard都点赞推荐:

https://img1.sycdn.imooc.com//5c8faa77000171a410800570.jpg

以下来看详细步骤:

https://img1.sycdn.imooc.com//5c8faaa800014e1510801064.jpg

热身运动

先大致了解下这次的任务,就用深度学习的方法分别在网页和手机端构建食物图像分类器。

学完这个项目,你将get以下技能:

  • 用fastai库训练一个给食物照片分类的深度学习模型

  • 用Heroku和Flask将这个模型部署到网页和移动端

这篇教程共分为三部分,目录如下:

第一部分:训练分类器

第二部分:将模型部署到网页端

第三部分:将模型部署到移动端

不多说了,下面正式开始具体讲解具体步骤。

训练分类器

要构建这样一个好玩的应用,需要先获取模型权重文件,你可以在任何深度学习库中获取,两位作者小哥用到的是fastai库。

打开下面这个GitHub repo,里面Jupyter Notebook中的代码可以帮你训练模型。

地址:
https://github.com/npatta01/web-deep-learning-classifier

此外,还需要准备模型训练的相关软件,两位小哥用的是:

  • fastai: version 1.0.42

  • PyTorch: version 1.0.0

  • Python: version 3.6

1.0版本的深度学习fastai库是可用的,需要在PyTorch上运行。如果对fastai的操作不熟悉,这有一套fastai课程可以学习:

https://docs.fast.ai/

我们用到的数据是在谷歌云平台上进行检索和分析的,当然你可以随意选择云平台(亚马逊、Paperspce)等等都可以。

在fastai上可以找到安装GPU工作环境的操作指导,这个项目中两位小哥用到的设备是英伟达Tesla P100和100GB的硬盘。

小哥还推荐了一个好玩的食物分类数据集:Food-101。

Food-101数据集中包含了101种类别的食物,共有101k(也就是101000)张图像,每个类别中有1000张图片,其中250张是测试图像,750张是训练图像。

不过需要注意,这个数据集中的训练图像是不干净的,还包含了一些噪音数据,有一些标签是错误的。

在这个数据集中,所有的图像都被重新调整了大小,最大边长为512像素。数据集共5GB大小,可以用下面的代码进行检索:

https://img1.sycdn.imooc.com//5c8faad20001981110360108.jpg

用下面的代码块打开tar.gz文件:

https://img1.sycdn.imooc.com//5c8faad30001557f10200096.jpg

软硬件准备齐全,数据集也配好了,下面可以开始训练了。小哥用Resnet-34 CNN架构开始训练模型,在谷歌云平台上的运行时间约一个小时。

训练模型的代码可以在下面这个地址中找到:

https://github.com/npatta01/web-deep-learning-classifier

用ImageDataBunch读取这些图像:

https://img1.sycdn.imooc.com//5c8faaff0001485710800164.jpg

这些数据已经在resnet34上预训练过了,现在只需要直接运行确定最佳学习率。

https://img1.sycdn.imooc.com//5c8faafe000192fd10800158.jpg

在这个案例中,当学习率=0.01时运行情况最好:

https://img1.sycdn.imooc.com//5c8fab4a000186e710800088.jpg

研究人员还运行了更多复杂的架构,考虑到数据有101种类别和GPU的处理时间及存储条件,他们最终选定的是一个简单的Resnet34架构。

然后,用0.01的学习率进行了8次迭代,错误率减小到了28.9%。

https://img1.sycdn.imooc.com//5c8fab4d0001c36010800451.jpg

然后,小哥解冻了最后几层网络,寻找新的学习率。

https://img1.sycdn.imooc.com//5c8fab7e0001167f10800185.jpg

5次迭代后,错误率从28.9%减小到28.1%。

https://img1.sycdn.imooc.com//5c8fab7f0001565a10800405.jpg

混淆矩阵显示,以下类别的食物经常被错误分类:

https://img1.sycdn.imooc.com//5c8fabe3000105dd06790507.jpg

输出深度学习模型

输出这个深度学习模型时还伴随着一个权重文件,即model.pth (或final.pth)。如果你按照这个教程来训练的话,模型的存储位置在models代码块中。

final.pth文件可以从Jupyter中下载到你的电脑中。

model.pth文件可能太大了放不进git commit中,这里有一些处理方法:

1、存储在google drive中

2、存储在GitHub releases中

3、存储在云端的bucket中

这两位外国小哥将他们的模型存储在了GitHub releases中,地址:

https://github.com/npatta01/web-deep-learning-classifier/releases

在网页端部署

模型训练完毕,现在终于可以开始部署阶段了。小哥把这个repo当成模板:

https://github.com/npatta01/web-deep-learning-classifier

并将分类器算法model.pth的输出作为Heroku app的输入。

需要进行的文件更新

如果要运行这个网页端应用,还得先进行以下操作:

1、在src/config.yaml文件中更新这些内容:

  • title

  • description

  • about

  • code

  • sampleImages

2、把docs/2_heroku_app.md文件中的应用名改成APP_NAME=”food-img-classifier。

安装Heroku

如果你没有Heroku的账户,先去注册( www.heroku.com)。

记得在你的代码中,更新APP_NAME:

https://img1.sycdn.imooc.com//5c8fabc500016a9910800571.jpg

注意:如果在15分钟内没有任何操作,Heroku将暂停运行,当再次唤醒网页端应用时,Heroku会被再次唤醒。

在移动端部署模型

先送上repo地址:

https://github.com/npatta01/mobile-deep-learning-classifier

需要进行的文件更新

如果要在手机上运行这个应用,需要进行如下操作:

在 config.js文件中,更新下面的代码块:

  • AppConfig

  • update the title

  • point host to the heroku app url

  • description

小哥还放上了手机端食物分类应用的Demo,地址:

https://www.youtube.com/watch?reload=9&v=7d2qFLeYvRc

成本预计

最后,小哥预计了完成这些操作所需要的经济成本,包括:

1、Apple store开发者账号注册费用:100美元

2、安卓Google Play注册费用:30美元

好了~详细教程就介绍到这了,可以开始动手了。

传送门

教程原文:
https://reshamas.github.io/deploying-deep-learning-models-on-web-and-mobile/

网页版Demo地址:
https://food-img-classifier.herokuapp.com/

iOS版Demo地址:
https://itunes.apple.com/us/app/food-classifier/id1445356461?mt=8

安卓版Demo地址:
https://play.google.com/store/apps/details?id=com.rsnp.foodclassifier


                                      作者系网易新闻·网易号“各有态度”签约作者


                                                             —  —



点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消