背景介绍百度于去年11月推出定制化图片培训服务(https://ai.baidu.com/customize/app/model/)。随着深度学习在图像处理方面的成熟,基于CNN的迁移学习已被证明非常有效。越来越多的传统业务和互联网业务面临着提高效率和自动化业务升级的需求。甚至在一些需要实时处理海量图片的场合,比如电商图片搜索等场景,使用图片搜索寻找相似商品也变得和文字搜索一样死板。深度学习领域一直缺乏人才,传统公司也没有办法训练自己的深度学习模型。而且,面向业务的公司往往没有办法积累数十万的数据量来训练深度学习模型。领先的人工智能公司往往在人才储备和数据方面具有无可比拟的优势。因此,科技巨头往往形成数据和人才的垄断地位。今年早些时候,谷歌推出了AutoML服务,目标是在没有机器学习专业知识和能力的情况下训练高质量的自定义模型。此后,科技巨头纷纷步入强者断腕阵,牺牲自己的模型利润空间,抛出面向非AI专业人士的服务工具,帮助他们生成适合自己业务场景的模型。不过,谷歌的AutoML服务今天还处于Alpha模式,网上也没有文档。此次,百度推出基于小样本的图像训练服务,将数据、建模、测试、部署、网站上线等一系列流程整合在一起。用户只需点击鼠标即可获得自己的模型,而且是免费的,非常良心。训练过程训练自己的模型其实很容易。简而言之,您只需四步即可获得自己的数据模型。1、创建模型:登录百度账号后,提交基本信息,点击“创建模型”,填写模型名称和使用场景,即可开始创建模型。2.上传数据集:按照格式要求整理图片,上传训练图片压缩包,完成训练集的准备。3、训练模型:选择数据集中的训练数据进行训练,支持同一模型的多次迭代。4.验证模型:训练完成后,可以进行效果验证,可以提交验证图片来验证模型的准确性。5.模型在线:“培训完成”模型可在线申请模型,预计当天上线。上线后,在“我的模型”中查看“上线详情”,获取专有的自定义图像识别API,同时参考该API文档(http://ai.baidu.com/docs#/ImageClassify-API/564753d3)可以正常使用。6、扩展训练:如果以后需要识别类型扩展,可以进入“数据集管理”,继续上传新的压缩包,或者基于单一分类标签进行扩展。Caltech101所有模型训练结果截图地址:http://www.vision.caltech.edu/Image_Datasets/Caltech101/101itemrecognition。准确率为95.18%,F1-score为0.93。总体精度是可以接受的。我这里打开具体结果查看各个类别的准确率:Barrel:Accuracy100.00%F1-score1.00Ant:Accuracy88.89%F1-score0.89Anchor:Accuracy81.82%F1-score0.72可以发现,泛化能力的模型是不够的。对于一致性高的简单物体,识别率达到100%。对于复杂的蚂蚁形状,可以看出准确率只有89%。对于形状复杂,且经常有遮挡和同伴的anchors,模型能力进一步受到挑战,准确率下降到82%。该网络还表现出一些不够复杂的特征。也许使用更深的网络会更好。值得注意的是,F1下降到了0.72,说明recall分数已经到了较低的位置。也就是说,如果应用是遗漏损失高于准确识别收益的场景,这个模型会造成比较大的损失。Flowers(5classeswith4242images):数据:https://www.kaggle.com/alxmamaev/flowers-recognition/data准确率91.89%F1-score0.92可以看出复杂的图像,尤其是数量不多的时候single,精度明显下降。不过,如果拿人来作为比较的标杆,还是很可以接受的。Food(20classesx1000images):数据:https://www.vision.ee.ethz.ch/datasets_extra/food-101/准确率82.18%F1-score0.82这个数据集非常有名且具有挑战性。因为食物不像花一样有固定的风格,它的形状和材质千差万别,而且还伴随着食材、地点等不确定因素。对于机器来说,这是非常困难的。业界最好的结果,使用ResNet或其他非常深的网络,在101个类别和每个类别1000个样本的情况下达到了90%以上的准确率。最后总结了所有模型的截图。可以看出,百度的图像训练服务在某些场景下效果很好,但在某些场景下却显得力不从心。不过,这已经是从零到一的飞跃,让非AI的人也能体验到训练自己模型的快感。而且它真的可以用来为自己的企业服务。由衷地为这些走在AI前沿的兄弟们点个大大的赞。建议给出训练过程的一些细节,比如数据上传,训练模型的进度等。准确的显示可以减少等待的烦躁。允许同时训练多个模型,使客户可以加快寻找最优训练数据集的过程。提供热图是为了方便用户观察和理解不同类之间的结果。可以给出网络架构的选项,不同的模型架构在数据集上的表现会有所不同。给出一些技术文件,增加透明度。比如学习速度,Train和Validationset的比例,提前终止的条件,Optimizer的选择等等。甚至有些超参数是可以手动调整的,或许民间专家可以提供更好的参数集。
