雷锋网按:本文为 AI 研习社编译的技术博客,原标题为 A Practical Guide to Person Re-Identification Using AlignedReID,作者 Niruhan Viswarupan。
翻译 | 张哥华 校对 | 余杭 整理 | 余杭
目前世界各地都充斥着闭路电视,而数字监控产生的大量数据对人工操作来说难以利用。机器视觉算法的兴起(同时也因为硬件提升让我们能使用并行处理)给我们提供了其他的解决方案,算法可以读取监控数据并返回有意义的描述。类似于面部检测和面部识别的图像技术已经被应用于摄像头和社交网络。
图 2:https://sociable.co/social-media/how-to-disable-facebook-facial-recognition/
Facebook 可以自动识别包含了你的图像,即使在图片上没有任何人把你标注出来。他们的算法会从人为标注了你的图片上学习到你脸部的特征,并在新的图片上寻找这些特征是否存在。建立这套能适用于上亿人群的系统需要严谨的工程技术。
这个和我们将要介绍的行人重识别技术稍微有些不同。我们不光是要通过面部特征来从匹配一个人,也需要识别他/她的整个身体(比如衣服,身高等)。面部识别的局限是它只在人脸靠近摄像头的时候才适用,而监控录像往往不具备这样的条件,人也可以用物体挡住自己的脸部。
在介绍行人重识别的代码之前,我们先来整理下我们要讨论的内容:
我把这篇博客分为 5 部分:
1. 行人重识别 — 定义我们遇到的问题
2. 行人重识别的挑战 — 解决问题中存在的挑战
3. 行人重识别问题的变种 — 我们面临的问题会随着输入内容的不同而有小幅改变。关于变化的讨论
4. 不同的行人重识别方法 — 建立行人重识别的方法论
5. AlignedReID:超过人类表现的行人重识别技术 — 如何使用第三方库 AlignedReID 对实例进行测试
1. 行人重识别
给出一个摄像头拍摄的行人的照片或视频,重识别技术就是在另一个的摄像头中再次辨认出是同一个人的过程,并且两个摄像头不能有重叠的视角。重识别对于在多个摄像头中建立连续标注或是在单个摄像头中重建掉线的或遗失的追踪是必不可少的。[2]
行人重识别就是把不同摄像头拍摄的同一个人,或是同一个摄像头在不同场景下拍摄的同一个人联系起来。换句话说就是,在多摄像设置下对同一个人分配同一个ID。通常情况下,摄像头的重识别被限制在一个很短的时间段和很小的区域内。对人类而言,通过对他人面部、身高、身材、衣服、发型、走路姿势等等来辨认一个人是容易的,然而这对机器来说却是极其艰难的。
图 3: 重识别系统流程图
2. 行人重识别的挑战
我们最主要的挑战来自于人内部的变化,即是说,在不同摄像头下,同一个人展现出来的不同姿态。我们将在下面讨论主要的一些挑战。
图 4: 印度总理莫迪在练习瑜伽
1. 在重识别之前系统必须要在图片上检测到行人并决定行人的边框大小。正如我们在图4看到的,人体姿态可以是非常动态可变的。捕捉这类可变的对象本身就是一个挑战。
2. 一个重识别系统既可以输入图片(single-shot)也可以输入视频(multi-shot)。在视频输入时需要在检测目标和帧画面之间同步。这个过程被称作追踪。多人追踪也是一个挑战。
3. 光照变化。日光强度,阴影,彩色表面的反光,室内光线,都会导致同一个目标在摄像头中展现出不同的光影和颜色。
4. 低像素。许多老式监控系统的摄像头都是低像素,这会导致输入信息量不足,从而让行人重识别变得困难。
图 5: 行人遮蔽
5. 遮蔽。在拥挤的环境中,人与人之间部分甚至是完全的遮蔽对提取行人特征也是挑战。
6. 统一着装。在学校与一些工作场所,统一着装会扰乱重识别提取衣服/外貌信息。
7. 可扩展性。公共区域往往有成百上千的摄像头,但现有技术才刚开始解决多摄像监控问题。
3. 行人重识别:问题变种
正如我们之前提到的,系统的输入可以是图片也可以是视频。当输入的是视频是我们可以考虑用步态分析等方法来建立重识别。
开放集重识别 vs 封闭集重识别。开放集的重识别是指,我们的数据集图库并不一定包含我们要检索的ID,也即是说,在开放式环境下摄像头检测到新的行人,会提取新人特征并加入到我们图库中。而封闭集重识别的数据集会受限。当一个可能的检索 ID 被包含在我们图库 ID 中时,我们就会把检索图片与图库 ID 匹配,并输出与检索信息最相似的行人 ID 。
4. 不同的行人重识别方法
图 6: 基于重识别处理分类的方法论 [2]
场景法是我们需要利用外部信息,比如摄像头位置,角度等等,去辅助重识别。利用摄像头位置和抓取图像的时间等信息,我们可以减少一次检索所需的图库大小。不仅如此,知道一个人进入/离开的位置,行走速度,经过的时间,我们就可以持续追踪该人。如果多个摄像头之间存在交叠的区域,并且没有盲点,我们就可以在不同摄像头中追踪该人且不需要进行过多的重识别。
非场景法可被分为两种 — 被动和主动。被动法不使用任何机器学习的算法来执行描述提取与匹配,主动法则与此相反。主动法又被继续分为如下三个部分,
1. 颜色校准:对2个摄像头之间的对象外观变化进行建模,使用光照变化函数(brightness transfer function,BTF)。重识别被部署在外观变化模型里。
2. 特征描述学习:在这个模型里我们试图让重识别对最显著的特征进行学习,或是学习一系列特征中最显著的加权权重。
3. 度量学习:在此方法中,算法专注于学习到能最大化匹配正确率的距离度量,而不是考虑外观表达的选择。
5. AlignedReID:超过人类表现的行人重识别技术
AlignedReID 是最近的一篇论文,声称算法第一次在行人重识别上超过了人类[4]。AlignedReID 提取整体的特征,而整体特征又被局部特征共同学习到。我们将使用一个第三方工具来实现 AlignedReID,github是 https://github.com/huanghoujing/AlignedReID-Re-Production-Pytorch,并基于Market 1501 数据集进行测试。关于代码的详细解释、如何自定义输入和 API 将在另一篇博客中讨论。
第一步 下载代码
下载 https://github.com/huanghoujing/AlignedReID-Re-Production-Pytorch 为 zip 文件,本地解压。
第二步 安装所需包文件
我推荐使用 Anaconda package manager 和 Ubuntu 环境来测试实例。推荐用 Anaconda Python 2.7 的环境来安装包。
PyTorch 0.3
opencv_python 3.2.0.7
numpy 1.11.3
scipy 0.18.1
h5py 2.6.0
TensorBoardX 0.8
TensorFlow 1.2.0
scikit-learn
......
想要继续阅读,请移步至我们的AI研习社社区:https://club.leiphone.com/page/TextTranslation/712
更多精彩内容尽在 AI 研习社。
不同领域包括计算机视觉,语音语义,区块链,自动驾驶,数据挖掘,智能控制,编程语言等每日更新。
雷锋网雷锋网