您正在使用IE低版浏览器,为了您的雷峰网账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
此为临时链接,仅用于文章预览,将在时失效
人工智能 正文
发私信给不灵叔
发送

1

基于深度学习的行人重识别研究综述(上)

本文作者:不灵叔 2017-12-20 18:55
导语:希望能够帮助刚进入这个领域的人快速了解近几年的工作。

雷锋网 AI 科技评论按:本文作者罗浩为浙江大学博士生,本文为罗浩为雷锋网 AI 科技评论撰写的独家稿件,未经许可不得转载。

前言:行人重识别(Person Re-identification)也称行人再识别,本文简称为ReID,是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术。广泛被认为是一个图像检索的子问题。给定一个监控行人图像,检索跨设备下的该行人图像。

在监控视频中,由于相机分辨率和拍摄角度的缘故,通常无法得到质量非常高的人脸图片。当人脸识别失效的情况下,ReID就成为了一个非常重要的替代品技术。ReID有一个非常重要的特性就是跨摄像头,所以学术论文里评价性能的时候,是要检索出不同摄像头下的相同行人图片。ReID已经在学术界研究多年,但直到最近几年随着深度学习的发展,才取得了非常巨大的突破。因此本文介绍一些近几年基于深度学习的ReID工作,由于精力有限并不能涵盖所有工作,只能介绍几篇代表性的工作。按照个人的习惯,我把这些方法分为以下几类:

  1. 基于表征学习的ReID方法

  2. 基于度量学习的ReID方法

  3. 基于局部特征的ReID方法

  4. 基于视频序列的ReID方法

  5. 基于GAN造图的ReID方法

1、基于表征学习的ReID方法

基于表征学习(Representation learning)的方法是一类非常常用的行人重识别方法[1-4]。这主要得益于深度学习,尤其是卷积神经网络(Convolutional neural network, CNN)的快速发展。由于CNN可以自动从原始的图像数据中根据任务需求自动提取出表征特征(Representation),所以有些研究者把行人重识别问题看做分类(Classification/Identification)问题或者验证(Verification)问题:(1)分类问题是指利用行人的ID或者属性等作为训练标签来训练模型;(2)验证问题是指输入一对(两张)行人图片,让网络来学习这两张图片是否属于同一个行人。

论文[1]利用Classification/Identification loss和verification loss来训练网络,其网络示意图如下图所示。网络输入为若干对行人图片,包括分类子网络(Classification Subnet)和验证子网络(Verification Subnet)。分类子网络对图片进行ID预测,根据预测的ID来计算分类误差损失。验证子网络融合两张图片的特征,判断这两张图片是否属于同一个行人,该子网络实质上等于一个二分类网络。经过足够数据的训练,再次输入一张测试图片,网络将自动提取出一个特征,这个特征用于行人重识别任务。

基于深度学习的行人重识别研究综述(上)

但是也有论文认为光靠行人的ID信息不足以学习出一个泛化能力足够强的模型。在这些工作中,它们额外标注了行人图片的属性特征,例如性别、头发、衣着等属性。通过引入行人属性标签,模型不但要准确地预测出行人ID,还要预测出各项正确的行人属性,这大大增加了模型的泛化能力,多数论文也显示这种方法是有效的。下图是其中一个示例[2],从图中可以看出,网络输出的特征不仅用于预测行人的ID信息,还用于预测各项行人属性。通过结合ID损失和属性损失能够提高网络的泛化能力。

基于深度学习的行人重识别研究综述(上)

如今依然有大量工作是基于表征学习,表征学习也成为了ReID领域的一个非常重要的baseline,并且表征学习的方法比较鲁棒,训练比较稳定,结果也比较容易复现。但是个人的实际经验感觉表征学习容易在数据集的domain上过拟合,并且当训练ID增加到一定程度的时候会显得比较乏力。

2、基于度量学习的ReID方法

