发明内容
本发明目的在于,提供一种识别SKU的训练方法及装置,以提高针对SKU的标注效率。
为实现上述目的,本发明实施例提供一种识别SKU的训练方法,包括:获取预设数量的包含有SKU标注信息的图像样本,为所述SKU标注信息构建统一的标注格式;其中,所述标注信息包括框选的SKU选区及SKU信息;将标注格式统一后的图像样本按照预设比例随机分配为检测器的训练集和测试集,使得检测器能够对图像样本中的SKU进行自动框选得到检测结果;其中,所述检测结果为所述图像样本被框选的区域;通过对所述检测结果进行特征提取来训练分类器,使得分类器能够根据检测结果自动输出最大概率类别的SKU信息。
优选地,所述分类器包括一级分类器和二级分类器;所述一级分类器用于根据预设的分类需求对所述检测结果进行粗分类,得到第一分类结果;所述二级分类器用于根据所述第一分类结果对所述检测结果进行细分类。
优选地,将标注格式统一后的图像样本的70%~90%作为训练集,10%~30%作为测试集对检测器进行训练。
优选地,所述图像样本包括线下商场拍摄的A类照片以及通过布景摆拍、3D建模和/或网络爬取获得的C类照片。
优选地,所述图像样本的采集场景包括货柜、冰柜、陈列挂架、冷风柜、专柜平台和堆头。
优选地,所述SKU信息包括商品类别和型号信息。
优选地,所述分类器包括others类别,用于加入不同的负样本,降低误识别率。
本发明实施例还提供一种识别SKU的训练装置,包括:样本获取模块,用于获取预设数量的包含有SKU标注信息的图像样本,为所述SKU标注信息构建统一的标注格式;其中,所述标注信息包括框选的SKU选区及SKU信息;检测器训练模块,用于将标注格式统一后的图像样本按照预设比例随机分配为检测器的训练集和测试集,使得检测器能够对图像样本中的SKU进行自动框选得到检测结果;分类器训练模块,用于通过对所述检测结果进行特征提取来训练分类器,使得分类器能够根据检测结果自动输出最大概率类别的SKU信息。
本发明实施例还提供一种计算机终端设备,包括一个或多个处理器和存储器。存储器与所述处理器耦接,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述任一实施例所述的识别SKU的训练方法。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一实施例所述的识别SKU的训练方法。
本发明的实施例,具有如下有益效果:
本发明提供了一种识别SKU的训练方法及装置,涉及商品陈列管理技术领域。所述方法包括以下步骤:获取预设数量的包含有SKU标注信息的图像样本,为所述SKU标注信息构建统一的标注格式;其中,所述标注信息包括框选的SKU选区及SKU信息;将标注格式统一后的图像样本按照预设比例随机分配为检测器的训练集和测试集,使得检测器能够对图像样本中的SKU进行自动框选得到检测结果;通过对所述检测结果进行特征提取来训练分类器,使得分类器能够根据检测结果自动输出最大概率类别的SKU信息。相较于现有技术在训练和识别的过程中都极大受限于深度学习目标框架的属性,比如需要大量的标注,图片和长时间的训练才能获得一个高精准度模型,本发明采用实景照片和目标SKU的摆拍照片结合的模型级联技术进行改良更适合实际场景的应用。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,文中所使用的步骤编号仅是为了方便描述,不对作为对步骤执行先后顺序的限定。
应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
SKU(Stock Keeping Unit)表示商品的最小销售单元,作为最小销售单元的一款商品拥有不同颜色,代表不同的SKU,例:一件衣服,有红色、白色、蓝色,则SKU编码也不相同,在本申请文件中用SKU指代一款最小销售单元的商品。
请参阅图1,图1是本发明某一实施例提供的识别SKU的训练方法的流程示意图。本发明实施例提供的一种识别SKU的训练方法,包括:
步骤S100,获取预设数量的包含有SKU标注信息的图像样本,为SKU标注信息构建统一的标注格式;其中,标注信息包括框选的SKU选区及SKU信息。
步骤S200,将标注格式统一后的图像样本按照预设比例随机分配为检测器的训练集和测试集,使得检测器能够对图像样本中的SKU进行自动框选得到检测结果。其中,检测结果为所述图像样本被框选的区域。
步骤S300,通过对检测结果进行特征提取来训练分类器,使得分类器能够根据检测结果自动输出最大概率类别的SKU信息。
检测器和分类器都是基于计算机视觉技术的深度学习神经网络模型,分别用于快速识别出图像样本中SKU(Stock Keeping Unit,是库存进出计量的基本单元)在图像中的位置区域以及框选的SKU的属性。检测器是一种通用检测器,利用各个品牌的待定数据训练得到的仅一个daiding_101类别的检测器模型,用于识别图像中的所有SKU。
在本实施例中,检测器所采用的神经网络模型为卷积神经网络,包括:1)配置好需要训练的网络架构信息,里面包含主干网络,网络的层数,训练使用的loss,优化器,训练的优化方法等,还有训练的图像数据和图像的标签路径,预处理图像一些格式。2)开始训练,用python去启动训练脚本,脚本会根据配置加载不同的网络结构和数据路径,一个批量一个批量进行训练。3)一段时间后,观察训练的loss结果,如果loss已经下降到一定程度,基本达到收敛状态,训练完成。基于具体的查全查准率和Map,读测试集然后依次评估测试集的准确率。
由于检测器已经将需要进行分类的SKU进行框选,因此分类器部分的图像处理不再需要图像分割,只需要对检测器自动框选得到的检测结果进行特征识别即可。
分类器的作用是对检测器框选识别出的SKU进行商品分类,商品分类是指根据一定的管理目的,为满足商品生产、流通、消费活动的全部或部分需要,将管理范围内的商品集合总体,以所选择的适当的商品基本特征作为分类标志,逐次归纳为若干个范围更小、特质更趋一致的子集合体(类目),例如大类、中类、小类、细类,直至品种、细目等,从而使该范围内所有商品得以明确区分与体系化的过程。
在本实施例中,分类器包括一级分类器和二级分类器;一级分类器用于根据预设的分类需求对所述检测结果进行粗分类,得到第一分类结果;二级分类器用于根据所述第一分类结果对所述检测结果进行细分类。
例如,分类器中的一级分类器可以有不同的分类方式,例如在饮料产品中,(1)按产品的品牌类别来划分,包括红牛,香飘飘,景田,农夫山泉等。(2)按产品的属性来划分包括罐装,瓶装,盒装,连包等。(3)按产品的不同功能系列来划分则包括运动功能性饮料,碳酸性饮料,果汁饮料,奶制品等。分类器中的二级分类器主要是对细品类进行识别:例如红牛的金罐300ML,娃哈哈矿泉水500ml,农夫山泉矿泉水500ml等。当一级分类器按照产品功能类别进行粗分类时,判定某一SKU属于果汁饮料;进一步的二级分类器针对果汁饮料展开细分类,按照果汁饮料可能存在的葡萄饮品、草莓饮品等判定该SKU属于哪一种味道的果汁饮料。一级分类器和二级分类器的层级划分按照本领域技术人员的需求都会有不同的设置,且不限于只设置两个层级分类器,在产品种类划分得更加细致时,还能构建三级分类器甚至四级分类器等。
在现有技术中,商家需要了解本品与竞品的陈列状况,在品类复杂的情况下,需要耗费大量的时间清点有关商品的数量,需要对大量的陈列规则进行对比,比如农夫山泉在国内是顶级的饮料消费品厂商,不仅需要关心农夫山泉系列的陈列状况,包括各类规格矿泉水,农夫果园系列,农夫尖叫系列,可口可乐,百事可乐,景田,怡宝等竞品的陈列方式和排面状况。现有技术,一张图片需要把所有需要识别的目标框都标注出来。例如,农夫山泉厂家所提供的图片中包含农夫山泉本品和其他厂家竞品的话,则需要一个标注人员了解所有相关农夫的产品和农夫在市场上的竞品,比如景田和怡宝的矿泉水,可口可乐和百事可乐的新品等,同时在标注时还不能出错,这样单纯农夫山泉系列这个厂商,标注人员必须了解几百甚至上千款竞品。另外在标注图片的同时,如果客户提供的图片有大量的噪音,比如模糊,拍摄角度不规范,过曝光等问题,会给标注人员带来很多麻烦,传统的标注结合训练架构方式逐渐不适应现代快节奏的需求。
本发明实施例主要针对标注方式和训练方式,把目标检测器架构的功能一分为二,检测结合识别分两大块优化。检测器基于传统的检测器方式检测,但仅对被识别的SKU进行框选,无需标注识别,识别功能用分类器代替,而训练的样本则从标注整图转移到单个SKU的小图上。这样做的目的在于:(1)检测器不再局限于本品框的检测,检测器将成为通用检测,横跨多个项目且可反复重用,标注人员可以不再需要反复标注相同的SKU。(2)分类器则可以为某项目或者为某一大类产品进行定制训练,分类器在训练过程中收敛较快,增删SKU比检测器成本低70%以上。而标注的时候用C+A集混合的方式可以极大提高标注的效率,可以根据场景进行不同的搭配。其中C集即通过布景摆拍、3D建模和/或网络爬取获得的C类照片,A集即线下商场拍摄的A类照片。
检测器和分类器的训练是需要记录有大量不同场景的SKU的图像样本,加入大量的标注信息进行监督性训练。目前用于训练通用检测器模型图片大多为快销场景,加入更多场景的更多角度数据的训练,得到一个鲁棒的目标检测模型,该目标检测器的目的在于可以检测各种场景中出现的SKU,并返回位置信息。大量的场景加入可以使得神经网络可以在任何场景都能检测出SKU,图像样本的采集场景包括货柜、冰柜、陈列挂架、冷风柜、专柜平台和堆头等复杂的组合场景。这些场景都需要标记SKU,每个SKU都需要分类和标出位置信息。训练集和测试集按照(7~9:3~1)的比例对检测器进行训练。SKU信息包括商品类别和型号信息。
A类照片和C类照片的数量尽可能达到一定的平衡,A:C=1:1或者1:2左右,这个是由于经过不断的实验发现,该比例可以适应更多A集图片中的复杂场景,在自动打标的过程中可以尽可能准备识别,摆拍照片的标注比实景照片快,摆拍照片的标注可以用通用检测聚类方法。例如kmeans聚类,首先人为指定K类聚类中心,比如30类,以单个货架的图片作为聚类样本,多角度拍摄和SKU换层来形成一系列不同的图片,把每个SKU在图片中的位置剪切下来,形成一个货架的SKU大池。在kmeans算法架构中随机选取K类SKU作为聚类中心,把每个SKU的像素作为特征向量,然后每个SKU与K类SKU中心算欧式距离,距离最短的为该类SKU的中心,把该SKU分配给该中心,当算完后,做每一类中心的均值,重新计算所有的SKU的中心,直到中心均值不变为止。该方法可以让标注人员尽可能少标注每个SKU,用聚类的方式把一类相似的SKU都标注好,然后用后处理的方式重新生成标签。
标记好的SKU加入神经网络,神经网络的卷积层中的神经元会通过梯度下降法优化并记住SKU的边缘和外观模式,在经过一系列的数学优化的过程中,神经网络的loss会不断降低,直到loss到达一个相对平衡的状态,loss改变幅度不大时,神经网络在这个阶段训练收敛算是完毕了,在测试的过程中遇到新图时,神经网络在通过多层神经元计算输出预测结果,能找出这些SKU。深度学习模式是通过一个叫卷积神经网络来进行学习这些图像的,每一层网络层都是由几十个滤波器构成,每个滤波器都会跟一个随机初始化权重对图像的每个通道做一次卷积运算,然后做一次concat作为下层的输入。目标检测在输出的时候会输出多个anchors,每个anchors都包含一个位置的一对XY坐标信息,代表一个框的位置,还包含该位置上的类别信息。目前用的Cascade RCNN 主要创新点用的是ReNeXT Net4x32, FPN和DCN等技术。32通道的ResNeXt技术,每个通道用的都是bottle net的技术结构,在imageNet 1k上显示这样的结果,同样的参数量,同样的计算条件,更少的层数下,泛化性能力更强。可变形卷积在普通卷积的基础上多了一个offset域,这样的设计是为了在普通卷积做卷积运算时,对一些不规则图形无法完全覆盖的改进,用了可变形卷积的情况下,卷积可以突破矩形运算的限制,用双线性插值法就来弥补不规则图形的边缘问题,从而达到不规则图形也能很好的包围在卷积运算框中。
其中,SKU的布景摆拍,借助一种图像采集标注系统进行获取,所述系统包括控制器、拍摄装置、照明装置和若干旋转底座;拍摄装置,用于执行控制器的拍摄指令,采集目标SKU的图像,并将图像传输至控制器;照明装置用于执行控制器的照明指令,调整光照的色温、强度和角度。旋转底座,用于执行控制器的旋转指令,以对置于旋转底座上的目标SKU的不同角度进行拍摄;控制器,用于根据图像对应的拍摄装置进行归类命名并保存。通过布景摆拍获取的目标SKU的摆拍照片,将需要建模的目标SKU放在多层置物架的旋转底座上,并调整拍摄装置使其对准需要建模的目标SKU,根据用户定义的设置对拍摄装置的拍摄参数进行调整,其中拍摄参数包括拍摄频率、帧大小等。照明装置包括若干照明灯,设置于目标SKU的不同方位,控制器能够控制照明灯的开关,同时调整光照的色温、强度和角度。
标注之前图像样本预处理方案主要有数据清洗和压缩两部分,由于图像样本由不同的渠道和终端收集回来,部分图像样本由于拍摄环境原因造成数据拍摄质量欠佳,另外终端不一样,所以需要通过不同的预处理筛选出合格的照片。例如模糊、过曝、欠曝和角度过于倾斜的图像,需要进行优化,使得图像更加还原和清晰,难以识别的图像最终被删除。标注包括手工标注和自动标注,第一阶段先用手工标注足够有效图片,该数量可以自由调整,推荐500~700张作为模型训练数据起步标准。在初步模型训练完成后,通过不断的迭代和人工介入,可以提升数据的标注质量。需要注意地,实景照片和摆拍照片标注方式之间存在区别,且训练自动标注的模型时可以采用多种方式进行优化。
标记好的SKU加入神经网络,神经网络的卷积层中的神经元会通过梯度下降法优化并记住SKU的边缘和外观模式,在经过一系列的数学优化的过程中,神经网络的loss会不断降低,直到loss到达一个相对平衡的状态,loss改变幅度不大时,神经网络在这个阶段训练收敛算是完毕了,在测试的过程中遇到新图时,神经网络在通过多层神经元计算输出预测结果,能找出这些SKU。
1)深度学习模式是通过一个叫卷积神经网络来进行学习这些图像的,每一层网络层都是由几十个滤波器构成,每个滤波器都会跟一个随机初始化权重对图像的每个通道做一次卷积运算,然后做一次concat作为下层的输入。
2)目标检测在输出的时候会输出多个anchors,每个anchors都包含一个位置的一对XY坐标信息,代表一个框的位置,还包含该位置上的类别信息。
3)目前用的Cascade RCNN 主要创新点用的是ReNeXT Net 4x32, FPN和DCN等技术。
可变形卷积在普通卷积的基础上多了一个offset域,这样的设计是为了在普通卷积做卷积运算时,对一些不规则图形无法完全覆盖的改进,用了可变形卷积的情况下,卷积可以突破矩形运算的限制,用双线性插值法就来弥补不规则图形的边缘问题,从而达到不规则图形也能很好的包围在卷积运算框中。
分类器的目的是接受检测器检测出来的框且锁定位置,把该位置的图像信息直接输入网络进而分类,最后输出该位置的标签信息。
由于存在A类照片和C类照片,这里是需要标注好的类别,比如红牛有50款产品,C类照片则需要50款实物在实验室中的摆拍,A类照片则需要在图片中标注50款产品,但是处理的方式是一样的,将整图的SKU剪切出来,按类别放在不同的文件夹中,用一个dataloader读所有的文件夹的根目录,在dataloader中会按不同的文件夹的图片按上不同的标签,根据设置的batchsize进行批量的训练。一般训练的批大小为256,需要4个1080或者2080显卡进行支持。
与检测器的训练方法不一样,分类器对未学过的类别有较大几率误识别,这个是由于分类器是根据概率进行分类。解决这个的方法是在分类器中加入一个others的类别,该类别可以加入不同的负样本,降低误识别率。在本实施例中,分类器的架构用的是denseNet 101 BC架构。
本方案基于现代的卷积网络加上传统的图像技术处理得到,实时效果好,延迟小,且精度高。重要的是该方案能部署到云服务上,用SASS方式使得大量的商家业务员随时随地都能调用。目前,整体方案流程控制在2~3秒内完成。整体业务流程包括四个部分:a)移动端用户对货架拍照完后,上传图片请求后端服务。b)业务端会透传请求,直接发送到持久层。c)持久层对该请求进行分析,包括分配id,用nginx做负载均衡,放入消息队列,进入AI平台处理。d)AI平台会部署大量服务进程,每个服务器进程包含一系列的流水线服务,包括图像质量检测,场景检测,SKU检测,分层服务等。分析结果包含层数,每个SKU的位置,类别和层级信息,所有的SKU品类的数量,瓶子的数量,每层的起端和末端信息。
以目前该系统为例,采集各种厂商的消费品图片,有计划的对每种消费品进行重新命名标记,统一命名规则(统一相同的待定框名称),这样的做法为了训练一个通用物体检测模型,进而可以在大多数情况下识别货架或者冰箱里面的商品的位置。
统一标注命名规则后则可以生成训练的标注格式,目前通用检测器训练的框的命名为daiding_101, 用卷积神经网络目标检测器训练。全品类的模型是通过各个厂商收集回来的图片数据,标注所有饮料瓶子数据汇集而来,这样泛化出来的模型即使在新图里面没有经过学习的瓶子也能准确定位,返回位置信息,然后返回信息让前端定位。
在训练的过程中由于C集和A集收集的方式是不一样的,C集可以用实物在实验室中进行摆拍,而A集则是通过客户提供的图片进行标注,本专利主要的目的是用A集与C集的混合方式极大的提供标注的效率,而不需要完全通过A集来训练模型。该方式是通过观察客户现场的复杂度来决定搭配不同的AC比例,进而降低标注的难度。大幅增加A集可以大幅提升对客户场景的适应度,进而在识别场景中准确率会大幅提高,响应的标注难度也会提高,如果在训练检测器和分类器适当的加入C集和部分离线增广数据,则可以提升检测器和分类器的能力,甚至有时比单纯的A集更有效果。
分类器的训练则是用标注好剪切的图片进行训练,比如50类的红牛生成的分类模型则是50+1类(others类),下次需要添加多一类的时候则只需要修改分类器,快速的迭代就好,删除类别也是同理。检测器则不需要怎么大的更改。推理的过程中,分类器接受的是检测器框,这些框是整图的ROI,分类器则负责把这些ROI分出详细类别。
请参阅图2,图2是本发明某一实施例提供的一种识别SKU的训练装置的结构示意图。在本实施例中与上述实施例相同的部分,在此不再赘述。本实施例提供的识别SKU的训练装置,包括:
样本获取模块01,用于获取预设数量的包含有SKU标注信息的图像样本,为SKU标注信息构建统一的标注格式;其中,标注信息包括框选的SKU选区及SKU信息。
检测器训练模块02,用于将标注格式统一后的图像样本按照预设比例随机分配为检测器的训练集和测试集,使得检测器能够对图像样本中的SKU进行自动框选得到检测结果。其中,所述检测结果为所述图像样本被框选的区域。
分类器训练模块03,用于通过对检测结果进行特征提取来训练分类器,使得分类器能够根据检测结果自动输出最大概率类别的SKU信息。
在深度学习网络中,随着网络深度的加深,梯度消失问题会愈加明显,那就是在保证网络中层与层之间最大程度的信息传输的前提下,直接将所有层连接起来,先放一个dense block的结构图。在传统的卷积神经网络中,如果有L层,那么就会有L个连接,但是在DenseNet中,会有L(L+1)/2个连接。简单讲,就是每一层的输入来自前面所有层的输出。DenseNet的一个优点是网络更窄,参数更少,很大一部分原因得益于这种dense block的设计,后面有提到在dense block中每个卷积层的输出feature map的数量都很小(小于100),而不是像其他网络一样动不动就几百上千的宽度。同时这种连接方式使得特征和梯度的传递更加有效,网络也就更加容易训练。梯度消失问题在网络深度越深的时候越容易出现,原因就是输入信息和梯度信息在很多层之间传递导致的,而现在这种dense connection相当于每一层都直接连接input和loss,因此就可以减轻梯度消失现象,这样更深网络不是问题。dense connection还有正则化的效果,因此对于过拟合有一定的抑制作用,参数减少了。
请参阅图3,本发明实施例提供一种计算机终端设备,包括一个或多个处理器和存储器。存储器与所述处理器耦接,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述任意一个实施例中的识别SKU的训练方法。
处理器用于控制该计算机终端设备的整体操作,以完成上述的识别SKU的训练方法的全部或部分步骤。存储器用于存储各种类型的数据以支持在该计算机终端设备的操作,这些数据例如可以包括用于在该计算机终端设备上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-OnlyMemory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
在一示例性实施例中,计算机终端设备可以被一个或多个应用专用集成电路(Application Specific 1ntegrated Circuit,简称AS1C) 、数字信号处理器(DigitalSignal Processor,简称DSP) 、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD) 、现场可编程门阵列(Field Programmable Gate Array ,简称FPGA) 、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的XX方法,并达到如上述方法一致的技术效果。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述任意一个实施例中的识别SKU的训练方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器,上述程序指令可由计算机终端设备的处理器执行以完成上述的识别SKU的训练方法,并达到如上述方法一致的技术效果。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。