1.一种动态商品识别方法,其特征在于:包括以下步骤:S1.采集用户的购买行为视频,同时实时采集货柜内指定区域的实际称重数据;
S2.将购买行为视频分解为多帧购买图像,检测购买图像中用户的手图像和商品图像,得到手检测框、商品检测框和与商品检测框对应的商品标签;
S3.按时间序列对手检测框和商品检测框进行跟踪,为同一目标不同时刻的检测框赋予相同ID;
S4.判断手和商品的进出状态,得到手图像和商品图像的进出时序表;
S5.根据货柜内指定区域在每个时刻的实际称重数据,矫正手图像和商品图像的进出时序表,生成购买清单。
2.根据权利要求1所述的一种动态商品识别方法,其特征在于:所述步骤S2的具体步骤如下:S201.将购买行为视频分解为多帧购买图像;
S202.对深度学习算法检测网络进行训练,使用训练好的深度学习算法检测网络检测购买图像中用户的手图像和商品图像;
S203.得到用户的手图像和商品图像在购买图像中的指定图像框中的手检测框、商品检测框和商品标签。
3.根据权利要求1所述的一种动态商品识别方法,其特征在于:所述步骤S3中,使用检测框跟踪算法按时间序列对手检测框和商品检测框进行跟踪;所述步骤S3的具体步骤如下:S301.删除与商品检测框有交集的手检测框:
定义手检测框为:
bndbox_hand=[h_xmin,h_ymin,h_xmax,h_ymax],定义商品检测框为:
bndbox_goods=[g_xmin,g_ymin,g_xmax,g_ymax],在购买图像中,遍历同一购买图像中所有的商品检测框,判断商品检测框与手检测框是否有交集,如果商品检测框与手检测框有交集,则删除手检测框;
S302.定义检测结果;设每个时刻ti的检测结果为:dets[ti],ti=[t0,t1,...,tn];
其中每个时刻的所有手检测框为:
dets[ti]['hand'],ti=[t0,t1,...,tn],每个时刻的所有商品检测框为:
dets[ti]['goods'],ti=[t0,t1,...,tn];
S303.定义卡尔曼滤波器;
S304.设定已经存在的卡尔曼滤波器的集合,为每一个卡尔曼滤波器设定唯一的ID,初始状态下,卡尔曼滤波器的集合为空集;
S305.对于每个时刻ti,使用卡尔曼滤波器跟踪下一时刻的手检测框和商品检测框的位置,得到手预测框和商品预测框;
其中,每个时刻的所有手预测框为:
preds[ti]['hand'],ti=[t0,t1,...,tn],每个时刻的所有商品预测框为:
preds[ti]['goods'],ti=[t0,t1,...,tn];
S306.分别在手预测框寻找与当前的手检测框对应的手预测框,在商品预测框中寻找与当前的商品检测框对应的商品预测框;对于每一个可以找到对应的预测框的检测框,则把该预测框对应的卡尔曼滤波器的ID赋予给该检测框;对于每一个无法找到对应的预测框的检测框,则使用该检测框新建一个卡尔曼滤波器,然后加入到卡尔曼滤波器的集合中,把新的卡尔曼滤波器的ID赋予该检测框;对于已经连续多次无法找到匹配的检测框的卡尔曼滤波器,则从集合中删除该卡尔曼滤波器,重复以上操作,直到遍历所有的时刻,最终为所有同一目标不同时刻的检测框赋予可以在时序上索引的相同ID。
4.根据权利要求3所述的一种动态商品识别方法,其特征在于:在步骤S301中,判断商品检测框与手检测框是否有交集的规则如下:inter=max(i_xmax-i_xmin+1,0)×max(i_ymax-i_ymin+1,0),其中:
i_xmin=max(h_xmin,g_xmin),i_ymin=max(h_ymin,g_ymin),i_xmax=min(h_xmax,g_xmax),i_ymax=min(h_ymax,g_ymax);
当inter≤0时,商品检测框与手检测框无交集;当inter>0时,商品检测框与手检测框有交集。
5.根据权利要求3或4所述的一种动态商品识别方法,其特征在于:在步骤S303中,卡尔曼滤波器的定义参数包括7个状态值和4个观测值,其中,7个状态值分别包括检测框中心坐标(x,y)、面积s、宽y和长x的比值r、长x的变化速率、宽y的变化速率、面积s的变化速率;4个观测值分别包括检测框中心坐标(x,y)、面积s、宽y和长x的比值r;
卡尔曼滤波器所需的矩阵如下:
状态转移矩阵:
观测矩阵:
观测噪声方差矩阵:
状态协方差矩阵:
状态转移协方差矩阵:
6.根据权利要求3所述的一种动态商品识别方法,其特征在于:所述步骤S306采用匈牙利算法实现。
7.根据权利要求1所述的一种动态商品识别方法,其特征在于:所述步骤S4的具体步骤如下:S401.在货柜门处设定两条虚拟感应线,两条虚拟感应线将购买图像划分为外界区域、不确定区域和内部区域;
S402.判断同一ID的检测框的中心点与外界区域、不确定区域和内部区域的关系,如果该检测框的中心点位于内部区域,则判定该检测框位于内部区域,并记该检测框为标记I;
如果该检测框的中心点位于不确定区域,则判定该检测框位于不确定区域,并记该检测框为标记N;如果该检测框的中心点位于外部区域,则判定该检测框位于外部区域,并记该检测框为标记O;由此对不同ID的手检测框和/或商品检测框编码出由INO组成的检测序列;
S403.对检测序列进行修改,直到检测序列中所有手检测框和商品检测框的标记均是标记I或标记O;
S404.每一个ID的检测框的检测序列中,设定标记I转换为标记O的时刻为手或商品离开货柜内部的时刻,并在手或商品离开货柜内部的时刻生成一则取出商品信息或回收手信息;设定标记O转换为标记I的时刻为手或商品进入货柜内部的时刻,并在手或商品进入货柜内部的时刻生成一则放入商品信息或伸出手信息,最终得到手图像和商品图像的进出时序表。
8.根据权利要求7所述的一种动态商品识别方法,其特征在于:在步骤S403中,对检测序列的修改规则如下:[N***N]表示一个N或者连续多个N,若序列全为N,则删除该检测序列;
对于标记N位于开头且形如[N***N]I的检测序列,将所有的标记N改为标记O;
对于标记N位于开头且形如[N***N]O的检测序列,将所有的标记N改为标记O,第一个标记N改为标记I;
对于标记N位于中间且形如I[N***N]O的检测序列,将所有的标记N改为标记O;
对于标记N位于中间且形如O[N***N]I的检测序列,将所有的标记N改为标记O;
对于标记N位于中间且形如I[N***N]I的检测序列,将所有的标记N改为标记I;
对于标记N位于中间且形如O[N***N]O的检测序列,将所有的标记N改为标记O;
对于标记N位于末尾且形如I[N***N]的检测序列,将所有的标记N改为标记O;
对于标记N位于末尾且形如O[N***N]的检测序列,将所有的标记N改为标记O,最后一个标记N改为标记I。
9.根据权利要求8所述的一种动态商品识别方法,其特征在于:在步骤S5中,还根据货柜内指定区域在每个时刻的实际称重数据,判断是否存在不友好购物行为;
所述步骤S5的具体步骤如下:
S501.设定货柜内指定区域在每个时刻的实际称重数据为:weigth_measure=[dwm1,dwm2,...,dwmm];
S502.针对视觉识别错误问题和漏识别问题,穷举产生多个手图像和商品图像的进出时序表,记录每一个手图像和商品图像的进出时序表在不同变化情况下的修改次数;设定手图像和商品图像的进出时序表的数目为L,设定每一个手图像和商品图像的进出时序表在不同变化情况下的预测称重数据为:其中 表示第i个手图像和商品图像的进出时序表在时刻t的预测称重数据,casei表示手图像和商品图像在第i个进出时序表中的变化情况,casei的第k次变化值是S503.设定一个重量匹配阈值为:weight_thresh,并设定:若两个预测称重数据的差值小于重量匹配阈值,则重量变化是匹配的;
S504.计算预测称重数据在任一手图像和商品图像的进出时序表中最终时刻和最初时刻的重量变化值 和实际称重数据在同一手图像和商品图像的进出时序表中最终时刻和最初时刻的重量变化值dwmm-dwm1,计所有变化情况中的重量匹配值为:若重量匹配值 则判定用户存在不友好
购物行为,直接根据步骤S4得到的手图像和商品图像的进出时序表生成商品购物清单;
若重量匹配值 则对所有满足条件的变
化情况进行预测称重数据和实际称重数据的匹配,判定用户不存在不友好购物行为,选择匹配程度match_degree最高且修改次数最少的手图像和商品图像的进出时序表生成商品购物清单;如果商品图像的进出时序表中存在一商品检测框且该商品检测框对应的商品标签不存在于商品购物清单内,则判定用户存在不友好购物行为,针对场景对不友好购物行为进行特殊处理,结束计算。
10.根据权利要求9所述的一种动态商品识别方法,其特征在于:步骤S504中,匹配程度match_degree的计算过程如下:S504a.设定预测称重数据序列为:
设定实际称重数据序列为:[dwm1,dwm2,...,dwmm],将abs(dwm-dwp)
S504b.通过动态规划法求解预测称重数据序列和实际称重数据序列的最长匹配子序列,这个最长匹配子序列的长度即预测称重数据序列和实际称重数据序列的匹配程度match_degree。