Hi,我们用飞桨做了一个“AI无人售货柜”

社会主义新天地 提交于 2020-03-09 19:42:06

【飞桨开发者说】白浩杰,鸥若教育CEO,北航软件工程硕士,美国佛罗里达国际大学高性能数据库研究中心助理研究员,百度深度学习布道师,主要研究方向深度学习、数据可视化等。

 

我在教授AI课程中发现,学生们学习AI的热情高涨,但是很难有一个场景能够给学员们提供一个直观的感受。而智能货柜恰恰能够解决学员们的这个问题,为学员们提供了一个学以致用的好机会。为了方便AI教学与普及,为学员提供看得见摸得着的真实AI体验,因此,我用深度学习技术,用了大概2个月的时间,几百行代码制作了这款“AI无人售货柜”,目前已能识别5种饮料。在下文中,我将为大家揭秘这款“AI无人售货柜”的具体实现过程和效果。

 

在商场购物或餐厅就餐,经常会遇到排队结账的困扰。如果能有无人售货装置,实现“不排队,秒收银”,完全无需人工干预,就能极大地提升结算效率,缓解结算排队拥堵的问题。

 

现今常见的的无人售货机,有感应式和红外扫描式两大类。这两类无人售货机,大多集成了射频读写装置、红外扫描等多种设备,结构复杂,成本普遍较高,维护及更新换代困难。

 

然而,随着人工智能的发展,计算机视觉领域取得了许多超越常人的成就。尤其是深度学习算法的引入,解决了许多实际问题。

 

本次,我们就突破常规,不再研究感应式和红外扫描式这两类无人结算系统,而是利用深度学习技术,结合计算机视觉,来研制一款基于计算机视觉的“AI无人售货柜”。

 

这款基于计算机视觉的“AI无人售货柜”,结构简单,我们通过摄像头采集商品信息,然后经过部署在后端的模型进行推断,就可以检测到顾客购买了哪些商品,然后调用付款功能,实现无人售货流程。

 

 

基于计算机视觉的“AI无人售货柜”,前期最重要的两项工作就是深度学习框架的选择和深度学习算法的选择。

 

要开发深度学习项目,首要是选择一款开发利器,那就是“深度学习框架”,他会让你的工作达到事半功倍的效果。

 

全世界流行的深度学习框架有Tensorflow、飞桨、Caffe、Theano、MXNet、PyTorch等。经过综合考量,我们选择百度研发的飞桨(PaddlePaddle)框架。之所以选择这款框架,是因为飞桨发布了许多官方支持的工业级应用模型,这些模型涵盖了自然语言处理、计算机视觉、推荐引擎等多个领域。而本次我们处理的问题就属于计算机视觉领域,所以可以直接使用飞桨实现的模型。比如这次我们用的模型是yolov3,在飞桨官网上也可以得到这个模型,链接:

https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/yolov3

   

飞桨还发布了在coco数据集上训练好的预训练模型,我们直接拿过来在此基础上做fine tuning。

 

下载链接:

https://paddlemodels.bj.bcebos.com/yolo/yolov3.tar.gz

 

当柜体以及其他硬件装好之后,接下来就是利用深度学习算法来进行商品检测。

 

用深度学习算法来进行商品检测的工作流程如下图所示:

 

 

整个工作流程可分如下几步:

① 制作数据集

② 调用飞桨框架搭建yolov3模型

③ 加载飞桨在coco数据集上训练好的预训练模型

④ 开始训练,并保存模型

⑤ 使用训练好的模型,进行预测部署

 

以上步骤中,最核心的就是第二步了:如何调用飞桨框架搭建yolov3模型。

 

yolov3是一个很不错的目标检测算法,用它来做无人售货柜的核心算法非常合适。但是,yolov3这个算法非常复杂,如何用深度学习框架来搭建它,并且让他发挥出该有的高速度、高精度呢?这一点是最关键的。因为飞桨框架同时支持动态图和静态图,这样可以同时兼顾灵活性和高性能,而且经过后期验证,用飞桨框架搭建的yolov3模型,“高速度+高精度”是可以双实现的。同时,从代码上来看,用飞桨框架搭建的yolov3模型呈模块化设计,很简洁,一目了然,下面贴一些用飞桨框架搭建yolov3的核心代码:

单就不同饮料的检测来说,训练200轮之后,效果已经很不错了,比如下图就是其中的检测效果展示:

 

从图上可以看出,用飞桨搭建的yolov3在训练之后,预测效果是很不错的,模型能够准确的、快速地把不同的饮料检测出来。

 

使用深度学习技术,结合飞桨框架,这款基于计算机视觉的“AI无人售货柜”,无论是在工作效率上,还是在工作准确率上,都有很大提高。单就检测不同饮料来说,检出准确率能够达到90%,实现一次全流程的“取货、关门、检测、调出付款码”,仅需数秒,比人工检测效率提高数十倍。

 

同时,相比于感应式和红外扫描式无人售货柜,这款基于计算机视觉的“AI无人售货柜”,有如下优点:

 

① 结构简单。因为是“基于计算机视觉”的,所以他的主要部件是摄像头+计算单元,结构非常简单,维护也很方便,成本也较低。

 

② 更新升级简单。因为是“基于深度学习”的,所以当要升级的时候,不需要更换硬件,只需要重新训练模型,重新载入就可以了,没有难度,任何人都可以操作。

 

③ 环境适应性强。因为是“基于计算机视觉”的,且柜体内有补光设施,对环境适应性很强,而感应式和红外扫描式,则会对环境的温湿度等外部环境有严格要求。

大家有兴趣,不妨用飞桨平台,试一试。

 

想与更多的深度学习开发者交流,请加入飞桨官方QQ群:796771754

 

如果您想详细了解更多飞桨PaddlePaddle的相关内容,请参阅以下文档:

 

官网地址:https://www.paddlepaddle.org.cn/

 

YOLOv3项目地址:

https://github.com/PaddlePaddle/models/tree/release/1.6/PaddleCV/yolov3

 

更多目标检测需求,也欢迎使用PaddleDetection开发套件:

https://github.com/PaddlePaddle/PaddleDetection

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!