度量学习(Metric learning)是广泛用于图像检索利于的一种方法。不同于表征学习,度量学习旨在通过网络学习出两张图片的相似度。在行人重识别问题上,具体为同一行人的不同图片相似度大于不同行人的不同图片。最后网络的损失函数使得相同行人图片(正样本对)的距离尽可能小,不同行人图片(负样本对)的距离尽可能大。常用的度量学习损失方法有对比损失(Contrastive loss)[5]、三元组损失(Triplet loss)[6-8]、 四元组损失(Quadruplet loss)[9]、难样本采样三元组损失(Triplet hard loss with batch hard mining, TriHard loss)[10]、边界挖掘损失(Margin sample mining loss, MSML)[11]。首先,假如有两张输入图片基于深度学习的行人重识别研究综述(上)基于深度学习的行人重识别研究综述(上),通过网络的前馈我们可以得到它们归一化后的特征向量基于深度学习的行人重识别研究综述(上)基于深度学习的行人重识别研究综述(上)。我们定义这两张图片特征向量的欧式距离为:

基于深度学习的行人重识别研究综述(上)

(1)对比损失(Contrastive loss)

基于深度学习的行人重识别研究综述(上)

对比损失用于训练孪生网络(Siamese network),其结构图如上图所示。孪生网络的输入为一对(两张)图片基于深度学习的行人重识别研究综述(上)基于深度学习的行人重识别研究综述(上),这两张图片可以为同一行人,也可以为不同行人。每一对训练图片都有一个标签基于深度学习的行人重识别研究综述(上),其中基于深度学习的行人重识别研究综述(上)表示两张图片属于同一个行人(正样本对),反之基于深度学习的行人重识别研究综述(上)表示它们属于不同行人(负样本对)。之后,对比损失函数写作:

基于深度学习的行人重识别研究综述(上)

其中基于深度学习的行人重识别研究综述(上)表示 max(z,0) ,α 是根据实际需求设计的阈值参数。为了最小化损失函数,当网络输入一对正样本对,基于深度学习的行人重识别研究综述(上)会逐渐变小,即相同ID的行人图片会逐渐在特征空间形成聚类。反之,当网络输入一对负样本对时,基于深度学习的行人重识别研究综述(上)会逐渐变大直到超过设定的 α 。通过最小化基于深度学习的行人重识别研究综述(上),最后可以使得正样本对之间的距离逐渐变下,负样本对之间的距离逐渐变大,从而满足行人重识别任务的需要。

(2)三元组损失(Triplet loss)

三元组损失是一种被广泛应用的度量学习损失,之后的大量度量学习方法也是基于三元组损失演变而来。顾名思义,三元组损失需要三张输入图片。和对比损失不同,一个输入的三元组(Triplet)包括一对正样本对和一对负样本对。三张图片分别命名为固定图片(Anchor) a ,正样本图片(Positive)p和负样本图片(Negative) n 。图片 a 和图片 p 为一对正样本对,图片 a 和图片 n 为一对负样本对。则三元组损失表示为:

基于深度学习的行人重识别研究综述(上)

如下图所示,三元组可以拉近正样本对之间的距离,推开负样本对之间的距离,最后使得相同ID的行人图片在特征空间里形成聚类,达到行人重识别的目的。

基于深度学习的行人重识别研究综述(上)

论文[8]认为原版的Triplet loss只考虑正负样本对之间的相对距离,而并没有考虑正样本对之间的绝对距离,为此提出改进三元组损失(Improved triplet loss):

基于深度学习的行人重识别研究综述(上)

公式添加项基于深度学习的行人重识别研究综述(上),保证网络不仅能够在特征空间把正负样本推开,也能保证正样本对之间的距离很近。

(3) 四元组损失(Quadruplet loss)

基于深度学习的行人重识别研究综述(上)

四元组损失是三元组损失的另一个改进版本。顾名思义,四元组(Quadruplet)需要四张输入图片,和三元组不同的是多了一张负样本图片。即四张图片为固定图片(Anchor) a ,正样本图片(Positive) p  ,负样本图片1(Negative1) n1 和负样本图片2(Negative2) n2 。其中 n1 和 n2 是两张不同行人ID的图片,其结构如上图所示。则四元组损失表示为:

基于深度学习的行人重识别研究综述(上)

