java二维数组货柜,一种应用于智能货柜的基于纯重力识别商品的方法与流程

f616eb60439e9cb34c3c67aaa1e8578c.gif

本发明涉及无人零售领域,特别涉及一种应用于智能货柜的基于纯重力识别商品的方法。

背景技术:

当前在无人零售领域,智能售卖终端蓬勃发展,扫码开门式智能货柜由于其体验高效、体积小巧、成本低廉,逐渐占有一定市场份额。目前智能货柜在商品识别场景下分为纯图像识别、纯重力识别、RFID识别、图像+重力综合识别四种。

在纯重力识别方面,目前行业内使用重力传感器进行商品识别的检测原理是,通过拿取商品前后的重量差除以单个商品重量获得商品数量,因此一个传感器只能对应识别一类价格、重量都相同的商品,那么针对货柜内有多种商品,就要针对每一个种类设置一个传感器来进行识别该种类的商品,成本高;此外,对于一个货柜内有多种商品的情况,用户在选购的时候如果中途将商品放回,则必须要放回到同种类商品区的空位上,否则会造成无法识别,因此识别的稳定性差。

技术实现要素:

本发明所要解决的技术问题是:提出一种应用于智能货柜的基于纯重力识别商品的方法,解决传统技术中的纯重力商品识别方案存在的成本高和稳定性差的问题。

本发明解决上述技术问题所采用的技术方案是:

一种应用于智能货柜的基于纯重力识别商品的方法,包括:

根据商品交易前后的重量差,采用深度优先搜索算法从货柜中的所有商品类型中搜索可能的商品组合结果,然后对各个商品组合结果求取对应的置信度,从而获得可能的商品组合以及对应的置信度的输出结果。

作为进一步优化,所述深度优先搜索算法具体包括以下步骤:

步骤1、输入相关参数,包括:

货柜中的商品清单BL,为可遍历数组,每个商品包含商品ID、标重IG、误差范围IE;

商品交易前后的重量变化总量G;

设定的重力传感器误差e;

货柜中重量变化大于e的传感器个数m;

最低置信度c,可根据算法测试结果进行调整。

步骤2、创建变量,包括:

单个可能的商品组合R,为可遍历数组,子元素格式与BL子元素格式相同。

所有可能的商品组合的集合RES,RES=[R1,R2,……,Rn],为可遍历二维数组;

多个待遍历商品清单的堆栈stack,为可遍历二维数组;

当前遍历中剩余重量lastG。

步骤3、对商品清单、称误差以及搜索的目标商品的范围进行预处理;

步骤4、采用while循环执行以下遍历搜索:

步骤4.1、判断待遍历商品的堆栈stack中的子元素的个数是否为空,若是,则执行步骤4.9,若否,则执行步骤4.2;

步骤4.2、判断stack中最后一个子元素的数组长度是否小于等于0,若是,则删除该项,执行步骤4.3,若否,则抽取stack中最后一个数组的第一项商品加入到R数组的末尾,执行步骤4.4;

步骤4.3、判断当前已搜索到的可能商品组合R的数组个数是否大于0,若是,则从R中取出最后一项商品,将lastG加上该项商品的最小重量minIG,返回步骤4.1执行下一轮遍历;

步骤4.4、从lastG减去该商品的最小重量minIG,执行步骤4.5;

步骤4.5、从BL中选取所有最小重量minIG小于lastG的商品,按照从大到小排序形成下一层深度的可能商品清单数组DL,执行步骤4.6;

步骤4.6、判断DL的长度是否大于0,若是,则执行步骤4.7,若否,则执行步骤4.8;

步骤4.7、将DL添加到stack的末尾,返回步骤4.1执行下一轮遍历;

步骤4.8、将R复制一份添加到RES末尾,将lastG加上本次遍历商品的最小重量minIG,删除R中最后一个商品元素,然后返回步骤4.1执行下一轮遍历;

