9月30日,苏宁零售技术研究院算法工程师蔡忠强就门店数字化赋能系列课程发表了主题为《精准客流算法实现》的分享,对如何根据线下体验场景中采集的视频图像数据,对用户进行持续跟踪并通过跟踪结果进一步进行属性识别和行为识别等问题进行了剖析,并对全场景跟踪问题的解决主要涉及的三项技术:行人精准检测算法、行人全场景跟踪技术和行人重识别算法(Person Re-identification,ReID)进行了详细介绍。
以下为门店数字化赋能系列课程第五讲内容整理:
大家好,我是来自苏宁科技集团零售技术研究院的算法工程师蔡忠强。今天给大家带来的是我们门店数字化专项的第五期直播课程,主要是想和大家分享一下关于精准客流算法的实现。
精准客流在门店数字化中的应用场景与应用价值
在流量为王的时代,不同的渠道都在争抢流量,但流量并不等于转化和实际的收益,只有精准定位流量,优化流量才能高效的达成拉新、留存、促活、转化的目的。线上流量主要是通过顾客的点击访问购买等行为获得。目前线上的流量抢夺趋于白热化,并且仅仅挖掘的用户的线上行为,对用户的线下行为无法做到精准把握,将会导致分析和决策的片面性。因此结合线上流量和线下流量,双线并行才能在未来立于不败之地。
线上流量的获取模式已经十分成熟,而线下流量的获取则主要依赖于于线下精准客流。线下精准客流指的是精准的统计和分析消费者购物行为,新老顾客比例,店面停留时间等经营相关的核心指标来辅助经营者制定科学合理的经营策略以降低运营成本提高收益率。近年来,无人零售理念的兴起,集合更多视觉技术的线下精准客流带来了一场关于线下购物模式的革命,对于人货场的数字化建模促进了运营者的决策管理科学化,给顾客带来了全新的线下购物体验。

为实现精准客流中对于人货场的数字化建模,我们设计的精准客流算法框架有三大技术要素:目标检测技术,全场景目标跟踪技术以及行人重识别技术。目标检测技术作为基础赋能为全场景跟踪模块提供输入,行人重识别技术为全场景跟踪模块提供跨帧和跨摄像头关联的能力,全场景目标跟踪技术则完成了对整个购物场景行人的实时定位跟踪。

全场景目标跟踪技术结合目标检测模块提供的信息来对行人的属性行为进行精准画像,通过对用户的精准画像我们便得到线下精准客流信息,最后可融合已有的线上信息来辅助经营者做出相关决策。精准客流三大技术要素的实现能充分挖掘线下应用场景中的业务价值,为经营者,消费者营造合作双赢的局面。
精准客流目标检测技术缺陷与算法模型设计
精准客流算法,简而言之需要挖掘场景中所有顾客三个方面的信息:第一是顾客在画面或者空间中的位置信息,这涉及到顾客的空间定位问题(即什么是人,人在哪儿),可建模为行人检测任务或者单目标检测任务。第二是顾客的穿着长相年龄等属性信息,这涉及到顾客的属性估计问题(即人长什么样),可建模为属性识别任务。第三是顾客的购物交互等行为信息,这涉及到顾客的行为估计问题(即人做了什么),可建模为行为识别任务。

这三个方面信息的获得在计算机视觉领域有两个经典的方案,分别为bottom-up思路和top-down思路,我们主要采用top-down思路,该思路认为行人检测任务做为最前端的基础任务提供行人的精准检测框(学术上叫做bounding box),利用行人检测框在原图中把人体截取出来就得到仅关注人体的图像,然后在该图像的基础上做属性识别和行为识别等任务来获得精准客流算法所需要的信息。
值得一提的是行人检测技术也是我们行人全场景跟踪算法的基础。由此可见,行人检测技术对我们实现精准客流算法至关重要。行人检测技术可以看作单类别的目标检测技术,目标检测技术近10年来快速发展,目标检测领域经历了两次浪潮,第一次便是偏向于人工设计,专家经验的目标检测方法,该时期的目标检测算法为多阶段算法,即区域提名,提取特征,分类器分类,NMS后处理这样的范式。常见的区域提名方法有sliding windows,selective search等算法,常见的人工特征有Haar-like,HOG,LBP等算法,常见分类学习算法则有SVM,Adaboost等,值得一提的是DPM模型是传统目标检测的高峰。

随着深度学习技术的快速发展,GPU算力的提升,端到端的目标检测算法不断涌现,开启了第二次浪潮的大幕,该阶段主要开辟了anchor-based和anchor-free两大类目标检测算法,anchor-based代表算法有Yolov4和PAA等,anchor-free算法有FCOS和CenterNet等。
相比传统算法,尽管深度学习模型消耗的GPU资源更多,但精度却得到大幅度提升,这令图像处理技术从学术走向应用变成可能。
行人检测技术容易受到成像的分辨率,光照条件,快速运动,姿势等因素影响,在良好的成像环境下,应用深度学习方法完成行人检测任务可以达到极高的准确度。

