具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
在目前的智能货柜中,每一层的顶部只设置有一个摄像头,通过摄像头拍摄进行商品识别。当客户需求的商品量或者商品的种类增加时,需要改造货柜,从而增加货柜体积,以容纳更多的商品。而当货柜体积增大时,单个摄像头无法将每层中的商品全部拍摄到(例如每层中位于左右两端的商品无法拍摄到),从而造成漏拍,从而容易造成商品识别的漏检。
基于此,本发明实施例提供一种商品识别方法及智能货柜系统,能够降低商品识别漏检的概率。
需要说明的是,本发明实施例中的商品识别方法应用于智能货柜。如图1所示,该智能货柜100可以包括若干货架层101,每一货架层101设有第一图像获取装置102和第二图像获取装置103。第一图像获取装置102、第二图像获取装置103可以分别设置在货架层的顶部左部分和右部分,并且使得第一图像获取装置102、第二图像获取装置103至少拍摄到整个货架层。例如,如图2所示,第一图像获取装置102、第二图像获取装置103分别设置在货架层的顶部的第一个四等分点和第三个四等分点。
其中,第一图像获取装置102可以为普通相机或者鱼眼相机,第二图像获取装置103可以为普通相机或者鱼眼相机。例如,第一图像获取装置102和第二图像获取装置103均为普通相机;或者,第一图像获取装置102和第二图像获取装置103均为鱼眼相机;又或者,第一图像获取装置102为普通相机,第二图像获取装置103为鱼眼相机。
需要说明的是,鱼眼相机是指带有鱼眼镜头的相机,鱼眼镜头是一种焦距为16mm或更短并且视角接近或等于180度的镜头。普通相机可以包括标准相机,还可以包括除鱼眼相机以外的其他广角相机。其中,标准相机是指带有标准镜头的相机,标准镜头是指焦距在40mm至55mm的镜头,其所表现的景物的透视与目视比较接近。与普通相机相比,鱼眼相机能够拍摄更大范围的商品。
具体地,下面结合附图,对本发明实施例作进一步阐述。
其中,应当理解的是,本发明提供的下述实施例之间,只要不冲突,均可相互结合以形成新的实施方式。
图3示出了本发明实施例提供的一种商品识别方法的流程示意图。如图3所示,该商品识别方法包括:
步骤210、通过第一图像获取装置获取第一图像,并通过第二图像获取装置获取第二图像。
其中,当将第一图像获取装置和第二图像获取装置装设在智能货柜的货架层上、并将商品放置在货架层上后,第一图像获取装置拍摄第一图像,第二图像获取装置拍摄第二图像,则能够从第一图像获取装置获取第一图像,从第二图像获取装置获取第二图像。
步骤220、对第一图像和第二图像进行拼接,以得到拼接图像。
由于第一图像获取装置和第二图像获取装置分别位于货架层的顶部两端,第一图像和第二图像分别为货架层左右两部分的商品画面。但是,第一图像获取装置和第二图像获取装置拍摄到的画面可能存在重叠的部分,则第一图像和第二图像中可能存在相同的商品画面。
在一些实施例中,当第一图像获取装置和第二图像获取装置拍摄的画面不存在重叠的部分,则第一图像和第二图像可以直接进行拼接。
在一些其他实施例中,当第一图像获取装置和第二图像获取装置拍摄的画面存在重叠的部分时,步骤220可以包括:
步骤221、分别提取第一图像的第一特征点以及第二图像的第二特征点;
步骤222、根据第一特征点和第二特征点,获取匹配特征点集;
步骤223、根据匹配特征点集,将第一图像和第二图像转换到同一坐标系下,以得到拼接图像。
其中,特征点是指图像中灰度值发生剧烈变化的点或者在图像边缘上曲率较大的点(即两个边缘的交点)。只要图像中有足够多的可检测的特征点,并且这些特征点各不相同、特征稳定、能够被精确定位,则可以基于这些特征点对图像进行局部分析,而不是观察整副图像。
在步骤221中,可以通过加速稳健特征算法分别提取第一图像的第一特征点以及第二图像的第二特征点。其中,加速稳健特征(Speeded Up RobustFeature,SURF)算法是SIFT算法的改进方法,是一种尺度不变的特征,SURF算法相比于SIFT算法具有更高的计算效率。
可选地,在步骤221之后,步骤220还可以包括:分别获取各个第一特征点和第二天特征点的特征点描述。
在步骤222中,匹配特征集是指第一特征点和第二特征点的最优配对的集合。可以根据特征点描述进行特征点的匹配。为了排除因为图像遮挡和背景混乱而产生的无匹配关系的特征点,可以采用比较最近邻距离和次邻距离的SIFT匹配方式(即Low’s算法)提取第一特征点和第二特征点的最优配对。具体可以为:取第一图像中的其中一个第一特征点,在第二图像中找出与第一特征点的欧氏距离最近的前两个第二特征点,在两个第二特征点中,如果最近的距离除以次近的距离得到的比率ratio小于预设阈值T,则将第一特征点和欧氏距离最近的第一个第二特征点作为最优配对。由于特征空间的高纬性,相似的距离可能有大量其他的错误匹配,从而其ratio比较高。当降低预设阈值T时,SIFT匹配点的数目会减少,但更加稳定。预设阈值T的取值原则可以为:T=0.4:对于准确度要求较高的匹配;T=0.6:对于匹配点数目要求比较多的匹配;T=0.5:一般情况下。
在步骤223中,当得到匹配特征点集后,将第一图像和第二图像转换到同一坐标系下,则可以得到拼接图像。具体可以为:获取第一图像到第二图像的投影映射矩阵;计算配准图(例如为第一图像)的四个顶点坐标;将第二图像配准到第一图像,即投影变换;根据第一图像和配准后的第二图像计算拼接图像的大小;将第一图像拷贝到第二图像的特定位置,则得到拼接图像。
在一些实施例中,由于拼接的图像往往不够自然,两张图像可能因为光照色泽等原因使得交界处的过渡不够自然。则步骤223具体还可以包括:在将第一图像和第二图像转换到同一坐标系下之后,对第一图像和第二图像的重叠区域进行加权融合处理;将处理后的第一图像和第二图像组成的图像作为拼接图像。加权融合也叫做像素加权平均法(Weighted Averging,WA),它具有简单易实现、运算速度快的优点,并能提高融合图像的信噪比。通过加权融合处理的方法改善交界处,即将重叠区域的像素值按照预设权值相加合成新的图像。
步骤230、根据拼接图像,训练原始识别模型,并将训练后的原始识别模型作为预设识别模型。
其中,原始识别模型是通过原始训练图像以及专业人工标注训练得到的,原始训练图像是指在每一货架层的顶部只设置单个图像获取装置采集得到的商品图像。当货架层设置两个图像获取装置时,直接应用于原始识别模型进行商品识别,得到效果并不好。因此,需要融合拼接图像对原始识别模型进行再训练,将训练后的原始识别模型作为预设识别模型,以提高识别模型的泛化能力,从而提高识别效果。
步骤240、通过预设识别模型进行商品识别。
由于预设识别模型能够应用于双图像获取装置的智能货柜,并且当智能货柜的体积增大时,预设识别模型能够取得较好的识别效果。
本发明实施例通过第一图像获取装置获取第一图像,并通过第二图像获取装置获取第二图像,对第一图像和第二图像进行拼接,以得到拼接图像,根据拼接图像,训练原始识别模型,并将训练后的原始识别模型作为预设识别模型,通过预设识别模型进行商品识别,当智能货柜的体积增大时,两个图像获取装置仍然能够将货架层上的所有商品拍到,从而能够降低商品识别漏检的概率。
图4示出了本发明另一实施例提供的一种商品识别方法的流程示意图。
如图4所示,该方法包括:
步骤310、通过第一图像获取装置获取第一图像,并通过第二图像获取装置获取第二图像。
步骤320、对第一图像和/或第二图像进行畸变校正处理。
步骤330、对第一图像和第二图像进行拼接,以得到拼接图像。
步骤340、根据拼接图像,训练原始识别模型,并将训练后的原始识别模型作为预设识别模型。
步骤350、通过预设识别模型进行商品识别。
其中,步骤310、步骤330、步骤350的实施方式分别与上述实施例中的步骤210、步骤220、步骤240的实施方式相同,此处不再赘述。
在步骤320中,由于第一图像获取装置或第二图像获取装置可以为普通相机或者鱼眼相机,其获取到的第一图像或第二图像可能为鱼眼图像,因此需要进行畸变校正处理。例如,当第一图像为鱼眼图像、第二图像为正常图像时,则对第一图像进行畸变校正处理;或者,当第一图像为正常图像、第二图像为鱼眼图像时,则对第二图像进行畸变校正处理;又或者,当第一图像和第二图像均为鱼眼图像时,则对第一图像和第二图像均进行畸变校正处理。
具体地,对鱼眼图像进行畸变校正处理,包括:
步骤321、根据鱼眼图像与目标图像的映射关系,确定鱼眼图像中的每个像素点在目标图像上的坐标;
步骤322、根据确定的坐标以及鱼眼图像,对目标图像进行双线性插值,得到目标图像中的每个像素点的像素值,以将插值后得到的目标图像作为畸变校正处理后的鱼眼图像。
其中,目标图像是指鱼眼图像经过畸变校正处理后的图像。鱼眼图像与目标图像的映射关系可以根据所希望得到的畸变校正效果进行预先设置。例如,鱼眼图像与目标图像的映射关系可以为经纬度映射关系,具体实施方式可以为:建立经纬度映射平面,该平面以球面的经度为横坐标,以球面的纬度为纵坐标,建立球面上的点p和经纬度映射平面上的点p’的对应关系,将球面上的所有像素点映射到经纬度映射平面上,从而生成一幅矩形的经纬度映射图像。在本实施例中,可以先计算鱼眼图像的半径r,将鱼眼图像的像素坐标(x’,y’)一一映射为半径为r的球面坐标(x,y,z),计算球面坐标点(x,y,z)在球面上的经纬度坐标(w,q),再由经纬度坐标在[0,π]上展开,得到目标图像的像素坐标(u’,v’),从而确定鱼眼图像中的每个像素点在目标图像上的坐标。
在步骤322中,在确定目标图像的部分坐标后,根据确定的坐标以及鱼眼图像,对目标图像进行双线性插值,得到目标图像中的每个像素点的像素值,以将插值后得到的目标图像作为畸变校正处理后的鱼眼图像。由于映射得到的目标图像中有一部分的像素点没有值,需要对目标图像进行填充,使得目标图像更加完整和清晰。
在步骤340中,可以包括:
步骤341、获取原始训练图像;
步骤342、对原始训练图像进行畸变校正处理,并将畸变校正处理后的原始训练图像记为第一数据集;
步骤343、根据原始训练图像和第一数据集,训练原始识别模型,将训练后的原始识别模型作为第一中间模型;
步骤344、将拼接图像输入第一中间模型,获取第一中间模型输出的第二数据集;
步骤345、根据原始训练图像、第一数据集、第二数据集,训练第一中间模型,将训练后的第一中间模型作为第二中间模型;
步骤346、将第二数据集输入第二中间模型,获取第二中间模型输出的第三数据集;
步骤347、在根据拼接图像对第三数据集进行筛选或者人工标注后,根据原始训练图像、第一数据集、第三数据集,训练第二中间模型,将训练后的第二中间模型作为预设识别模型。
其中,原始训练图像是若干图像的集合。当原始训练图像为鱼眼图像时,对原始训练图像进行畸变校正处理(即对原始训练图像进行如步骤320中的处理),以使得原始训练图像中的鱼眼图像被校正为平面图像,相应的标注信息也转化到平面坐标中,并将畸变校正处理后的原始训练图像(包括转化后的标注信息)记为第一数据集。
在步骤343中,具体可以为:将原始训练图像(包括原始标注信息)和第一数据集输入原始识别模型,微调原始识别模型中的参数,以训练原始识别模型,将训练后的原始识别模型作为第一中间模型。因此,得到的第一中间模型能够适用于单个鱼眼相机采集的未校正的商品图像以及单个鱼眼相机采集的已校正的商品图像。
在步骤344中,将拼接图像输入第一中间模型,使用第一中间模型对拼接图像进行自动标注,并将第一中间模型输出的数据记为第二数据集。由于拼接图像与单个图像可能存在差异,使用第一中间模型对拼接图像自动标注得到的结果可能不一定准确,因此,第二数据集中可能存在不准确的数据。
在步骤345中,具体可以为:将原始训练图像(包括原始标注信息)、第一数据集、第二数据集输入第一中间模型,微调第一中间模型中的参数,以训练第一中间模型,将训练后的第一中间模型作为第二中间模型。因此,得到的第二中间模型能够适用于单个鱼眼相机采集的未校正的商品图像、单个鱼眼相机采集的已校正的商品图像、以及两个相机(包括普通相机或者鱼眼相机)采集的已校正且拼接的商品图像。
在步骤346中,将第二数据集输入第二中间模型,使用第二中间模型对第二数据集中的图像进行自动标注,并将第二中间模型输出的数据记为第三数据集。由于第二数据集中可能存在不准确的标注数据,使用第二中间模型对第二数据集中的图像自动标注能够减少第二数据集中不准确的标注,因此能够大大减少人工标注的工作量。
在步骤347中,根据拼接图像对第三数据集进行筛选或者人工标注,是指人工对第三数据集中的不准确的数据进行筛选去除或者人工重新标注,可以对拼接图像进行人工标注后,比较人工标注的结果和第三数据集中的标注结果,从而确定第三数据集中的不准确的数据。在对第三数据集处理后,将原始训练图像(包括原始标注信息)、第一数据集、第三数据集输入第二中间模型,调整第二中间模型中的参数,以训练第二中间模型,将训练后的第二中间模型作为预设识别模型。因此,得到的预设识别模型能够适用于单个鱼眼相机采集的未校正的商品图像、单个鱼眼相机采集的已校正的商品图像、两个相机(包括普通相机或者鱼眼相机)采集的已校正且拼接的商品图像,并且识别结果较准确。
在一些其他实施例中,步骤340还可以包括:获取原始训练图像;对原始训练图像进行畸变校正处理,并将畸变校正处理后的原始训练图像记为第一数据集;根据原始训练图像和第一数据集,训练原始识别模型,将训练后的原始识别模型作为第一中间模型;将未校正直接拼接的拼接图像输入第一中间模型,获取第一中间模型输出的第二数据集;根据原始训练图像、第一数据集、第二数据集,训练第一中间模型,将训练后的第一中间模型作为第二中间模型;将第二数据集输入第二中间模型,获取第二中间模型输出的第三数据集;在根据拼接图像对第三数据集进行筛选或者人工标注后,将已校正并拼接的拼接图像输入第二中间模型,获取第二中间模型输出的第四数据集;根据原始训练图像、第一数据集、第三数据集、第四数据集,训练第二中间模型,将训练后的第二中间模型作为第三中间模型;将第四数据集输入第三中间模型,获取第三中间模型输出的第五数据集;在根据已校正并拼接的拼接图像对第五数据集进行筛选或者人工标注后,根据原始训练图像、第一数据集、第三数据集、第五数据集,训练第三中间模型,将训练后的第三中间模型作为预设识别模型。通过区分未校正直接拼接的拼接图像和已校正并拼接的拼接图像,分别进行训练,使得训练完成的预设识别模型的识别效果更好。
本发明实施例通过通过第一图像获取装置获取第一图像,并通过第二图像获取装置获取第二图像,对第一图像和/或第二图像进行畸变校正处理,对第一图像和第二图像进行拼接,以得到拼接图像,根据拼接图像,训练原始识别模型,并将训练后的原始识别模型作为预设识别模型,通过预设识别模型进行商品识别,当智能货柜的体积增大时,两个图像获取装置仍然能够将货架层上的所有商品拍到,从而能够降低商品识别漏检的概率,并且,通过不断获取后台数据,增大数据集,能够增加图片的多样性,使得训练得到的预设识别模型的泛化能力强,能够针对不同种类的相机、不同尺寸的货柜进行商品识别,且识别效果较好,避免了每次更换相机或者货柜尺寸时都需要重新训练模型,节省了时间和人力。
图5示出了本发明又一实施例提供的一种商品识别方法的流程示意图。与上述实施例的不同之处在于,如图5所示,通过预设识别模型进行商品识别,具体可以包括:
步骤241、在商品购买之前,通过预设识别模型识别智能货柜中的原有商品;
步骤242、当确认商品挑选完成后,通过预设识别模型识别智能货柜中的剩余商品;
步骤243、比较原有商品和剩余商品,获取结算商品。
其中,在商品购买之前,可以为当前顾客将智能货柜的门打开之前,还可以为上一顾客结算完成之后。通过预设识别模型识别智能货柜中的原有商品,具体可以为:通过第一图像获取装置和第二图像获取装置获取商品图像,并对商品图像进行校正、拼接处理后,使用预设商品识别模型识别商品图像中的商品类别和商品数量,从而确定智能货柜中的原有商品。
其中,确认商品挑选完成可以为接收到智能货柜的关门信息或者预设的定时信息。通过预设识别模型识别智能货柜中的剩余商品,具体可以为:在确认商品挑选完成后,通过第一图像获取装置和第二图像获取装置获取商品图像,并对商品图像进行校正、拼接处理后,使用预设商品识别模型识别商品图像中的商品类别和商品数量,从而确定智能货柜中的剩余商品。
在步骤243中,比较原有商品和剩余商品,确定原有商品中缺少的商品,则为结算商品。在获取到结算商品后,可以根据结算商品的类别及其对应的单价,计算得到顾客的应付金额,从而对顾客进行结算。
本发明实施例通过通过第一图像获取装置获取第一图像,并通过第二图像获取装置获取第二图像,对第一图像和第二图像进行拼接,以得到拼接图像,根据拼接图像,训练原始识别模型,并将训练后的原始识别模型作为预设识别模型,通过预设识别模型进行商品识别,当智能货柜的体积增大时,两个图像获取装置仍然能够将货架层上的所有商品拍到,从而能够降低商品识别漏检的概率。
图6示出了本发明实施例提供的一种智能货柜系统的结构示意图。如图6所示,该系统400包括:智能货柜100和云端服务器500。智能货柜100和云端服务器500可以为无线连接,智能货柜100和云端服务器500能够进行通信。
其中,智能货柜100可以如图1所示,本发明具体实施例并不对智能货柜的具体实现做限定。智能货柜100包括若干货架层101,每一货架层101设有第一图像获取装置102和第二图像获取装置103,第一图像获取装置102用于获取第一图像,第二图像获取装置103用于获取第二图像。
其中,云端服务器500包括处理器和存储器,所述存储器用于存放至少一可执行指令,当云端服务器运行时,处理器执行可执行指令,使处理器执行根据上述任意方法实施例中的商品识别方法的步骤。
可选地,如图7所示,该云端服务器500可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。
其中:处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。通信接口504,用于与其它设备比如客户端或其它服务器等的网元通信。处理器502,用于执行程序510,具体可以执行上述任意方法实施例中的商品识别方法。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
处理器502可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。云端服务器包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
需要说明的是,本发明实施例提供的智能货柜系统是能够执行上述商品识别方法的系统,则上述基于商品识别方法的所有实施例均适用于该系统,且均能达到相同或相似的有益效果。
本发明实施例通过第一图像获取装置获取第一图像,并通过第二图像获取装置获取第二图像,对第一图像和第二图像进行拼接,以得到拼接图像,根据拼接图像,训练原始识别模型,并将训练后的原始识别模型作为预设识别模型,通过预设识别模型进行商品识别,当智能货柜的体积增大时,两个图像获取装置仍然能够将货架层上的所有商品拍到,从而能够降低商品识别漏检的概率。
本发明实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行上述任意方法实施例中的商品识别方法。
本发明实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任意方法实施例中的商品识别方法。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。