控制台登陆
400-700-8700
0-12

 

​计算机视觉技术在日常生活、商业、安防等领域落地非常广泛,尤其以图像识别技术为代表的应用已深入生活的方方面面。在品牌商的业务场景中,商品识别技术带来的高效性、便利性也尤为突出,能够为企业带来降本增效的效果。

 

人们日常购买的商品品类数量巨大,而同类商品在包装上的差别可能非常细微,例如logo位置的区别,标签文字的区别,甚至面积占比很小的一块区域颜色不同,这些差别在通用的图像识别中很难准确的辨别。

 

而细粒度图像识别算法恰好解决了这一难题。接下来让我们来看看到底什么是细粒度识别,细粒度在商品识别领域又是如何应用的。

 

一、什么是细粒度识别

 

通常我们所说的图像识别是利用卷积神经网络提取特征,深层网络能够提取高级语义信息,进而通过Softmax 层输出各个类别置信度,完成分类(识别)任务。因此常见的图像识别网络能够很好地识别一个物体大类属性,但无法很好地鉴别物体不同部位或者不同组件的细微的差别。

 

细粒度识别则基于常用的图像识别网络,引入不同的辅助机制,让神经网络能够更好地“关注”到细微差别,进而更好地区分相似物体。细粒度识别关注的数据特征是类间差异小、类内差异大。常见的细粒度识别算法包括:基于目标检测子网络、基于注意力机制等。

 

0-9

 

 

在零售场景内,超市的货架上同一区域,通常会陈列同一品类的SKU,很多SKU之间存在高度相似性,体现在相同包装类型,相似包装封面,或者仅体现在大小上的差别等。准确识别这些视觉上高度相似的SKU类别也是细粒度识别范畴内的重要应用。

 

调味料-19欧尚江南店_7553

 

二、通用商品识别算法

 

在进入细粒度商品识别之前,最直接的方案就是采用常见的卷积神经网络直接完成SKU分类任务。常见模型包括ResNet,VGG,Inception,其中,ResNet因为其特有的跳跃连接设计,可以完成非常深的神经网络设计,例如ResNet-152。跳跃连接允许残差模块学习恒等映射,保证深层次的网络准确率不会比浅层网络效果更差。

0

基于ResNet-50开发的商品识别模型,通过修改输出层类别数量,加载预训练好的模型参数,通过迁移学习的方法训练模型,可以达到比较理想的效果。

 

迁移学习过程中,采用两阶段的方式,首先固定卷积层参数,不参与训练,以较大的学习率有监督的学习输出层,即Softmax层参数。第二阶段解冻卷积层,以较小的学习率微调卷积层以及输出层参数。整个训练过程由于加载了与训练模型参数,效率非常高,可以快速完成一次模型迭代任务。

 

另外在生产中常会遇见类别间数据量不平衡的问题,一个常用解决方案是对数据进行增强,包括随机裁剪、旋转、调节对比度、亮度等。另一个常用解决方案是设定每个类别的损失权重,权重参数可以通过统计类别数据量完成。

 

三、基于检测器的细粒度商品识别

 

在商品识别过程中,经常会遇到非常相似的SKU,其差别更多体现在包装细节上,例如图中两种黄豆酱的包装文字有差别(多100克。),其他区域几乎相同。当检测模型从一副货架图像上检测出商品图像时,分辨率较低,这更需要鲁棒的细粒度识别算法能够很好地识别出文本区域的差别。

 

0-11

 

基于检测子网络的细粒度识别算法首先检测目标SKU图像的局部区域,然后将局部区域特征融合进行分类,输出SKU类别结果。检测器通常基于 R-CNN 网络进行改进,加入一些几何约束,让局部区域的检测效果更理想。R-CNN系列算法目前已经发展出了Faster-RCNN网络,通过引入RPN网络结构,只需要在一张图像上提取一次CNN特征图,根据特征图完成区域坐标框预测和类别识别,可以实现端到端的训练。

 

0-10

 
 
主干网络可以选择比较典型的ResNet,VGG等模型,ResNet更深层次的分布式特征表示对于鉴别物体本身有很大的帮助,在生产中考虑到对准确度和效率两者的要求,通常选择ResNet50模型提取特征。一般在生产中面对数据量不够充足的情况时,我们选择加载预训练模型参数的方法来初始化主干网络。
 