步骤4.9、去除RES中商品组合方式相同的重复结果,执行步骤4.10;

步骤4.10、将RES中每个结果代入置信度计算公式求得每个结果对应的置信度,执行步骤4.11;

步骤4.11、将RES以及其中每个结果对应的置信度数组作为结果输出,结束流程。

本方案中,通过深度优先搜索算法实现对各个可能的商品组合的快速搜索,并通过置信度计算获得可能商品组合的对应置信度,从而提高识别准确性。

作为进一步优化,步骤4.10中,所述置信度计算公式为:

其中,G为商品交易前后的重量变化总量,IG为商品的标重,n为可能的商品组合中商品的个数。

通过上述置信度公式求取各个可能的商品组合对应的置信度,置信度越高,则该商品组合为真实交易的商品组合的可能性越大。

作为进一步优化,步骤4.11中,在将RES以及其中每个结果对应的置信度数组作为结果输出之前还包括:去除RES中置信度低于最低置信度c的结果。

通过对低于最低置信度c的结果进行剔除,可以排除掉明显不可信的结果。

作为进一步优化,步骤3中,所述对商品清单、称误差以及搜索的目标商品的范围进行预处理,具体包括

处理商品清单:遍历商品清单BL,在每个商品数据中添加最小重量minIG,并将BL中的商品按minIG的值从大到小进行排序;

处理称误差:按本次交易发生重量变化与货柜中的哪些传感器相关,计算应该加上的称误差,获得本次交易前后的最大重量变化量maxG;

缩小目标商品清单并加入待遍历堆栈stack:将stack置空,从商品清单BL中选出所有最小重量minIG小于本次交易前后的最大重量变化量maxG的商品,按从大到小排序形成目标商品数组NL,如果NL子元素个数大于0,则添加到stack数组中;如果NL子元素个数等于0,则将空数组作为深度优先搜索算法结果输出,并退出深度优先搜索算法。

本方案中,通过相关预处理手段,可以对传感器称重误差和商品误差进行较好处理,从而提高商品识别精度,通过对目标商品的范围缩小处理,可以提前规避干扰因素,提高商品识别效率。

本发明的有益效果是:

采用深度优先搜索算法能够在当前整个智能货柜的库存商品中去搜索满足目标重量差值的商品组合,再通过置信度计算获得最可靠的结果。因此可以只使用一个重力传感器就能识别重量不同的多种商品,从而可以节约成本;此外,由于本发明通过交易前后的重量差与整个货柜中的可能的商品组合的重量之和进行匹配,对于用户选购商品过程中未将商品放回原位的情况也能准确识别,从而提高了识别的稳定性。

附图说明

图1为实施例中的深度优先搜索算法流程图。

具体实施方式

本发明旨在提出一种应用于智能货柜的基于纯重力识别商品的方法,解决传统技术中的纯重力商品识别方案存在的成本高和稳定性差的问题。

其核心思想是:根据商品交易前后的重量差,采用深度优先搜索算法从货柜中的所有商品类型中搜索可能的商品组合结果,然后对各个商品组合结果求取对应的置信度,从而获得可能的商品组合以及对应的置信度的输出结果。

实施例:

本实施例中,深度优先搜索算法的流程如图1所示,其包括:

步骤1、输入相关参数,包括:

货柜中的商品清单BL,其中每个商品包含商品ID、标重IG、误差范围IE;

商品交易前后的重量变化总量G;

设定的重力传感器误差e;

货柜中重量变化大于e的传感器个数m;

最低置信度c;

步骤2、创建变量,包括:

单个可能的商品组合R,为可遍历数组;

所有可能的商品组合的集合RES,RES=[R1,R2,……,Rn],为可遍历二维数组;

多个待遍历商品清单的堆栈stack,为可遍历二维数组;

当前遍历中剩余重量lastG;

步骤3、对商品清单、称误差以及搜索的目标商品的范围进行预处理:

