发明内容
本说明书实施例的一个目的是提供一种识别取放行为的新的技术方案。
根据本说明书实施例的第一方面,提供了一种取放行为的识别方法,包括:
基于所采集的多帧待识别图像,获得每帧所述待识别图像对应的特征点坐标;
基于多帧所述特征点坐标,得到所述目标物的动作类别的识别结果,并计算得到所述目标物与货架之间的距离;
根据所述动作类别和所述目标物与货架之间的距离,得到取放行为的识别结果。
可选地,其中,所述基于所采集的多帧待识别图像,获得每帧所述待识别图像中目标物对应的特征点坐标的步骤,包括:
分别将每帧所述待识别图像作为检测算法的输入,输出对应的目标物图像;
将所述目标物图像作为特征点提取算法的输入,输出所述特征点坐标。
可选地,其中,所述基于多帧所述特征点坐标,得到所述目标物的动作类别的识别结果的步骤,包括:
分别对多帧所述特征点坐标进行编码,并将编码后的特征点坐标作为动作识别算法的输入,计算得到对应的所述动作类别,以及每个类别的动作的起始时刻和结束时刻,作为所述识别结果。
可选地,其中,所述基于多帧所述特征点坐标,计算得到所述目标物与货架之间的距离的步骤,包括:
基于所述特征点坐标中的第一指定点坐标和第二指定点坐标,以及预先确定的货架立面标注和地面标注,计算得到所述目标物与货架之间的距离。
可选地,其中,所述根据所述动作类别和所述目标物与货架之间的距离,得到取放行为的识别结果的步骤之前,所述方法还包括:
基于所述目标物图像得到所述目标物是否持有商品的确定结果;
所述根据所述动作类别和所述目标物与货架之间的距离,得到取放行为的识别结果的步骤包括:
根据所述动作类别、所述目标物与货架之间的距离以及所述目标物是否持有商品的确定结果,得到所述取放行为的识别结果。
可选地,其中,所述基于所述目标物图像得到所述目标物是否持有商品的确定结果的步骤,包括:
采用所述二分类模型对所述目标物图像进行计算,得到所述目标物是否持有商品的确定结果。
可选地,其中,所述多帧待识别图像通过单目摄像机采集得到。
可选地,其中,所述目标物图像至少包括:人体图像,机器人图像,或者,无人机图像。
根据本说明书实施例的第二方面,还提供一种取放行为的识别装置,包括:
获取模块,用于基于所采集的多帧待识别图像,获得每帧所述待识别图像中目标物对应的特征点坐标;
计算模块,用于基于多帧所述特征点坐标,得到所述目标物的动作类别的识别结果,并计算得到所述目标物与货架之间的距离;
识别模块,用于根据所述动作类别和所述目标物与货架之间的距离,得到取放行为的识别结果。
根据本说明书实施例的第三方面,提供了一种电子设备,包括如本说明书实施例的第二方面所述的取放行为的识别装置,或者,所述电子设备包括:
存储器,用于存储可执行命令;
处理器,用于在所述可执行命令的控制下,执行如本说明书实施例的第一方面中任一项所述的取放行为的识别方法。
根据本说明书实施例的第四方面,还提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时,执行如本说明书实施例第一方面所述的取放行为的识别方法。
本说明书实施例的一个有益效果在于,本实施例的方法基于所采集的多帧待识别图像,获得每帧所述待识别图像中目标物对应的特征点坐标;基于多帧所述特征点坐标,得到所述目标物的动作类别的识别结果,并计算得到所述目标物与货架之间的距离;根据所述动作类别和所述目标物与货架之间的距离,得到取放行为的识别结果。根据本说明书实施例,可以降低识别卖场内取放行为的成本,并可以实现同时对多个目标物的取放行为进行识别的目的。
通过以下参照附图对本说明书实施例的示例性实施例的详细描述,本说明书实施例的其它特征及其优点将会变得清楚。
具体实施方式
现在将参照附图来详细描述本说明书实施例的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本说明书实施例的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本说明书实施例及其应用或使用的任何限制。
对于相关领域普通技术人物已知的技术、方法和设备可能不作详细讨论,但在适当情况下,该技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1是示出可以实现本发明的实施例的服务器1000的硬件配置的框图。
服务器1000例如可以是刀片服务器等。
在一个例子中,服务器1000可以是一台计算机。
在另一个例子中,服务器1000可以如图2所示,包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置 1600。尽管服务器也可以包括扬声器、麦克风等等,但是,这些部件与本发明无关,故在此省略。
其中,处理器1100例如可以是中央处理器CPU、微处理器MCU等。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、串行接口等。通信装置1400例如能够进行有线或无线通信。显示装置1500例如是液晶显示屏。输入装置1600例如可以包括触摸屏、键盘等。
本实施例中,服务器1000用于基于所采集的多帧待识别图像,获得每帧所述待识别图像中目标物对应的特征点坐标;基于多帧所述特征点坐标,得到所述目标物的动作类别的识别结果,并计算得到所述目标物与货架之间的距离;根据所述动作类别和所述目标物与货架之间的距离,得到取放行为的识别结果。
图1所示的服务器仅仅是说明性的并且决不意味着对本发明、其应用或使用的任何限制。应用于本发明的实施例中,服务器1000的的该存储器 1200用于存储指令,该指令用于控制该处理器1100进行操作以执行本发明实施例提供的任意一项取放行为的识别方法。
本领域技术人员应当理解,尽管在图1中对服务器1000的示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如,服务器1000的只涉及处理器1100和存储装置1200。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
<方法实施例>
本实施例提供了一种取放行为的识别方法,该方法例如可以由如图1 所示的服务器1000执行。
如图2所示,该方法包括以下步骤2000~2400:
步骤2000,基于所采集的多帧待识别图像,获得每帧该待识别图像中目标物对应的特征点坐标。
其中,该多帧待识别图像通过单目摄像机采集得到。在本实施例中,通过预先对货架立面的标注给出了空间信息,从而可以仅适用单目摄像机采集到的多帧待识别图像,实现目标物与货架的三维空间距离测量。
在本步骤中,该服务器1000具体可以利用检测算法和特征点提取算法,计算得到特征点坐标。具体的,该服务器1000可以分别将每帧该待识别图像作为检测算法的输入,输出对应的目标物图像;并将该目标物图像作为特征点提取算法的输入,输出该特征点坐标。
在实际应用中,该服务器1000识别的对象可以是人体,也可以是机器人,或者,也可以是无人机等。相应的,该目标物图像可以是人体图像,机器人图像,或者无人机图像。
在一个例子中,假设单目摄像机采集到的多帧待识别图像是用户图像,相应的,则该服务器1000可以利用人体检测算法和人体骨架点提取算法计算得到人体骨架点坐标。即,该服务器1000分别将每帧用户图像作为人体检测算法的输入,输出对应的人体图像,并将该人体图像输入人体骨架点提取算法,得到该人体图像对应的人体骨架点坐标。
其中,该人体骨架点提取算法例如可以是人体姿态识别算法 (OpenPose),人体姿态估计算法(AlphaPose)等等,在此不做具体限定。
步骤2200,基于多帧该特征点坐标,得到该目标物的动作类别的识别结果,并计算得到该目标物与货架之间的距离。
本步骤中,该服务器1000在基于多帧该特征点坐标,得到该目标物的动作类别的识别结果时,可以分别对多帧该特征点坐标进行编码,并将编码后的特征点坐标作为动作识别算法的输入,计算得到对应的该动作类别,以及每个类别的动作的起始时刻和结束时刻,作为该识别结果。
如图3所示,以目标物图像为人体图像为例,根据人体图像对应的人体骨架点坐标可以识别出伸手、摸货架、取回商品等动作。在识别时,如图4所示,该服务器1000先将多帧该人体骨架点坐标编码为图的形式,然后作为卷积神经网络(CNN),例如动作识别算法的输入,计算得到对应的识别结果,如伸手、缩回、摸货架等。
其中,对人体骨架点坐标进行编码,具体可以是对每个人体骨架点坐标进行归一化处理,对每个骨架点的x和y坐标减去脖子点的坐标,再除以人的身高,从而排除人高度和位置的因素,然后按照坐标轴排序:x轴是坐标点的类型,比如手、脚、肩膀等,y轴是时间,z轴是横坐标、纵坐标和置信度。
在动作识别时,该服务器1000以固定间隔和固定长度沿时间轴取人体骨架点并识别后,将相同的动作识别结果进行合并,得出每个动作起始时刻和结束时刻。其中,固定长度指的是取帧的数量,比如,取11帧的关键点,设置固定间隔是考虑到相邻两帧的运动幅度太小而设置的,例如,每隔一帧取一次骨架点。
该服务器1000在基于多帧该特征点坐标,计算得到该目标物与货架之间的距离时,具体可以基于该特征点坐标中的第一指定点坐标和第二指定点坐标,以及预先确定的货架立面标注和地面标注,计算得到该目标物语货架之间的距离。
例如,在计算用户的手语货架之间的距离时,该服务器1000可以基于人体骨架点坐标中的手坐标(即上述第一指定点坐标)和脚底点坐标(即上述第二指定点坐标),以及预先确定的货架立面标注和地面标注,计算得到该手与货架之间的距离。
如图5所示,abcd构成的矩形为地面标注,bcef为货架立面标注。货架立面需要按照货架结构的四条边标注。ab和cd两条边在货架侧面底边延长线上。cb为货架底边。在实际计算时,假设手脚深度差可以忽略不计,即平面AFH与货架平面bcef垂直。
假设cd,ab近似平行,由边cd,ab推算直线AF方程,并计算A点坐标。具体的,已知abcd点坐标,直线cd,ab的斜率为k,F坐标为(xf,yf),则有 AF直线方程为y=kx+(yF-xF×k)。
计算直线bc与AF的交点A:直线bc和AF已经求得,写为一般式
abcx+bbcy+cbc=0
aAFx+bAFy+cAF=0
然后根据Ac,Ab比例,推算B的坐标(x
B,y
B),d(x)为两点间距离公式,计算比值
d(fB)=d(ef)×r,可得,x
B=min(x
f,x
e)+|x
e-x
f|×r, y
B=min(y
f,y
e)+|y
e-y
f|×r。
基于A点坐标和B点坐标计算直线方程AB。
由于直线HT和直线AF方向相同,由H点坐标和直线AF的方向计算HT的直线方程。具体的,A点和F点坐标已知,可求直线方程,设AF 的直线方程斜率为k,直线HT斜率也为k,H点坐标已知(xH,yH),HT直线方程为y=kx+(yH-xH×k)。
然后计算AB和HT交点T。由上述可知,直线AB和HT已经求得,写为一般式:a
ABx+b
ABy+c
AB=0,a
HTx+b
HTy+c
HT=0。则两直线交点计算公式为:
基于H点坐标和T点坐标,可计算得到线段HT长度,即手到货架距离。当手到货架距离HT足够小,则认为手触碰到货架。
需要说明的是,在本步骤中,服务器1000计算的目标物与货架之间的距离,可以是空间实际距离,也可以是图像上的像素距离。其中,实际距离需要标定像素与空间的对应关系,从而反映出目标物与货架之间的真实距离,例如,H点处像素距离与空间距离之间的近似比值为r(该r是根据实际测量得到的近似数值),则空间距离(厘米/米)=d(HT)*r。
在实际应用中,计算空间实际距离得到的结果是更为准确的。如果空间没有标定,则只能使用像素距离得到近似值,但由于像素的个数无法与空间中的厘米对应,因此该结果会不够准确。
步骤2400,根据该动作类别和该目标物与货架之间的距离,得到取放行为的识别结果。
具体的,该动作类别包括伸出、缩回、碰摸货架等,在每个动作的起始时刻和终止时刻之间,目标物与货架之间的距离逐渐缩小,则该服务器 1000可以识别到该行为为伸出,在每个动作的起始时刻和终止时刻之间,目标物与货架之间的距离逐渐增大,则该服务器1000可以识别到该行为为缩回等。
在一个例子中,该服务器1000还可以基于该目标物图像得到目标物是否持有商品的确定结果。具体的,该服务器1000可以采用该二分类模型对该目标物图像进行计算,得到该目标物是否持有商品的确定结果。
相应的,该服务器1000会根据该动作类别、该目标物与货架之间的距离以及该目标物是否持有商品的确定结果,得到该取放行为的识别结果。
在本例中,识别结果中包括动作类别,以及每个类别的动作的起始时刻和结束时刻。该服务器1000可以根据该识别结果,判断出目标物是取货还是放货。具体的,起始时刻和终止时刻之间是动作的过程,也就是伸入货架或者伸出货架,结合这个过程的目标物是否持有商品的确定结果,得到取放行为的识别结果。例如,伸入过程中目标物没有持有商品,伸出过程中目标物持有商品,则这是取货过程。伸入过程中目标物持有商品,伸出过程中目标物没有持有商品,则这是放货过程。
以上已结合附图和具体的例子对本实施例的方法进行了说明。该服务器基于所采集的多帧待识别图像,获得每帧该待识别图像中目标物对应的特征点坐标;基于多帧该特征点坐标,得到目标物的动作类别的识别结果,并计算得到目标物与货架之间的距离;根据该动作类别和目标物与货架之间的距离,得到取放行为的识别结果。本实施例借助对货架的标注,使用单目摄像机实现目标物与货架之间距离的测量,操作简单,实现了同时对多个目标物的取放行为的识别,且对现有卖场设备的改造规模小,有效降低了实现成本和维护成本。
<装置实施例>
本实施例提供一种取放行为的识别装置,该装置例如是图6所示的取放行为的识别装置6000,该取放行为的识别装置6000可以包括获取模块 6100,计算模块6200以及识别模块6300。
其中,获取模块6100,用于基于所采集的多帧待识别图像,获得每帧该待识别图像中目标物对应的特征点坐标。
计算模块6200,用于基于多帧该特征点坐标,得到目标物的动作类别的识别结果,并计算得到目标物与货架之间的距离。
识别模块6300,用于根据该动作类别和目标物与货架之间的距离,得到取放行为的识别结果。
其中,该多帧待识别图像通过单目摄像机采集得到。
具体的,该获取模块6100具体用于:分别将每帧该待识别图像作为检测算法的输入,输出对应的目标物图像;将该目标物图像作为特征点提取算法的输入,输出该特征点坐标。
在一个例子中,该计算模块6200具体可以用于分别对多帧该特征点坐标进行编码,并将编码后的特征点坐标作为动作识别算法的输入,计算得到对应的该动作类别,以及每个类别的动作的起始时刻和结束时刻,作为该识别结果。
在一个例子中,该计算模块6200具体可以用于基于该特征点坐标中的第一指定点坐标和第二指定点坐标,以及预先确定的货架立面标注和地面标注,计算得到该目标物与货架之间的距离。
在一个例子中,该计算模块6200还可以用于基于该目标物图像得到目标物是否持有商品的确定结果;相应的,该识别模块3300具体用于根据该动作类别、该目标物与货架之间的距离以及该目标物是否持有商品的确定结果,得到该取放行为的识别结果。
其中,该计算模块6200在基于该目标物图像得到用目标物是否持有商品的确定结果时,具体可以采用该二分类模型对该目标物图像进行计算,得到该目标物是否持有商品的确定结果。
本实施例的取放行为的识别装置,可用于执行上述方法实施例的技术方案,其实现原理及技术效果类似,此处不再赘述。
<设备实施例>
本实施例中,还提供一种电子设备,该电子设备包括本说明书装置实施例中描述的取放行为的识别装置6000;或者,该电子设备为图7所示的电子设备7000,包括:
存储器7100,用于存储可执行命令。
处理器7200,用于在存储器7100存储的可执行命令的控制下,执行本说明书任意方法实施例中描述的方法。
在电子设备根据所执行的方法实施例的实施主体可以是服务器。
<计算机可读存储介质实施例>
本实施例提供一种计算机可读存储介质,该存储介质中存储有可执行命令,该可执行命令被处理器执行时,执行本说明书任意方法实施例中描述的方法。
本说明书实施例可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本说明书实施例的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/ 或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本说明书实施例操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本说明书实施例的各个方面。
这里参照根据本说明书实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本说明书实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本说明书实施例的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人物来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本说明书实施例的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人物来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人物能理解本文披露的各实施例。本说明书实施例的范围由所附权利要求来限定。