但线下实际场景中由于摄像头的成像视角范围限制以及人群行为的复杂性,行人间遮挡问题较为突出,该问题会造成行人检测中的两类错误:行人漏检和行人误检。行人漏检测指的是该检测出来的行人没有检测出来,如左图中黄色虚线框框出的人体,由于被前面的行人遮挡所以发生了漏检问题。行人误检测指的是检测出来的框中并不是行人,即左图中红色框框处的图像部分,该框出现在两个行人中间,显然该框并不能判别其内容指的是哪一个人,所以该框是一个误检测。遮挡问题还会带来判定检测框的不确定性问题,如右图有一个象群,在一定误差范围,框偏左偏右都可以认为是正确的检测框,没有区别,该问题在训练行人检测模型的时候会造成不精确的标签引导而使得模型能力退化。总而言之,行人间遮挡问题会导致行人漏检误检以及密集目标边界不确定性等问题。
针对行人间遮挡问题,我们主要参考一个称为double anchor模型,该模型提出同时检测人头框和人体框来提升行人检测效果的策略,因为人头面积小,遮挡更少,可见性强。人头和人体的联合检测可以抑制误检,同时联合人体框和人头框进行NMS可有效提高行人召回率,减少漏检。

我们对该算法模型的优化主要集中在三点:1.将两阶段的目标检测网络修改为了单阶段的目标检测网络;2.借鉴double anchor思路在单阶段网络上实现人体框和人头框的联合检测;3.加入generalized focal loss损失来建模人体遮挡造成的边界不确定性问题。以上三点优化帮助我们最终在对应场景下较好的解决了行人遮挡问题。优化后的模型在我们实际的场景中较好的解决了行人间遮挡问题。
精准客流在全场景目标跟踪中的算法解决方案
在我们拥有能够对每一帧图像中所有人体进行精准定位能力的基础上,如何对指定行人或感兴趣行人进行持续的定位关联呢?这个问题依赖全场景跟踪算法模块进行解决。首先对行人跟踪背景技术做简要介绍:跟踪技术是对某个或者某些目标分配ID并进行持续定位的技术。行人跟踪根据任务类型大致可以分类三种:SOT,MOT,MTMC。

SOT就是对单个摄像头的单个目标进行持续的定位(目标的确定可以人工给出一个候选框或检测检出),如图中上半部分t0时刻我们通过手工指定或者行人检测技术得到了一个人体框,我们在后续t1,t2时刻都想找到t0时刻的那个人在画面中的位置,这个问题就是SOT问题。
MOT则是对单个摄像头内的多个目标持续的定位(一般采用检测确定目标),如图中下半部分,我们在t0时刻利用行人检测技术检测到了两个人体框,我们想在后续t1和t2时刻都想找到t0时刻的两个人在画面中的位置,这个问题是MOT问题。
MTMC则是对多个摄像头内的多个目标持续定位,如图所示,我们每个摄像头都分别能在t0时刻使用行人检测技术获取到对应的人体框,然后在各自摄像头中的t1和t2时刻找到和对应t0时刻的对应的人在画面中的位置,并且允许不同摄像头是有重叠区域的,即同一个人还可能出现不同摄像头中,即不同摄像头还需要找到对应同一个人的位置,这个问题是一个MTMC问题。

值得注意的是,行人检测只能判定当前帧中所有的行人位置和相关估计量,但并不能判定该行人和历史帧中哪个行人是同一个人或同一ID,所以跟踪的核心技术就是如何判断不同检测的相似性以及如何关联,一种简单的想法就是假设视频帧率为30FPS,每一帧都做目标检测,前后帧间时采集时间差为0.03s,0.03s内行人变化幅度应该较小,利用前后帧对比检测框的重合度还有框内行人的相似度来综合判定两个目标是不是同一个人即可,当然实际工程中还有更加复杂的情况以及考量,这里就不一一讨论了。假设我们已经拥有了成熟的SOT技术和MOT技术,如何做到对顾客的全场景跟踪呢?
全场景跟踪可以认为等同于前面PPT介绍的MTMC任务,即跨摄像头的多目标跟踪任务。如图所示,我们给出一个容易理解的解决方案。针对每个摄像头调用一套MOT算法,MOT算法可以是同构的,也可以是异构的,在MOT算法后可得到该摄像头下对应行人在每帧图像的位置,把行人图像的位置串起来就得到行人轨迹,对每个人的轨迹进行编号分别为ID1,ID2,依此类推。然后MTMC的目标就是把不同摄像头同一个人的ID对应起来,如何做呢?实际上就是做不同摄像头之间同一人的特征匹配,特征匹配过程可以通过右图来简单的理解一下,即对每个人提取最能表示他的特征然后数值化,例如ID1的行人最显著的特征就是灰色衣服平头中等体型等信息,利用计算机语言就用一个定长数值向量表示出来,其他的也同样表示为一个定长的数值向量来代表这个人,最后就是做距离度量和分配的操作,这个操作大家类比游戏连连看即可。至此行人全场景跟踪任务已能得到较好的解决了,但是本页提及的特征匹配中的特征是如何得来的呢,怎么学习一个衡量两个人图像相似性的特征向量?这个问题的解决需要使用到行人重识别算法模块。

