QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

StartDT AI Lab | 视觉智能引擎—Re-ID 赋能线下场景顾客数字化

  • 2019-08-24
  • 本文字数:3138 字

    阅读完需:约 10 分钟

StartDT AI Lab | 视觉智能引擎—Re-ID赋能线下场景顾客数字化

人货场的思路是整个新零售数字化链路的核心,人是整个业务生命周期的起始点,图像算法的首要目标就是从图像中得到“人” 。在此前的文章中我曾谈到过 Face ID 的发展,Face ID 帮助商家赋能了线下用户画像,把视觉计算的热情带到支付、安防等各行各业。


诚然,分析人的方式多种多样,各种分析行人的算法中,Face 算法在其中有着得天独厚的优势,它在验证身份方面是最精准的(可以精确到支付验证),但 Face 算法在数量统计的准确度肯定不是最优的。因为很多场景下的 Face ID 受到了光照遮挡的影响,质量参差不齐,所以基于行人身体的识别诉求便越来越强。


我们常说一套算法系统是一个此消彼长,鱼和熊掌不能完美兼得的,这里的鱼指的是准确率–精确的识别人(face 技术),熊掌指的是召回率–全面抓到行人(body 技术)。只有当 face 技术和 body 技术紧密结合时,我们整个场景人的分析才能全面覆盖,人这个维度分析才能更有价值。那么下面我将着重讲讲整个行人识别的整体技术链路。

人体检测

通过计算机视觉信号对人的相关信息进行结构化提取,第一步通常是人体检测。由于奇点云商业赋能的相关产品和系统在广泛的商业场景中大量铺开,所以对人体检测的鲁棒性提出了较高的要求。在无约束的视觉场景下,人体检测主要碰到的问题有:


1. 尺度变化大: 身材大小不一,大人和小孩的比列会相差很大。行人距离摄像头的远近也会造成很大的尺度变化。尤其是这两种尺度问题叠加,造成的困难就更大了。


2. 人体姿态变化大: 直立行走、弯腰劳动、坐着休息、三五结伴等等,都会带来人体形态的巨大变化。


3. 摄像头造成的畸变: 目前行人检测所赋能的场景和商业盈利的要求,都对行人检测相关硬件的成本做出了比较大的限制。所以,由于摄像头本身成像质量和部署所带来的图像畸变是很常见的,而这对人体检测又带来了很大干扰。


4. 影像模糊: 行人检测训练中,由于行人所在的场景及其广泛,作为负样本的背景常带有形状、纹理、外观等于人体相像的景状物,加上光照角度等影响,使得一些负样本可以以假乱真。


5. 遮挡: 在行人密集的场景中,行人之间会互相遮挡,在不同的场景中穿梭,也常常使得部署位置固定的摄像头无法完整地检测到人体,这也对人体检测带来了很大困难。


6. 速度要求: 人体检测所赋能的场景往往是类安防的场景,其所需处理的数据量巨大,所以为了保障一些业务实时性的要求,对人体检测模型的检测速度就提出了较高的要求。而人体检测由于本身任务较难,模型较大,想要提升速度而不降低准确性,对技术的要求就更高了。


StartDT AI Lab 针对以上的一系列问题,展开了针对性的攻坚工作:


在数据准备上,下了很大的成本,通过自行标注整理,形成了百万级的数据样本库,尤其在零售商业场景下的行人标注,积累十分丰富。


在模型算法方面,充分借鉴了目前主流的铺设锚点框和新近取得较大突破的关键点检测类的方法。通过不断的迭代和实验,目前算法在准确率和召回率方面都已经可以充分满足当前业务场景下的人体检测任务。


在模型推断速度的提升方面,StartDT AI Lab 主要从两方面入手来压缩模型计算复杂性。一方面,压缩 backbone 神经网络,在尽可能不降低特征提取性能的前提下,减小 backbone 尺寸。另一方面,优化检测头模块,保障检测器整体性能不降低。通过不断的版本迭代,目前模型尺寸已经只有第一代模型的十分之一以下,在同等计算资源下,模型的处理效率有了巨大的提升。

行人重识别

