关于机器学习的三个阶段
715
2022-05-30
上周听了昌启哥的【用AI识别草莓成熟】的分享之后,深受启发,心想,既然ModelArts的自动学习功能可以用来识别草莓的成熟度,那能不能再用它来识别一些别的东西呢?~看了一眼手边的奶茶,嗯,奶茶也许是个不错的选择~
作为一个奶茶重度爱好者,在街上看见小姐姐拿着一杯看起来特别好喝的奶茶,摩拳擦掌好想知道她喝的是什么。直接上去问?女票重拳出击警告!要是有一个奶茶识别工具就好辽~
说干就干~
数据获取
其实最难的应该就是数据获取的部分,因为在华为云ModelArts强大的自动学习功能加持下,建模、学习、预测都能够自动完成,反而是数据的获取成了一个比较麻烦的环节(疯狂暗示MA下一步加入一个“自动获取”功能)。数据来源选择的是美团(因为饿了么已经关闭了桌面端的订餐入口,看不到饮品详情了~),由于时间关系,暂时只爬取了北京市所有coco门店的奶茶图片及标签。
本着技术是为人服务的原则,我首先选择的是最“摸鱼”的方法——用某爪鱼来爬取数据。一通行云流水般的操作之后,却得到这样的结果。
图片链接全部为空,这是什么情况?我赶紧打开网页,查看网页的源代码信息。发现,原来图片被包裹在了一个div标签中,猜想软件在自动采集的时候只采集了div,没有采集到div下一级的img,自然就是空白了。(结果后面发现不是这个原因...)
偷懒失败,只好自己动手,丰衣足食了~
打开pycharm,导入selenium和requests,根据网页结构定位到需要爬取的图片,设置好翻页,暂停时间,开始爬取。(其中有很多细节问题,由于这篇是奶茶识别专场,爬虫部分就不过多介绍啦~详情见另一篇文章~(避踩雷 | 爬取美团门店信息中的“量子幽灵”))
经过一番操作~一共爬到150多家门店共900张奶茶图片,足够做一个展示了~(原来光是北京就开了这么多家coco门店,看来全国3000家无压力鸭~)
数据标注
打开ModelArts,创建新的图片分类实例。
这里有两种创建方式。
一种是新建数据集,如图所示,
再向数据集中添加刚刚爬取到的奶茶图片。
然后选中需要标注的图片,为其打上“coco奶茶”、“大叔奶茶”、“百香果双响炮”之类的标签。
还要一个一个人工标注~是不是感觉非常麻烦?
于是我选择了另外一种方式——使用已有数据集。
还好在爬取数据的时候我顺便爬了他们的标签,通过ModelArts的实例(首页第二个实例花卉识别)确认了自动标注所需要的输入格式——图片和txt文档名相同,txt中写入对应图片的标签,如图所示。
自动生成标签文件的代码如下:
import os dir = 'C:/Users/Sirius/Desktop/data' # 这里要改成自己文件夹的路径 list = os.listdir(dir) for l in list: tag = l.split('_')[0] name = l.split('.')[0] with open('C:/Users/Sirius/Desktop/data/%s.txt' % name, 'w', encoding='utf-8') as f: # 这里也是哟~要改成自己文件夹的路径 f.write(tag)
得到已经标注好的数据之后,就可以开始操作辽~
打开OBS,上传数据集文件夹
上传完毕~
模型训练
完成数据集的处理之后,就可以正式开始训练辽~
打开ModelArts的自动训练功能,设置好算法(随便选了一个图像分类的算法),设置数据来源为我们刚刚上传的文件,训练输出为止为同目录下的output文件夹,参数保持默认,开始训练。
可以看到模型已经开始训练辽~(据观察,网页不是实时刷新的,而是每半分钟更新一次状态信息)
等待大概十分钟,训练完成!
模型部署
点击运行成功的训练模型,将训练好的模型部署到服务中~
再点击“部署上线”,给模型部署一个在线服务~
安排上了!来试试分类的效果如何~
模型测试
测试一:coco奶茶
点击“预测”~上传一张没有拿去训练的图片,得到这样的结果:
可以看到,预测地还是蛮准的,实际的查准率应该是超过了85%(没有考虑标签大小写的问题,还需要进一步的处理~)
测试二:百香果双响炮
可以看到,百香果双响炮(最喜欢喝这个辽~)也被很准确(98.8%)滴识别了出来~
那么,本次尝试基本就宣告成功啦~
还想进一步?
本次探索主要的不足在于:
一是样本比较少,只选择了北京市的coco门店,改改爬虫代码阔以获取到更多的数据,能够覆盖更广的奶茶品类。
二是标签没有进行处理,比如像字母大小写、名字差了一两个字这些情况,还可以进一步滴改进~
另外,光是对奶茶进行分类其实也没啥意思,要是能够加入奶茶的更多信息(例如品牌、卡路里、成分组成等等),就可以有更多的使用场景辽~比如奶茶卡路里识别~(虽然很多手机已经内置这个功能惹~)
写在最后
ModelArts的一些使用体会
两个字形容ModelArts的使用体验——【极佳】
我自己的专业是信息管理与信息系统(信管),这个专业过去主要研究的是文献情报信息,所以需要处理的一般是文本数据(提到文本分析首先就想到了分词、TF-IDF、K-Means/KNN三板斧~),平时主要是使用算法而不是去研究算法,就比如做信息检索实验的时候,一般是用jieba或者nltk对中英文进行分词变形,然后用sklearn库中封装的各种算法进行训练、建模和预测,已经很适应把训练模型这一步作为一个黑箱来使用了。
但当更进一步,接触比如图像识别、语音识别这些领域时,就发现还需要使用更多的库,比如tensorflow、pytorch之类的主流人工智能库,这些学习难度都比较大。另一方面,机器学习模型往往建立在大量训练的基础上,对硬件也有一定的要求,高级一些的任务,PC可能很难胜任。
而ModelArts就很好地解决了这两个问题,我还是可以像以前一样,把数据获取下来,打好标签,然后一股脑儿扔给ModelArts,就能得到一个相当不错的训练模型。需要使用时,调用API就好了,可以节省很多资源。
机器学习
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。