姓名:荣皓宇
学号:17101223406
转载自开发者头条: https://mp.weixin.qq.com/s/f0a5MZn9ljf-0GMdb8ktZA,有部分删改
【嵌牛导读】:人脸识别技术的应用已经逐步渗透各行各业,比如你的iphone X等。但人脸识别已经非常成熟了,现在让我们介绍下下个方向:行人重识别
【嵌牛鼻子】:行人重识别应用,人脸识别,区别,用途,解决方案
【嵌牛提问】:行人重识别如何识别一个极小的(32x32)图中、可能是侧脸甚至后脑勺的人呢?
【嵌牛正文】:
人脸识别在LFW超越人的识别能力之后,就很少有重大的突破了,逐渐转向视频中人脸识别或人脸属性学习等方向。CV顶级会议的接受论文量也出现了逐渐平稳的趋势。
而行人重识别(Person re-identification)也称行人再识别,是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术。广泛被认为是一个图像检索的子问题。 给定一个监控行人图像,检索跨设备下的该行人图像。旨在弥补目前固定的摄像头的视觉局限,并可与行人检测/行人跟踪技术相结合 ,可广泛应用于智能视频监控、智能安保等领域。
行人重识别为国内现在主要的研究方向之一,投稿量则在逐年递增。国内主要为 清华大学,北京大学,复旦大学,大工,中山大学,港中文,华科,西交,中科院,厦大等研究机构;国外为 悉尼科技,QMUL和UTSA等。行人重识别CV顶级会议的接受论文量稳步提升。
1、首先让我们从顶级会议录取量的角度分析
人脸识别论文数量 (按关键字检索 “face recognition“,"face verification")
CVPR2013: 9
ICCV2013: 11
CVPR2014: 7
CVPR2015: 8
ICCV2015: 2
CVPR2016: 5
CVPR2017: 6
ICCV2017: 8
行人重识别论文数量 (按关键字检索 “person re-identification”,"person search","person retrieval","pedestrian retrieval")
CVPR2013: 1
ICCV2013: 3
CVPR2014: 3
CVPR2015: 7
ICCV2015: 8
CVPR2016: 11
CVPR2017: 14
ICCV2017: 16
2、行人重识别 和 人脸识别 的异同
行人重识别 是用一个摄像头下的照片 去认其他摄像头下是否再次出现了这个人。需处理摄像头的viewpoint变化,行人的姿态变化等。
人脸识别 是给定pair,去识别是不是同一个人,或者找到照片库中见过的人。
行人和人脸一样具有结构,但行人结构更复杂一些,部件更多,不容易对齐。
大型行人数据集难以获得,不像人脸可以扒名人。现有行人重识别数据集(DukeMTMC-reID,CUHK03,Market-1501等等)都是在校园中实际用摄像头录的。而早期的小数据集(Viper等)已无法提供全面评估,逐渐少用。
行人重识别落地的产品很少, 而人脸识别的大量应用已经落地 ?
之前学界研究的少 多摄像头/跨摄像头问题。
以上是造成行人重识别 在学界火的原因吧。
3、行人重识别常用 Large-scale 数据集
DukeMTMC-reID
该数据集在杜克大学内采集,图像来自8个不同摄像头。该数据集提供训练集和测试集。 训练集包含16,522张图像,测试集包含 17,661 张图像。训练数据中一共有702人,平均每类(每个人)有23.5 张训练数据。是目前最大的行人重识别数据集,并且提供了行人属性(性别/长短袖/是否背包等)的标注。
Market-1501
该数据集在清华大学校园中采集,图像来自6个不同的摄像头,其中有一个摄像头为低像素。同时该数据集提供训练集和测试集。 训练集包含12,936张图像,测试集包含19,732 张图像。图像由检测器自动检测并切割,包含一些检测误差(接近实际使用情况)。训练数据中一共有751人,测试集中有750人。所以在训练集中,平均每类(每个人)有17.2张训练数据。
CUHK03
该数据集在香港中文大学内采集,图像来自2个不同摄像头。该数据集提供 机器检测和手工检测两个数据集。 其中检测数据集包含一些检测误差,更接近实际情况。平均每个人有9.6张训练数据。
4、未来可能拓展的研究课题
Transfer learning。 在LFW上学好的人脸模型,在实际中可能不work。在行人重识别也有同样的问题。 如研究在 数据集 Market-1501(夏季清华国人)上训练好的模型,怎么应用到另一个数据集 DukeMTMC-reID(冬季杜克老外)
像人脸一样。 往属性学习/视频base的行人重识别转。
做更大更难的检索库,比如Market-1501 + 500K(更多干扰的候选行人)。
语言检索行人。通过自然语言的描述来找人。
行人重识别:从哈利波特地图说起
一、本文的目的是提供一个行人重识别的简要概况。
为了方便/直观的理解这个问题,我们先来说两则相关的故事。一则阐明重识别问题的实际意义,一则故事说明重识别问题的难点。
重识别的应用:哈利·波特 在《阿兹卡班囚徒》中使用 实点图 (Marauder’s Map) 实时追踪并识别追踪人 (显示人名)。将这个应用转化一下,试想:如果在迪斯尼乐园/机场/大学校园里和孩子走散了,除了广播“xx小朋友你的家长在广播室等你”的被动方式。我们可以翻开 实点图就找到熊孩子。而实点图就可以通过重识别来实现:主动输入小朋友的照片,检索多个不同位置的摄像头下的当前帧,找到熊孩子的出现摄像头。最后联系摄像头的位置,就可以定位孩子了。这个应用同样也可以用来找小偷/保护vip等等。
重识别的难点:荷马史诗 (Odyssey iv:412),Mennelaus 被告知,如果想要众神息怒并平安回家,就要在特洛伊战争的回家路上抓到 Proteus,让他告诉自己躲避的方法。虽然Proteus变成了狮子,巨蛇,豹,甚至水和大树,Mennelaus最终还是在海边的海豹群中抓住了他,并知晓了自己平安回家的方法。这大概是最早的重识别的成功案例。对照西游记的话,那大概就是大师兄三打白骨精的故事了。重识别的难点在于,我们没有大师兄的火眼金睛。多个摄像头下拍摄行人的角度不同,图像中的行人可能72变。所以要正确判断的话,就要找到行人上的局部不变的part(比如:衣服颜色,衣服纹理,手提包,背包等等)。在计算机视觉中,常用的特征就有颜色直方图等等。
(DukeMTMC-reID 数据集的retrieval demo)
二. 为了更好的理解这个问题,我们再思考几个补充问题:
1. 能不能用人脸识别做重识别?
理论上是可以的。但是有两个原因导致人脸识别较难应用:首先,广泛存在后脑勺和侧脸的情况,做正脸的人脸识别难。其次,摄像头拍摄的像素可能不高,尤其是远景摄像头里面人脸截出来很可能都没有32x32的像素。所以人脸识别在实际的重识别应用中很可能有限。
2. 有些人靠衣服的颜色就可以判断出来了,还需要行人重识别么?
衣服颜色确实是行人重识别 做出判断一个重要因素,但光靠颜色是不足的。首先,摄像头之间是有色差,并且会有光照的影响。其次,有撞衫(颜色相似)的人怎么办,要找细节,但比如颜色直方图这种统计的特征就把细节给忽略了。在多个数据集上的测试表明,光用颜色特征是难以达到50%的top1正确率的。
3. 使用图像检索的指标来衡量行人重识别的结果是否合适?
在早期,行人重识别数据集是由两个摄像头采集的比如viper,每个query只有一个正确的retrieval目标。所以往往使用top1比较。但在近期,随着大数据集的提出,数据集中往往包含多个摄像头的多个正确目标。光使用top1的话,不能反应模型的真实能力。所以类似图像检索,重识别加入了mAP作为衡量标准,将top2,top3...topn都考虑进去。
4. 测试方式
主要有两种方案:a.测试的输入是一对行人,输出为这对行人的相似度,然后再按相似度排序;b.输入单个人,提取特征,再计算与其他人的欧式距离,然后再按距离排序。
第一种方案的优点是,判断两个人是不是一个人,简单的二分类(是/否)。但缺点是如果我们搜索库中有m张图片,那么与目标图片组成m对图片对。每一对都要进一次模型,估算相似度,这极大的增加了测试的时间。如果我们有n个query,那么我们要计算nm次相似度(而m往往很大)。另一种方案是,预先提取行人的特征,我们只要预先提好n+m次特征。之后只要比较就好了,比较特征可以简单的用矩阵乘法实现。
目前两种方案都有在用,但是后一种更接近实际中图像搜索的要求,用特征来快速检索。
三. 科研中的方案
概括得不全,比较直接和简要的想法有以下两种(主要在神经网络上实现):
1. Part匹配:一部分一部分来比较。
a.常见方案是水平切条,就是将图像切为几个水平的条。由于人体身材往往差不多,所以可以用简单的水平条来做一一比较 [1,2,3,4]。
b.在领域中做匹配,采用的是一个正方形的领域 [6]。
c.另一个较新的方案是先在人体上检测部件(手,腿,躯干等等)再进行匹配,这样的话可以减少位置的误差,但可能引入检测部件的误差 [7,8]。
d. 类似LSTM的attention匹配,但必须pair输入,测试时间较长。[5,10]
2.Loss设计:常见的几种学习特征表达的loss
a. identification loss 直接拿身份label做多类分类 [9]
b.verification loss [2,3,5,6] (主要是contrastive loss。[3, 6]中采用的是二分类loss)
c. identification loss + verification loss [11,12]
d. triplet loss [10,13,14]
e. 加入辅助任务 比如使用attribute等等 [15],
f. 数据增强 混合多数据集训练 [16] ,加入训练集上GAN生成的数据 [17].
目前有一些公开的代码,可详见之前的知乎回答:有哪些行人重识别公开代码 做了一些汇总。