行人重识别的技术本身是从度量学习这个大类脱胎而来,和人脸识别要解决的是一类问题——检索。通过检索,我们希望行人的空间信息和时间信息能够关联和聚类到一起,那么重识别就很容易理解了,在一个摄像头出现的某个行人,如果我们可以找出在其他摄像头中出现的踪迹,那么就完成了一次跨境追踪。


试想这样的场景如果在迪斯尼乐园/机场/大学校园里和孩子走散了,除了广播“xx 小朋友你的家长在广播室等你”的被动方式。我们可以翻开实点图就找到熊孩子。而实点图就可以通过重识别来实现:主动输入小朋友的照片,检索多个不同位置的摄像头下的当前帧,找到熊孩子的出现摄像头。最后联系摄像头的位置,就可以定位孩子了。这个应用同样也可以用来找小偷/保护 vip 等等。这样的想象空间确实给人以极大的振奋,但如此具有未来感的画面也不是一蹴而就的。StartDT AI Lab 背后大量的技术支撑才能有让行人重识别技术发挥其应有的作用:


1.Body-Tracking 机制: 在视频结构中的行人追踪可以规约为多目标跟踪问题,我们主要通过滤波和贪心算法结合的手段整合每个行人 ID 所关联的信息,在短时间的范围内,追踪可以将某个行人的行人框根据前后帧的关联性,快速匹配,这样的好处有两点:一个是增加空间的连续性,在一段视频帧中前后帧之间有着行人的空间信息,追踪就可以将它们的空间信息统一在一起;二是节约了计算成本,在整个追踪过程中只需有代表性的分析某帧数据,便可以对整体信息有一个较高维度的把控。