处理商品清单:遍历商品清单BL,在每个商品数据中添加最小重量minIG,并将BL中的商品按minIG的值从大到小进行排序;

处理称误差:按本次交易发生重量变化与货柜中的哪些传感器相关,计算应该加上的称误差,获得本次交易前后的最大重量变化量maxG;

需要说明的是,理论上采用本发明的方案可以仅在货柜中布置一个传感器就能够完成重量不同的多种商品,而实际使用过程中,通常使用的货柜为4到5个层架,每个层架上有多种不同重量不同类型的商品,由于结构所限,需要每个层架都设置一个传感器,因此本申请的算法可以支持布置一个或多个传感器的货柜的商品识别;那么在处理称误差的时候,对于只布置一个传感器的情况,那么本次交易发生重量变化肯定与该传感器相关,那么maxG=传感器测量的重量变化G+重量传感器误差e;对于布置多个传感器的情况,本次交易如果从2个货架上拿取了商品,则maxG=传感器测量的重量变化之和G+2*重量传感器误差e,同理如果从3个货架上拿取了商品,则maxG=传感器测量的重量变化之和G+3*重量传感器误差e…以此类推。

缩小目标商品清单并加入待遍历堆栈stack:将stack置空,从商品清单BL中选出所有最小重量minIG小于本次交易前后的最大重量变化量maxG的商品,按从大到小排序形成目标商品数组NL,如果NL子元素个数大于0,则添加到stack数组中;如果NL子元素个数等于0,则将空数组作为深度优先搜索算法结果输出,并退出深度优先搜索算法。

通过相关预处理手段,可以对传感器称重误差和商品误差进行较好处理,从而提高商品识别精度,通过对目标商品的范围缩小处理,可以提前规避干扰因素,提高商品识别效率。

步骤4、采用while循环执行以下遍历搜索:使用while循环进行遍历搜索,而不使用forEach循环,可以优化算法内存消耗,避免内存溢出

步骤4.1、判断待遍历商品的堆栈stack中的子元素的个数是否为空,若是,则执行步骤4.9,若否,则执行步骤4.2;

步骤4.2、判断stack中最后一个子元素的数组长度是否小于等于0,若是,则删除该项,执行步骤4.3,若否,则抽取stack中最后一个数组的第一项商品加入到R数组的末尾,执行步骤4.4;

步骤4.3、判断当前已搜索到的可能商品组合R的数组个数是否大于0,若是,则从R中取出最后一项商品,将lastG加上该项商品的最小重量minIG,返回步骤4.1执行下一轮遍历;

步骤4.4、从lastG减去该商品的最小重量minIG,执行步骤4.5;

步骤4.5、从BL中选取所有最小重量minIG小于lastG的商品,按照从大到小排序形成下一层深度的可能商品清单数组DL,执行步骤4.6;

步骤4.6、判断DL的长度是否大于0,若是,则执行步骤4.7,若否,则执行步骤4.8;

步骤4.7、将DL添加到stack的末尾,返回步骤4.1执行下一轮遍历;

步骤4.8、将R复制一份添加到RES末尾,将lastG加上本次遍历商品的最小重量minIG,删除R中最后一个商品元素,然后返回步骤4.1执行下一轮遍历;

步骤4.9、去除RES中商品组合方式相同的重复结果,执行步骤4.10;

步骤4.10、将RES中每个结果代入置信度计算公式求得每个结果对应的置信度,执行步骤4.11;

所述置信度计算公式为:

其中,G为商品交易前后的重量变化总量,IG为商品的标重,n为可能的商品组合中商品的个数。

通过上述置信度公式求取各个可能的商品组合对应的置信度,置信度越高,则该商品组合为真实交易的商品组合的可能性越大。

步骤4.11、去除RES中置信度低于最低置信度c的结果,将RES以及其中每个结果对应的置信度数组作为结果输出,结束流程。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值