货架战争打响27页PPT详解货架商品识
出品
智东西公开课讲师
魏勋品览数据技术合伙人
导读:
6月8日晚,品览数据技术合伙人魏勋在智东西公开课进行了AI零售合辑第三讲的直播讲解,主题为《商品识别算法在货架商品智能巡检中的应用》。
在本次讲解中,魏勋老师首先分析新零售下货架巡检存在现状,给出了以图像识别和目标检测实现货架巡检的方案,之后分别从图像分类与目标检测发展历史,货架商品识别的难点、落地关键及实际应用案例等方面进行深入讲解。
本文为此次专场主讲环节的图文整理:
正文:
大家好,我是魏勋,是上海品览数据的技术合伙人,今天由我为大家带来在快消零售领域的一个具体落地方案,是讲货架商品的智能巡检的应用,今天分享的主题为《商品识别算法在货架商品智能巡检中的应用》,主要分以下5个部分:
1、新零售赛道:货架战争2、图像分类与目标检测发展历史3、货架商品识别的难点4、货架商品识别落地实践5、货架巡检应用实例
新零售赛道:货架战争
新零售的概念是马云于年提出,它是用大数据、人工智能等先进的技术手段,对商品的生产、流通与销售过程进行升级改造,进而重塑业态结构和生态圈,并对线上服务、线下体验以及现代物流进行深度融合的零售新模式。
按照传统,在零售领域可以分为三大元素,分别为人、货、场,人是指消费者,货是指商品,即SKU,场是指各种大卖场、超市、全家便利店或夫妻老婆店等。场可以再细分到最小的有机单元,就是货架。随着新零售时代到来,货架已经逐渐成为零售企业的战场。
货架的情况包括商品有多少,它被放在哪里?放在哪里比较适合?同时也包括陈列哪些品类,有没有竞品,竞品是如何放置?这些对于零售企业都很重要,对于未来销售、营销的策略有很大的参考意义,所以把它称为一场关于货架的战争。
举个简单的例子,比如当货架上的商品缺货了,作为一个消费者,会做什么样的行为?可能会买别的品牌,还可能去别处买,或者干脆不买,或买另一种类型替代。无论如何若货架上缺货时,品牌商可能会失去46%的购买者,而零售商可能会失去30%的购买者。
为了要打赢这场货架战争,我们必须要精确的获取线下商品的实际陈列信息。为了做到这一步,我们必须要对货架图像中的商品进行识别,这就会用到计算机视觉领域中的图像分类和目标检测技术。
如果在CV领域研究比较久的同学肯定清楚,图像分类跟目标检测是计算机视觉中非常基础的研究方向,且非常重要。图像分类是最基础的,例如上图显示的小猫,可以直接对它进行分类,判断到底是猫还是狗。检测就额外增加了一部分,必须进行定位,才知道它到底是在哪里,同时对定位的目标进行分类。
从图像分类和目标检测的发展历史来看,在年以前都是通过提取手工特征,比如SIFT、HOG、LBP等,然后才有后续的分类和检测。随着AlexNet在年横空出世,后面所有的方法都是用了CNN或者深度学习的方式来自动提取图像特征,进而帮助我们进行图像分类和目标检测。
对于目标检测的发展脉络,可以从年SIFT的提出开始,还有Cascades、HOG、DPM等,这些都是年之前提出用来实现目标检测的手段。随着AlexNet提出之后,AlexNet最早用于图像分类。年后,开始有学者在想目标检测是否也可以用CNN来做,所以第一个作品是Overfeat,在与它很接近的时间里,出现了一个非常经典的网络RCNN,然后像FastR-CNN、FasterR-CNN还有YOLO系列及SSD和RetinaNet等。诸如此类的很多网络可以从上图中看到,从13年到了19年,这段时间里涌现了非常多的网络,标红的都是些比较有影响力的网络。
目标检测的深度学习模型通常是分为两种,第一种是两阶段模型,有Overfeat和RCNN系列,它先要对目标框有一个比较粗的定位,然后再对粗的目标框进行精细的修正,同时进行分类识别。有学者觉得这太麻烦了,能不能一步到位,直接从图像里得到boundingbox和它的类别信息。这就是YOLO系列,还有SSD和RetinaNet等。通常,两阶段模型的精度会比较高,但速度会比较慢;单阶段模型的精度通常要低些,但它的速度会很快,如上图右边所示,不仅是说两阶段、单阶段的问题,还考虑了backbone的问题,若backbone越大,速度可能越慢。我们可以看到同一个backbone,在单阶段的模型下,它的速度远远要快于两阶段模型,但是精度mAP会要低一些,这张图是在COCO数据集上计算的结果。
货架商品识别的难点
上面简要介绍了图像分类及目标检测的大致情况,下面直接进入具体场景,就是货架商品识别。识别包含检测和分类两部分。对于货架商品识别的难点分成两块,首先,是算法难点,主要有四点。第一是商品种类繁多,像ImageNet用来刷榜时,一般用到个种类,但商品的SKU种类基本上是上万,甚至是几十万,对真实世界里面的SKU数量可能是百万千万级;第二是在货架场景中,通常会摆放的非常密集;第三是某些商品非常相似,特征看上去没有明显的差异,这也是图像分类的难点,只是在货架上体现程度可能会更大;第四点比较特殊,同一款商品可能有不同的规格,比如可口可乐,它可能会有毫升、毫升,或一升的,它更像是等比例缩放,因为计算机视觉天然是要求有尺度不变性的,这种情况通常是很难区分的。
上图是具体的图片展示,最左边的图是一个调味料的货架,可以看到种类非常多,一排货架里面应该有几十种,摆放也非常密集,基本上是紧挨着的情况。中间的图是一个比较典型的情况,两个商品属于同一个商家,左边是一个常规的,右边的可能是为了某种活动促销特别特意加了克,可以看到商品其实非常相像,除了中间多了“克”之外,其他方面没有任何差异。因为在PPT的图比较大,看得比较清楚,如果是在货架上,是很难分辨出来的。右面的图片是同类商品具有多种规格,可以看到最左上角的酱油是毫升,中间第二排的是毫升,倒数第二排是毫升。它们的外观很像,只是存在不同的规格,如果你只是用常规的分类模型去训练,或者用常规的操作去处理,这三种分错的概率很大。
第二个是数据难点,也包括四个部分。第一个是拍摄的货架可能是一种非常倾斜的状态,倾斜很容易导致透视,很多商品就会被遮挡,检测跟分类会受到很大的干扰;第二个是采集到的货架图片是模糊的,里面可辨识的特征基本上看不清,第三个是货架图片翻拍,有一些从业人员可能会偷懒,对着电脑拍一张图片作为工作业绩,然后上传图片,这就是翻拍的情况,这种翻拍也会影响模型的准确率,客户也会要求我们把这类图片识别出来;第四个是货架图片存在曝光过度或者曝光不足的情况,在这种情况下货架的商品基本上看不清的。
针对上面四点,再给大家展示下,第一张图是货架过度倾斜,在过度倾斜的情况下,靠右边的商品还可以看出,但靠左边的商品基本上被遮挡,即使能检测出来,它的类别也识别不了,因为大部分的特征都被遮挡。第二张图展示货架图片模糊的情况,模糊导致看不清商品的主要区分特征,尤其涉及到一些比较相似的商品,模糊基本上就看不清了。第三张图是翻拍的情况,通过肉眼能看出一些情况,它里面会有一条条纹理信息,一般叫摩尔纹,由屏幕的发射光和自然光不一样导致。最后是货架图片过暗或特别亮的情况,过亮时特征都被遮挡,你只能看到一片闪亮,过暗时可以隐约看到一点,但也不知道具体是什么商品。
货架商品识别落地实践
下面介绍下整体落地实践的流程,流程是比较通用的。首先是数据标注,这是深度学习不可避免的。通常先手标一部分,再利用一个比较弱的模型,进行一个预标注,最后是人工调整,这很大程度上节省人力的成本。
第二个是模型的训练调优,通过模型选型和超参的调整去训练模型。训练完后,先做内部测试,内部测完后,还要再做公测,根据公测的反馈,再去迭代上面的步骤,也可能会重新补一批数据,再重新训练模型,达到公测的要求之后,我们会部署上线。目前我们主要是云端部署的方式,模型的云端部署用的是tfserving的方式,外部端是flask框架。
对于数据难点,其实有一句机器学习的名言:数据是模型的上限,必须要保证数据质量,你才能谈模型的准确率。所以对刚才的几种情况:货架倾斜、模糊、翻拍、过暗和过亮,再把图片送给模型之前,先对图像质量进行分析。实际情况可能还不止这4种。对于货架倾斜,我们会做一个货架检测,根据检测出来的货架层的一个角度来判断倾斜情况。后面三种是通过图像处理的方式来进行判断,一张图片必须通过质量检测,同时满足这4个条件后,才把它送到模型里面去做后续的检测和识别。
在最早期时,对于场景货架商品的识别,我们直接应用检测模型来做检测,但实际上,我们尝试了很多种检测模型,但是效果不太理想,mAP也很低,只有40%左右,与COCO的情况就差不多,SKU类别非常容易分错,根本无法商用。
通过分析发现,首先,直接用检测模型去进行检测、识别,在COCO数据集上在SOTA模型上有54%左右的准确率。由于数据量及SKU的种类数量非常大,所以不容易实现。通过大量的阅读论文,发现目标检测里面的定位和分类,其实是有一定矛盾的,通过上图右边看到,若要检测北极熊,它
转载请注明:http://www.abuoumao.com/hyfw/4224.html