2.人体骨骼点分析: 对于行人重识别来说,通过计算机视觉技术,获取人体的骨骼点,这些关键点能为行人重识别提供关键先验知识。首先,不是所有检测出的行人都适合去做重识别,其中不完整的行人,分辨率过低的行人对模型会产生一定的攻击,为了避免这些脏数据的影响,骨骼点就可以提供一定过滤作用,通过骨骼点数量我们对行人的完整度有一个定性的评估。同时,骨骼的位置信息也是我们行人对齐的关键所在,不同的行人的姿态和位置是需要通过骨骼关键点来完成对齐的,通过对齐行人特征,减少身体部件错位对结果产生较大影响。


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    3.Person Re-identification: 行人重识别是通过在监控视频中,用 Re-ID 模型对行人的图片进行特征抽取,这个特征所呈现的特点是相似的行人距离较近,不同的行人距离较远,这个高维度 embedding 的特征就可以帮助我们找到不同摄像头下,相同的行人。虽然技术很新很先进,但在实际场景中,我们分析行人图片时,无法避免的产生了行人不完整的现象,如果我们直接过滤掉这些行人,那么在更高层的数据统计维度产生的系统误差将为对召回率产生较大影响,在行人不完整时,我们被业务倒逼去使用残缺人体进行比对。我们有意在模型训练时增加这样的噪音数据,同时通过无监督的方式对身体特征对齐,提高了算法对不完整行人的鲁棒性。


    样本生成

    数据样本是人工智能技术的基础,然而数据的积累是极其费时、费力又费钱的一项工作,尽管当前存在一些数据可观的公开数据集,然而这些数据集本身存在样本分布不均衡,样本多样性差等问题。另外不同应用场景下的数据分布之间存在一定的区别,导致模型的泛化能力会严重降低,因此就必须进行实地数据标注,Re-ID 样本的标注尤为困难。


    在项目中,由于现场摄像头画面的行人数据分布与公开数据集之间存在巨大 domain 差异,因此采用公开数据集训练的 Re-ID 模型在该场景下的准确率较低,无法满足实际需求。针对此问题,我们采用生成对抗网络(GAN)将公开数据集中的行人转化成实际场景下的图像风格,重新进行训练后,模型准确率提升了 50%以上。此外,我们还通过 GAN 的方式实现行人姿态的变化,以提高数据集的多样性;通过注意力机制,强化学习行人除衣着之外的特征(头部,四肢等),以解决行人换衣导致的准确率下降的问题。


    风格迁移:


    👆风格迁移前



    👆风格迁移后



     行人服装更换:




    通过以上技术展示,读者对于行人重识别(Re-ID)这项技术有了全面的了解,也对我们对于技术的极致追求有了新的认识。游离在 VIP 体系之外的稀疏用户行为,正是通过行人识别技术,将其落袋到整个客流画像之中,为动线分析,热力分析提供了可能性。同时也弥补了 Face ID 无法作用于广义统计维度的短板,StartDT AI Lab 通过各种算法相互协同并取长补短,产生了微妙的化学反应,最终重新定义了客流系统,将商家的分析维度达到了新的高度。


    作者:哲彼、草窗 @奇点云


    2019-08-24 16:514517

    评论

    发布
    暂无评论
    发现更多内容

    2021最新分享:阿里内部总监手码的“Redis学习手册”风靡全网

    比伯

    Java 编程 程序员 架构 面试

    JAVA已经呈饱和趋势了吗?

    cdhqyj

    Java 程序员 工作 IT

    不吹不黑聊中台

    Geek_dn82ci

    云计算 中台 企业架构

    mongodb 源码实现系列 - Mongodb write写(增、删、改)模块设计与实现

    杨亚洲(专注MongoDB及高性能中间件)

    MySQL 数据库 mongodb 架构 分布式数据库mongodb

    LDAP身份认证管理最佳实践

    龙归科技

    服务器 ldap 客户端

    OCE等你加入

    滴滴云

    云计算 私有云 滴滴夜莺 Obsuite

    关于MPI-IO,你该知道的

    焱融科技

    存储 HPC 焱融科技 文件存储 分布式存储

    力扣(LeetCode)刷题,简单题(第19期)

    不脱发的程序猿

    程序员 LeetCode 28天写作 算法面经 3月日更

    数据库定时备份linux篇

    xiezhr

    数据库 Linux Shell 数据备份 3月日更

    收藏!这些 IDE 使用技巧,你都知道吗

    阿里巴巴云原生

    Java ide 云原生 API 调度

    分布式事务与解决方案

    一个大红包

    28天写作 3月日更

    纯干货 | 详解 HDFS 3.x 新特性-纠删码

    五分钟学大数据

    大数据 hdfs 28天写作 3月日更

    智能炒币机器人软件开发|智能炒币机器人APP系统开发

    系统开发

    Alluxio 助力 Kubernetes,加速云端深度学习

    阿里巴巴云原生

    人工智能 大数据 容器 云原生 k8s

    Python 语言基础变量定义和使用

    HoneyMoose

    Python 语言基础变量获得变量类型

    HoneyMoose

    职场里,对数据库要有敬畏之心!

    Simon

    MySQL 数据库

    平安智慧社区建设方案,平安小区的系统功能

    13530558032

    【LeetCode】分割回文串 II Java题解

    Albert

    算法 LeetCode 28天写作

    币管家量化交易软件开发|币管家量化交易APP系统开发

    系统开发

    Java程序员福利!2021年最新17套完整版一线大厂面试真题

    Java架构追梦

    Java 架构 面试 金三银四

    Kafka 架构中 ZooKeeper 以怎样的形式存在?

    李尚智

    Java 消息中间件

    36 Kr | 打造企业统一数据安全入口,「图尔兹」想用新思路解决数据安全问题

    BinTools图尔兹

    数据库 sql 数据安全 权限 数据库管理工具

    2021网络系统流行架构

    杨东冬

    架构 网关 ebpf cilium envoy

    高考大数据:全国31省高考难度,哪个才是地狱模式?

    不脱发的程序猿

    大数据 数据分析 28天写作 高考难度 3月日更

    实习记录-埋点测试

    YUKI0506

    区块链电子合同应用落地--区块链电子合同签约

    13530558032

    Python 中文编码

    依旧廖凯

    Python 28天写作 3月日更

    如何招聘一名产品经理

    马踏飞机747

    互联网 产品经理 招聘 职场成长

    Linux内核 设备树操作常用API

    赖猫

    Linux Linux内核

    WebRTC 音视频同步原理与实现

    阿里云CloudImagine

    阿里云 音视频 WebRTC 流媒体 视频云

    StartDT AI Lab | 视觉智能引擎—Re-ID赋能线下场景顾客数字化_AI&大模型_哲彼、草窗@奇点云_InfoQ精选文章