写点什么

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:514534

    评论

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

    HVEC安装与卸载

    林建

    HVEC DISM++

    Agora 教程丨一个典型案例,教你如何使用水晶球“数据洞察”

    声网

    Agora 教程 水晶球

    Go- break和continue

    HelloBug

    Go 语言 break continue

    docker概念很乱?俺来替你理一下!

    Java Docker 架构 后端

    ☕【Java技术指南】「编译器专题」重塑认识Java编译器的执行过程(常量优化机制)!

    码界西柚

    Java 编译器 技术栈 8月日更

    【漏洞分析】远程命令执行漏洞总结

    网络安全学海

    网络安全 信息安全 网络 渗透测试 安全漏洞

    NodeJs深入浅出之旅:异步I/O (上)🐋

    空城机

    JavaScript 大前端 Node 8月日更

    云与AI真的能互相成就?还是最好各自独立行走?

    脑极体

    重构你的css吧!(初看)

    云小梦

    CSS bem elementUI scss ITCSS

    程序员作图工具和技巧,你 get 了么?

    程序员鱼皮

    Java 大前端 后端 架构设计 代码

    阿里新产!Spring+SpringBoot+SpringCloud Alibaba全系列高阶笔记

    Java~~~

    Java spring 架构 面试 Spring Cloud

    架构师实战训练营|课后作业| 1

    Frode

    #架构实战营

    Go- goto和label

    HelloBug

    Go 语言 goto label

    阿里巴巴最新产物!Spring+SpringBoot+SpringCloud Alibaba全系列高阶笔记

    Java spring 程序员 架构 后端

    获取 NodeJS 程序退出码

    编程三昧

    node.js Node 8月日更

    懵逼!阿里一面就被虐了,幸获内推华为技术四面,成功拿到offer

    编程susu

    Java 编程 程序员 面试 计算机

    网络攻防学习笔记 Day114

    穿过生命散发芬芳

    网络安全 8月日更

    半监督学习概述(二)

    Databri_AI

    学习 深度半监督

    暴力美学,拒绝平庸,Alibab开源内部神仙级“K8S核心笔记”下载

    Java~~~

    Java 架构 面试 微服务 k8s

    牛逼Git,豆瓣评分高达9.3神著“Pro Git”电子版国内首次开源

    Java~~~

    Java git 架构 面试 架构师

    适女化科技(一):伪需求,真消费

    脑极体

    Socket 通信原理

    一个大红包

    8月日更

    脉脉转发3W次的字节内部首发“数据结构算法”手册!惨大厂被封杀

    Java~~~

    Java 架构 面试 算法 架构师

    Go- switch-case结构

    HelloBug

    Go 语言 switch case

    Alibaba史上最牛的分布式核心原理解析全彩手册开源!称霸GitHub

    Java~~~

    Java 架构 面试 分布式 微服务

    教你一招疯狂拿Offer!用微服务设计一个超大型分布式电商平台

    Java~~~

    Java 架构 面试 Spring Cloud 架构师

    ShardingSphere JDBC 分库分表 读写分离 数据加密

    Java 源码 ShardingSphere

    Go- for循环

    HelloBug

    for Go 语言

    再也不怕 JavaScript 报错了,怎么看怎么处理都在这

    前端依依

    学习 技术 大前端 js

    小说类公众号如何运营:先要满足特定读者人群

    石头IT视角

    不少同学想要放弃秋招了........

    今晚早点睡

    程序员 秋招

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