检测器的RPN网络直接获取特征图,输出候选框。获得物体坐标框和局部区域坐标框后,加入几何约束条件如下式:

0-7

其中, ∆_box (X)统计落在物体外部的局部区域坐标框,δ_i (x_i )作为一个目标来优化; 约束了一个物体每个局部区域坐标位置的得分。通过以上目标检测和几何约束,基于局部区域检测的细粒度识别算法就可以完成端到端训练。

 

准备基于检测器的细粒度识别数据集的时候,需要标注大量的局部区域坐标框,耗费大量人力和财力。同时基于检测器的方法整体服务效率不高。那么是否存在更加高效且不需要额外标注信息的细粒度识别算法呢?答案是肯定的。

 

 

四、基于注意力的细粒度商品识别

 

注意力机制来自于人类对环境的感知原理。人类在观察环境时,大脑往往只关注某几个特别重要的局部区域,获取需要的信息。最初注意力机制大量应用于机器翻译领域,后来在计算机视觉领域也开始应用注意力机制来解决一些问题。

 

注意力机制可以指导卷积神经网络对局部区域进行更好的激活,让神经网络更加“关注”局部区域的特征,自然就学习到局部区域的差别。基本的注意力机制定义如下:

0-8

基于上面的局部区域检测的细粒度识别方法,将检测器去除掉,通过注意力机制来完成对局部区域的定位是注意力引入后的一大成果。设计思想依旧参考从整体到局部的识别策略,首先引入对图像中目标的定位,也就是目标级别注意力。通过全局平均池化(GAP)方法从卷积后的特征图中获取显著特征图(Saliency Map):

0-9

其中 Mc (x,y)则表示在坐标为x, y 的位置特征图中激活的重要程度,越重要的位置就代表是需要识别的物体。通过显著特征图定位物体坐标位置,可以去掉背景噪音的干扰,对后续细粒度识别的准确度有很大帮助。

 

获取到显著特征图后,结合基于检测器方法中引入的几何约束性质,对经过选择性搜索算法选择出来的局部区域坐标框进行过滤,保留满足几何约束的框。接下来对这些局部区域进行排序,利用卷积神经网络输出的特征通道响应值,结合聚类算法将特征响应聚类为N个类别,表示SKU表面上不同的有差别区域。最后将选择出来的局部区域图像经过前面的卷积激活后,归类到具体的特征类别中,经过分类后获得最终结果。

 

基于注意力的商品细粒度识别降低了标注工作量,与训练普通物体识别所需标注一致,效率大幅提升,能够实现算法模型的高效迭代流程。

 

0-10

 

还有一些领域内比较新颖的细粒度识别算法,借鉴了强化学习的思路设计整体网络框架,例如:NTS-Net,其结构包含三个主要的网络,分别是Navigator Network、Teacher Network、Scrutinizer Network。

 

其中Navigator 网络对输入图像提取候选框,类似 RPN 网络。Teacher 网络则输入经过NMS并提取Top-M的候选区域,输出置信度使用交叉熵损失函数进行监督,优化 Teacher 网络指导Navigator 网络输出排序。最终Scrutinizer网络输入候选区域,并完成细粒度分类。

 

基于整图标注的细粒度识别算法层出不穷,我们研发的商品细粒度识别算法也在不断进化,处理更加复杂真实的场景数据。

 

五、细粒度商品识别的分析方法

 

完成细粒度商品识别模型的训练后,需要进一步检查训练效果。一般在查看分类模型效果时,可以检查准确率(Top-1,Top-5),F1 分数等指标。对于高度相似的多个类别之间分类准确度更直观的检查方法还包括查看混淆矩阵。一个常见的混淆矩阵如下:

 

0-4

 

通过混淆矩阵,可以很方便的观察误识别的类别,也就能够很快定位到误分类SKU。经过简单的卷积神经网络,例如ResNet,VGG,Inception等模型训练的商品识别模型通常对高度相似的SKU产生很大的混淆性,在混淆矩阵的对角线上可以明显的观察到归一化后的结果较低,此时可以针对具有混淆的SKU设计细粒度商品识别模型。

 

 

 

 

 

【品览AI论技】细粒度在商品识别领域的应用

2019-09-18