其中α和β是手动设置的正常数,通常设置β小于α,前一项称为强推动,后一项称为弱推动。相比于三元组损失只考虑正负样本间的相对距离,四元组添加的第二项不共享ID,所以考虑的是正负样本间的绝对距离。因此,四元组损失通常能让模型学习到更好的表征。

(4)难样本采样三元组损失(Triplet loss with batch hard mining, TriHard loss)

难样采样三元组损失(本文之后用TriHard损失表示)是三元组损失的改进版。传统的三元组随机从训练数据中抽样三张图片,这样的做法虽然比较简单,但是抽样出来的大部分都是简单易区分的样本对。如果大量训练的样本对都是简单的样本对,那么这是不利于网络学习到更好的表征。大量论文发现用更难的样本去训练网络能够提高网络的泛化能力,而采样难样本对的方法很多。论文[10]提出了一种基于训练批量(Batch)的在线难样本采样方法——TriHard Loss。

TriHard损失的核心思想是:对于每一个训练batch,随机挑选 P 个ID的行人,每个行人随机挑选 K 张不同的图片,即一个batch含有 P×K 张图片。之后对于batch中的每一张图片 a ,我们可以挑选一个最难的正样本和一个最难的负样本和 a 组成一个三元组。

首先我们定义 a 和为相同ID的图片集为 A,剩下不同ID的图片图片集为 B,则TriHard损失表示为:

基于深度学习的行人重识别研究综述(上)

其中 α 是人为设定的阈值参数。TriHard损失会计算 a 和batch中的每一张图片在特征空间的欧式距离,然后选出与 a 距离最远(最不像)的正样本 p 和距离最近(最像)的负样本 n 来计算三元组损失。通常TriHard损失效果比传统的三元组损失要好。

(5)边界挖掘损失(Margin sample mining loss, MSML)

边界样本挖掘损失(MSML)是一种引入难样本采样思想的度量学习方法。三元组损失只考虑了正负样本对之间的相对距离。为了引入正负样本对之间的绝对距离,四元组损失加入一张负样本组成了四元组。四元组损失也定义为:

基于深度学习的行人重识别研究综述(上)

假如我们忽视参数 α 和 β 的影响,我们可以用一种更加通用的形式表示四元组损失:

基于深度学习的行人重识别研究综述(上)

其中 m 和 n 是一对负样本对,m 和 a 既可以是一对正样本对也可以是一对负样本对。之后把TriHard loss的难样本挖掘思想引入进来,便可以得到:

基于深度学习的行人重识别研究综述(上)

其中 a,p,m,n 均是batch中的图片,a,p 是batch中最不像的正样本对,m,n 是batch 中最像的负样本对,a,m 皆可以是正样本对也可以是负样本对。概括而言TriHard损失是针对batch中的每一张图片都挑选了一个三元组,而MSML损失只挑选出最难的一个正样本对和最难的一个负样本对计算损失。所以MSML是比TriHard更难的一种难样本采样,此外基于深度学习的行人重识别研究综述(上)可以看作是正样本对距离的上界,基于深度学习的行人重识别研究综述(上)可以看作是负样本对的下界。MSML是为了把正负样本对的边界给推开,因此命名为边界样本挖掘损失。总的概括,MSML是同时兼顾相对距离和绝对距离并引入了难样本采样思想的度量学习方法。其演变思想如下图:

基于深度学习的行人重识别研究综述(上)


(6)各种loss的性能对比

在论文[11]之中,对上面提到的主要损失函数在尽可能公平的实验的条件下进行性能对比,实验结果如下表所示。作为一个参考

基于深度学习的行人重识别研究综述(上)


(未完待续)

雷峰网特约稿件,未经授权禁止转载。详情见转载须知

基于深度学习的行人重识别研究综述(上)

分享:
相关文章
当月热门文章
最新文章
请填写申请人资料
姓名
电话
邮箱
微信号
作品链接
个人简介
为了您的账户安全,请验证邮箱
您的邮箱还未验证,完成可获20积分哟!
请验证您的邮箱
立即验证
完善账号信息
您的账号已经绑定,现在您可以设置密码以方便用邮箱登录
立即设置 以后再说