用PaddleClas实现酒标识别,让你秒变“鉴酒达人”
Posted 飞桨PaddlePaddle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用PaddleClas实现酒标识别,让你秒变“鉴酒达人”相关的知识,希望对你有一定的参考价值。
“酒”一直在我们中华民族的传统文化中占据着不可或缺的位置,更有“无酒不成席、无酒不成礼”之说。而当今“全球酒坛”百花齐放,成千上万的酒品琳琅满目,我们如何了解这些酒的特点和它们身后的故事呢?“百瓶App”的产品研发团队就敏锐的发现了这一独特的需求,力争为“酒圈”的消费者提供更贴心、人性化的体验,并通过百度飞桨开源深度学习平台的助力,完成了“百瓶App”中的“扫酒标识酒”的功能,让各类酒友都变成识酒达人。
“扫酒标识酒”功能主要用到图像分类的技术,百度飞桨作为源于产业实践的开源深度学习平台,在图像分类方面同样有着极其丰富的AI解决方案资源。
其
中飞桨图像分类套件
P
addleClas
提供了丰富的图像分类模型资源
,覆盖ResNet_vd、Mo
bileNetV3等23种系列的分类网络结构以及对应的117个分类预训练模型,用户可根据自己的需求,针对不同场景选择相应的模型进行训练使用。在本项目中,考虑识酒功能需要在移动端APP上部署,因此我们采用了参数量和计算量较少的MobileNetV2模型。
同时采用飞桨轻量化推理引擎
Paddle Lite实现移动端轻量化部署和高效预测
,最终在测试数据上达到了
超过97%的识别准确率
。
数据集总共包含114个品牌,每个品牌独立为一个类别。其中训练集中每个类别有250张左右的图像,验证集中每个类别有50张左右的图像。为满足真实场景的多样性,数据集中同类别图像的酒瓶摆放方向、光线、酒标出镜程度等略有不同。
在对训练集进行分析后,我们发现由于数据采集方式较为单一,导致训练集中同一类别下的图像重复度较高,如果直接训练将花费较长时间,且容易带来模型过拟合的问题。因此我们采用K-means聚类方法对训练集进行聚类,在每个类中随机抽取一张作为此类的代表,训练过程如下图所示。最终训练集中,每个类别下的样本数据减少为原来的1/5,聚类后的数据集仅保留了差异较为明显的样本。
在真实应用场景中,被拍摄的酒瓶往往会受到光线、摆放角度、入镜大小等因素的影响,会与训练集存在一定的差异,通过数据增强来提高模型的泛化能力,是十分必要的。数据增强主要为5个步骤,具体如下:
以50%的概率进行随机旋转(旋转范围为0-30度);
对上一步中图像进行随机裁剪;
将上一步中裁剪后的图像调整大小到224*224分辨率(分辨率大小可根据实际数据集适当调整);
对上一步中结果进行随机颜色扰动,随机颜色扰动由图2中四种扰动方式构成,以50%的概率按照“明亮度->对比度->色相->平衡度”的顺序进行颜色扰动,剩余50%的概率按照“明亮度->色相->平衡度->对比度”的顺序进行颜色扰动;
对上一步中结果以50%的概率进行左右翻转;
在进行图像增强操作后,为了更好地适配飞桨所提供的预训练模型,对当前的图像进行减均值除以方差的操作。
基于模型最终的实际使用场景,我们
采用MobileNetV2模型
作为分类模型,它可以看做是一种MobileNetV1和ResNet的结合,在MobileNetV1引入深度可分离卷积降低计算量和参数量的基础上,引入了ResNet的残差结构(bottleneck),精度相对于MobileNetV1有较大提升,图3对比了3种模型的子结构。
图3 MobileNetV1、MobileNetV2、ResNet子结构对比
最终,在学习率策略为piecewise decay、学习率为0.0025、批大小为64、epoch为20的基础上,
分类精度可达到97%以上
。
移动端APP的大小和响应速度往往是评价APP性能的两个重要指标
。飞桨轻量化推理引擎Paddle Lite专门用于实现包括手机移动端在内的端侧轻量化高效预测,是一个高性能、轻量级的深度学习预测引擎。
在该项目中,Paddle Lite首先对训练获得的MobileNetV2模型进行操作融合 (Operator fusion)、存储优化 (Memory optimization)这一系列计算图优化操作,优化后模型体积大幅减小且预测速度得到大幅提升。通过操作的融合,Paddle Lite在对推理库进行剪裁后获得只包含feed、fetch、conv2d、depthwise_conv2d、 elementwise_add、fc、pool2d、relu6、softmax这几个Operator的推理库;对于优化后的模型,Paddle Lite将执行阶段和计算图优化阶段实现良好的解耦拆
分,移动端直接部署无任何第三方依赖的执行阶段。(Paddle-Lite提供了在各个平台上模型的部署的示例代码:
https://github.com/PaddlePaddle/Paddle-Lite-Demo
)
训练后的模型成功部署于“百瓶App”,支持了App中的“扫酒标识酒”功能。如图4所示,打开App中的拍照功能,拍摄想识别的酒标,即可快速识别出对应的酒,并把酒的相关信息和评论信息推送出来。
飞桨提供了涵盖丰富模型资源的图像分类套件PaddleClas,针对不同的任务有不同的适配模型,用户可根据自己的需求,针对不同场景灵活选择相应的模型;并且通过飞桨轻量化推理引擎Paddle Lite,可灵活的实现移动端或嵌入端的轻量化高效预测。“百瓶App”的“扫酒标识酒”功能是飞桨落地企业AI项目的又一力作,填补了移动端智能识酒领域的空白,让人人秒变“识酒达人”,感兴趣的快来试一试吧。
https://github.com/PaddlePaddle/PaddleClas
https://gitee.com/paddlepaddle/PaddleClas
https://github.com/PaddlePaddle/Paddle-Lite
https://gitee.com/paddlepaddle/paddle-lite
如果您加入官方QQ群,您将遇上大批志同道合的深度学习同学。官方QQ群:
703252161
。
如果您想详细了解更多飞桨的相关内容,请参阅以下文档。
https://www.paddlepaddle.org.cn
https://github.com/PaddlePaddle/Paddle
https://gitee.com/paddlepaddle/Paddle
以上是关于用PaddleClas实现酒标识别,让你秒变“鉴酒达人”的主要内容,如果未能解决你的问题,请参考以下文章
教程 | 飞宇科技 Vimble 2 前后镜头切换的正确玩法,让你秒变拍片大神
AI时代咱用脸玩“飞机大战”,PaddleHub让你秒变“脸控”游戏达人
爆肝强烈推荐 十多款2023年必备国内外王炸级AI工具 (免费 精品 好用) 让你秒变装逼佬,感受人工智能带来的生产力!
Android面试:整理了Android面试官最常问的174道面试题,让你秒变offer收割机
EasyNLP中文文图生成模型带你秒变艺术家
EasyNLP 中文文图生成模型带你秒变艺术家