苏宁精准客流行人重识别的技术研究突破
行人重识别任务的目的就是判断图像或者视频序列是否存在特定行人的技术。查询项称为probe,被查询库称为gallery。根据probe和gallery的模态为图像还是视频可以将任务划分为右边表格中的4种,这四种任务分别是I2I,V2I,V2V和I2V。行人重识别的主要方法是提取行人特征,即将图像或者视频映射为一个向量,比较向量间的距离来判定两幅图像或者视频是否是同一个人。对于图像模态输入,特征提取常采用CNN,对于视频模态输入,特征提取常采取CNN+LSTM。我们主要研究I2I。下面我们来介绍一下苏宁在行人重识别领域的研究工作。

行人重识别领域的主要核心问题在于如何设计一个网络获取鲁棒的行人特征向量表示。我们期望同一人在姿态、光照等发生变化时该向量仍然能较好表示该人的特性,同一人的不同图像之间抽取的特征向量距离越近越好,对于不同的人而言,其特征向量之间的则距离应该越远越好。这两个要求就是行人重识别领域核心目标:类内距离越小越好,类间距离越大越好。
为达到这一目标,苏宁美国硅谷研究院研究人员提出了一种基于多尺度人体分区的Mask引导注意力模型(Multi-Scale Body-Part MaskGuided Attention for Person Re-Identification)。模型如上图,该模型可以分为输入,特征提取网络,输出三个部分。训练阶段输入为每个批次N个人,每个人P张彩色图和P张Mask图,特征提取部分使用深度学习领域常用的ResNet50模型作为backbone提取特征,采用两个mask引导的注意力模块增强特征,输出为行人的ID类别以及其特征向量表示,最后采用分类损失和Triplet损失的和作为损失函数优化特征提取网络参数,在模型推时,输入是单个行人的单张图像,中间的特征提取网络可以看做一个黑盒,输出为其特征向量表示。详情可以参考本网络的相关资料。

行人全场景跟踪技术中应用行人重识别技术需要建立行人的特征底库,行人并没有类似人脸或者商品外观的稳定性特征,易受衣着等特性改变的影响,因此其底库不具备长时效性,需要实时无感知动态建库。
由于库并不能离线静态建立,我们提出一个特征动态建库方法并申请了相关专利。该方法如上图所示,假设某个行人已经建立了右边所示底库,如果该行人轨迹当前帧匹配上了一个检测人体框,如何决定这个检测是否入库呢?我们首先通过算法或者已知信息获取检测的摄像头来源,人体朝向,检测质量这三个标签,然后通过规则设定来完成动态建库过程。如图中4种常见的例子。例如左侧第二个检测,该检测人体不全画面模糊,检测质量为低质量,直接丢弃不入库。其余三种情况则分类讨论,如果底库为空,则只要匹配上的检测即可入库,如果底库不为空,则需要进行同摄像头或者跨摄像头特征距离检验,只有检验通过才能入库,否则丢失不入库。

通过我们设计的动态建库算法能很好的防止底库被污染,提高行人全场景跟踪准确率。
精准客流算法如何赋能门店数字化管理
有了高精度的实时全场景跟踪算法,可以实现实时用户精画像。通过对全场景所有顾客历史统计信息叠加绘制区域热力图,根据顾客历史空间位置可以获得顾客购物轨迹动线,结合跟踪技术和属性识别技术对顾客进行精细属性分析,综合线上线下信息制定决策来做到对客流的高效管理,对商品选品和购物路线科学的规划,对顾客潜在购买欲望的挖掘及推荐等。

精准客流算法在对用户的购物行为等进行画像之外,还可以根据需求定制化监控事件并定义相关处理策略,如对用户的行为检测来监控盗损破坏等行为的发生,结合关键点检测技术,动作识别技术和三维重建技术可以打造更全面、更精准、体验更良好的VR试衣镜,结合刷脸刷码的先验信息鉴别工作人员,VIP顾客,新顾客等身份,并依据身份提供针对性管理策略。

除用户画像和事件监控之外,我们简单介绍一下如何利用全场景视觉技术来实现完整的线下门店商品推荐系统。线下商品画像=线上商品画像;线下用户画像=线上用户画像+线下用户画像(门店图像检测人脸人体属性);线下用户行为= 门店检测用户行为序列。类比苏宁易购首页的千人千面功能,用同样的模型,我们在无人店复制了完整的商品推荐功能。技术优势是线上线下全流程打通,如果只有线下数据,也可以通过用户数据积累逐步达到线上推荐同样的效果。以上就是本期的主要分享内容。

目前苏宁正在推进开放平台建设,为生态合作企业赋能门店数字化能力。我们也成立了相关的社群,对于苏宁门店数字化感兴趣的小伙伴可以扫码添加我们的科技小助手,进入群聊。进群更有多重好礼等你拿,拉入5位小伙伴,即可与大咖视频沟通半小时;而拉入的小伙伴可以获得全场景视觉无人店全解析、了解最新技术信息、优先参与线下开放日、获得开源代码内容、苏宁校招内推、苏宁社招内推、协会、联盟、标准优先入围资格等。
谢谢大家。

