基于自然语言的跨模态行人重识别技术研究
万方数据知识服务平台
第二章 跨模态行人重识别理论基础
2.1 文本-图像检索技术
基于文本信息的跨模态行人重识别本质是基于文本-图像两个模态的行人重识别, 由于跨的两个模态分别是文本和图像, 所以其解决思路和图文检索问题十分相似,不过根据实际任务中涉及到的更多的是图文检索中的从文本向图像进行检索的, 所以基于文本信息的跨模态行人重识别问题在一定程度上可以理解为图文检索问题。
图像检索根据检索的对象的不同,可以分成基于文本的和基于内容的图像检索, 两者的主要区别是检索要素的形式不同, 从名称字面的意思就可以大概理解,
-
基于文本的图像检索多是根据文本信息实现对图像的检索,常见的包括图像名称、作者和图像规格等信息。 该类图像检索更加接近于传统文本检索技术。
-
而基于内容的图像检索更多的是对图像可视化元素进行分析, 允许通过输入一张已知的目标图像, 而后根据图像提取得到的特征在图像数据库中进行检索, 根据已知特征发现相似图像。
-
基于文本信息的跨模态行人重识别任务可以归属于基于内容的图像检索。
基于内容的图像检索分类:一种是直接检索模型, 另一种是先生成后检索模型。
-
直接检索模型一般是对图片和文本分别进行编码,然后利用函数将图片特征和文本特征信息所在的不同特征空间进行融合,投射在同一个特征空间之后, 就可以通过计算向量内积或者余弦相似度等相似度度量来进行分析。
-
在生成预测标签的过程中,我们利用大文本数据的关系模型 P(S | I),如果想通过大文本来解释图像 I,给定一段描述大文本 S_q,通过对数似然比中的每一个词汇 I,分别计算 P(S_q | I),找出翻译关系小概率事件之后,根据实际情况选取 k 的大小,最后取前 k 个作为最终结果。而对于另外的图文翻译关系代表序,由于文本表述相对于其他表述来说更富有表达性,可能无须特别去除不良情绪影响,可直接比较原标签模型,因此在计算 P(S | I) 的时候,一般是直接以原始输入的形式进行运算。
2.2 卷积神经网络
卷积层中最主要的三个不同的特性分别是: 局部连接、参数共享、多卷积核, 这些特性降低了计算的复杂度,同时也降低了整体参数量,促进了卷积神经网络成为深度神经网络 。
池化层
又称为下采样层(Down Sampling) , 池化操作用于减少特征图的维度,有利于特征图的参数体量的优化。根据池化计算操作不同,常见池化可分为最大值池化和平均值池化:
归一化层
批量归一化有效的解决了网络内部的数据分布一直变化的问题。
神经网络的训练过程,其实就是在根据输入的数据集进行的一个渐变的拟合过程。 在实际拟合过程中, 数据虽然在层之间进行传递, 但是实际上针对每层来说, 它的数据的分布一直在变, 那么每个不同的卷积层在需要学习的分布也是一直在变的,不变因素会不断影响深度神经网络间的协同工作,从而影响整个网络的实际效果。 所以在批量归一化(Batch Normalization, BN) 层的概念没有被提出来之前,早期加深后的神经网络无法训练,研究人员将这种现象命名为 Internal Convariate Shift(ICS) ,后期随着参数初始化方法以及增加 BN 层等的加入, 网络可以正常反向传播完成训练。
BN 层的计算方法 :
BN 层除了可以加快网络的训练和收敛的速度,使深层神经网络的训练收敛可以实现以外, 还可以使网络的输出不会很大,梯度就不会很小, 而且权值的更新跨度也不会很大。 所以说 BN 层的加入还可以有效缓解梯度爆炸以及梯度消失情况的发生。
另外, BN 层的加入使一个批量中所有训练样本同时被关联,避免出现神经网络仅仅是从某一单个训练样本进行学习拟合,因此网络的输入即使为同一个样本也不会过度拟合于单一训练样本,而是也取决于跟这个样本同属一个批次的其他样本。 同时训练过程中的样本批次的选取又是随机的,所以说 BN 层的加入一定程度上避免了神经网络过拟合情况的出现。
当 Batch 值过小,数据的分布变化加大使得反向传播过程中生成的梯度变化会相应地变大, 训练过程中迭代更新算法会上下震荡不利于网络收敛,批量过小也会导致一个批量的不同类别的样本产生不平衡分布的情况变多,迭代周期也会被加长, 这些种种因素最终都会不利于网络训练优化从而影响到训练效果。
激活函数
无论是卷积层还是 BN 层, 在整个网络中都属于线性变换操作,但是如果想要提升网络的拟合能力, 单纯的线性变换不能满足要求,所以需要在网络中加入非线性变换单元来增强网络的拟合能力,这些单元函数被称为激活函数(Activation Function) 。
为什么激活函数需要是单调连续的?
引入非线性:神经网络之所以能够逼近任何函数,归功于其非线性激活函数的使用。非线性允许单个神经元或神经网络层创建复杂的决策边界,这对于处理现实世界中复杂的数据模式是必要的。如果激活函数是线性的,那么无论网络有多深,最终模型的输出都仅仅是输入的线性组合,这大大限制了模型的表达能力。单调连续的激活函数确保了非线性的引入同时保持了某种“顺序”或“连续性”,这对于模型的学习是有益的。
支持有效的梯度下降优化:神经网络的训练依赖于梯度下降或其变种算法,这要求损失函数相对于模型参数是可导的。单调连续的激活函数确保了在整个输入空间内,梯度(或导数)是存在的。这一点对于计算参数更新的梯度是必需的。如果激活函数在某处不连续,那么在那一点的梯度可能不存在,这会阻碍梯度下降法的应用,从而影响模型的训练和收敛。
-
Sigmoid 函数
-
Tanh 函数
-
ReLU 函数
函数在正值部分斜率为1,负值部分取零,该函数实现了在同一时间只有部分神经元会不为零,也就是被激活,从而实现了稀疏网络的目的,有效减少了过拟合情况的发生。
但是该函数作为激活函数也存在一定的缺点,由于反向传播过程中正值神经元的梯度为 1,负值神经元梯度为 0。 部分神经元不会被激活,权重也就不能更新。ReLU 函数的另一个缺点就是函数是正向输出没有上限的, 也就是说函数的输出区间为[0, +无穷],不是零均值的。所以在实际使用中, 通常会优化函数,在函数中加入一个上限数值来进行优化,避免出现数据漂移的问题。 具体函数定义如公式 所示, n 值为设置的上限
-
Swish 函数
与其他常见激活函数不同,该函数不是一个非单调函数,于 ReLU 函数对比, 如图所示, Swish 函数以及一阶导数相对于其他函数图形更加平滑连续, β 是个可通过学习得到的参数,也可根据经验设置为固定的数值。
激活函数 Mish
2.3 多模态理论知识
除了本文研究的基于文本和图像信息的多模态行人重识别之外, 常见的多模态行人重识别主要包括以下几方面交叉模态的相关任务:
2.4 多模态学习分类
多模态学习包含模态映射、 模态对齐、 多模态信息融合等子问题
看图说话(Image Captioning) 任务就属于模态间的映射问题,视觉问答(Visual Question Answering) 就包含多模态信息融合的问题 ,本文的利用自然语言文本信息来检索大规模数据集中的行人图片的研究属于模态间对齐问题 。
在多模态学习过程中,需要分别学习两种模态的表示,同时由于需要建立模态之间的对应关系,所以还需要已知实体在其中一种模态的特征表示与另一种模态中的特征表示之间的对应关系,一般是联合分布的形式。 通过学习两种模态的表示和两个模态之间的联合分布形式对应关系三组参数之后, 一个表示中的概念被锚定在另一个表示中,反之亦然,从而可以有效地推广到新的对组。
零次学习
零次学习就像是让计算机学会“根据描述识别未见过的东西”。想象一下,如果有人描述给你一个你从未见过的动物,比如说它有长长的颈、黄褐色的皮肤和斑点,即使你从没见过长颈鹿,你也可能根据描述猜出来。零次学习的目标是让计算机做到类似的事情——根据已知的信息去理解和识别它从未直接学习过的东西。
零次学习的基础
共享的属性:这种学习方式依赖于一些基本的、可以共享的特征或属性,就像上面的例子中的“长颈”、“黄褐色的皮肤”和“斑点”。计算机通过学习这些属性,可以把它们组合起来,理解一些它从没直接学过的类别。
描述的力量:在零次学习中,每种事物(比如动物、物品)都可以通过一组属性来描述。计算机使用这些描述来建立对未知事物的认识,就好比使用拼图块来拼出整个图案。
零次学习的应用场景
图像识别:让计算机识别它从未见过的图片中的物体。比如,计算机虽然从没被直接告知什么是“水獭”,但它可以通过学到的“有毛”、“四肢”、“在水中生活”的属性来识别出水獭的图片。
语言处理:帮助计算机理解新的词汇或概念,即使它从未在训练数据中遇到过这些词汇。
推荐系统:即便用户从未对某类产品表达过兴趣,系统也能根据用户的已知喜好和产品的描述,推荐那些具有相似属性的未知产品。
2.5 自然语言处理模块概念(略)
2.6 基于文本的跨模态行人重识别
2.6.1 相关数据集
2.6.2 常见行人重识别评价指标
rank-N
CMC 曲线
正确率&召回率(Precision & Recall)
第三章 单模态行人重识别网络设计与实现
提到的单模态行人重识别网络, 都是基于图像来实现以图搜图的任务。
在行人重识别系统模块中,系统主要分为行人检测模块和网络主体部分。
行人检测
行人重识别首先需要做的就是将图片中的行人检测出来,称为 Gallery 输入。
目前较多的是直接选择现成的表现较好的检测框架使用。
行人重识别网络
行人重识别网络部分是对上一步中提取“Query 和 Gallery”的特征来测量相似度,并根据相似度对图像进行排序。 模型实现原理分为三个步骤,
-
特征提取, 目的是学习可以应对不同相机拍摄的人员变化的功能
-
度量学习, 通过度量学习将学习到的特征信息映射到新的特征空间,在新的特征空间中使同一类别中的人离得更近,不同类别中的行人图像距离变得更远
-
图像检索,即根据图片特征之间的距离进行分类,然后返回检索结果。
在行人重识别任务中,一部分是侧重于寻找和改进特征提取方法(关注的是找到较好的描述行人特征信息的特征表述模型),另一部分是找到用于特征比较的相似性度量(关注的是发现效果更好的关于行人特征计算相关度的度量方式)。
基于特征描述的方法包含表征学习和局部特征相关两类。
3.1 基于表征学习的方法
若干对行人图片作为网络的输入, 模型主体由两部分组成,一部分是分类子网络,而另一部分则是验证子网络。 前者分类网络部分负责预测行人图像的身份标签, 模型预测输出的结果和实际标签值进行计算分类损失。 后者验证网络部分主要是判断分类功能,只需要负责判断两者是否属于同一行人身份。
在实际操作中,网络模型不只是预测输出行人身份标签,还需要输出预测的行人属性,有了属性这一附加信息的加持,网络模型的泛化能力得到了提升。
缺点
也很明显,那就是表征学习容易在训练提供的训练集上出现过拟合的情况, 另外一点,当训练数据集中提供的行人身份标签信息过多的时候, 表征学习方法的训练的计算复杂度会明显增加,网络的实际训练过程会变得比较艰难
3.2 基于局部特征的方法
表征学习所提取出来的全局特征代表并不能满足对行人重识别研究优化的需求
图像分块方法中,通过分割方向的不同进行分类,可以分为垂直分割和水平分割,由于对行人图像中的人体来说,水平分割不符实际的直观识别感受,所以行人重识别领域一般提取局部特征切块的时候会选择垂直分割方式。
在上图中, 行人图像在垂直分割之后于网络设置分割的是六块,分割之后, 六部分图像块送入到 LSTM 循环神经网络进行处理, 同时, 在送入过程中要注意顺序问题,经过 LSTM 网络处理后得到的行人特征结果是融合之后的特征结果。 如上图所示,两张待检测的行人图像分别进入网络,经过分块和融合,得到了可以代表整张行人图像的行人特征信息。 但是图像分块的方式也存在缺点, 那就是图像分块的效果会直接影响到识别效果,如果图像在分块的时候出现上下对齐失败的情况,那么在实际模型对比过程中,很有可能导致出现识别结果错误的情况,所以在图像分块局部特征提取方法中,图像是否对齐对模型识别效果影响很大, 对齐的要求比较严格。
首先使用先验知识先将行人图像进行对齐,来避免对后面识别处理步骤造成影响, 一般来说可以采用的先验知识主要是经过处理的人体姿态或者骨架点信息。
3.3 基于度量学习的方法
度量学习也可以被称为距离度量学习或者相似度学习,该方式本身属于一种空间映射的方法。 在空间中,所有的数据都被转换成一个特征向量,并且相似样本的特征向量之间距离会更小, 从而通过该特性对数据进行分类识别
常见的损失函数,有对比损失[38]、三元组损失[39-41]、四元组损失[42]和难样本采样三元组损失[43]。
三元组损失:
四元组损失(Quadruplet loss) :
难样本采样三元组损失:
3.5 本章小结
本章主要介绍了单模态行人重识别技术的主要实现原理,并重点对比分析了特征描述的学习方法以及距离度量学习的方法
-
前者优点是训练学习的复杂度比较低,但是缺点就是模型对于行人身份标签的数量过于敏感,会影响网络的实际效果。
-
后者度量学习是直接计算特征之间的距离,其最大的优点在于可以很方便地扩展到新的数据集, 但是度量学习的收敛是比较困难的。
-
另外的对于特征描述方法下的局部特征方法,它解决了在之前行人重识别任务中只有全局特征表示中的瓶颈问题。
度量学习和表征学习相比较来说,
-
前者的方便之处在于神经网络模型的最后一般不需要连接一个全连接层,因此度量学习过程中,模型对于训练集的行人身份标签数量并不敏感,比表征学习的方法更加适用于数据集规模较大的情况。
-
在图像处理中的识别或者分类任务,度量学习比表征学习更加常用,在实验中的效果一般也好于表征学习方法。
-
现在很多的网络模型是同时包含这两方面[46]。 两者联合的方式也比较简单, 实际的联合过程一般是在普通度量学习方法的前提下, 在特征层后面添加一个全连接层进行身份分类训练, 该方式可以超越表征学习和度量学习表现效果。
第四章 跨模态行人重识别设计与实现
4.1 文本特征提取结构
文本特征提取和表示主要分为两种, 一种是整个句子构建成单个特征向量, 句子结构的变化对该种整句提取的方式的影响比较大, 另外一种则是以单词为单位提取文本特征。
4.1.1 Fisher Vector
4.1.2 文本分类卷积网络
4.1.3 卷积循环网络
上文提到的纯卷积文本模型有一个缺点,就是模型缺少时间依赖性。
在卷积神经网络隐藏层之上增添一个 RNN 网络。
4.2 图像特征提取网络
VGG16 和 Resnet50 网络
4.3 特征对齐模块
利用自然语言文本信息来检索大规模数据集中的行人图片是跨模态检索的一个更加细粒度的应用领域, 属于模态间对齐的问题,所以特征对齐模块就显得十分重要。
4.3.1 图像-文本联合特征表示
对于已有的视觉特征提取结构和文本编码器结构, 需要在每个输入单词上生成一个联合的文本-视觉特征表示。 生成联合表示的一个比较简单的解决方案就是将视觉特征向量与每个单词的单词特征向量连接起来。
4.3.2 注意力机制模块
关注模块可以主要分为三种不同的使用情况:空间关注注意力机制、 潜在语义关注以及单词注意力加权机制
4.3.3 特征空间映射
网络将文本和图像特征映射到了同一个语义特征空间。
上图的跨模态识别网络没有采用注意力等机制, 网络直接分成两路 CNN 分别提取两个模态的特征信息,最后接入两个全连接层分别得到固定维数大小的视觉特征和文本特征。 最后一个全连接层是权重共享的以使网络在权重更新中让文本和图像特征映射到同一个语义特征空间, 上图中的文本卷积神经网络中的第一个卷积层的权重可以使用 word2vec 来初始化。
4.3.4 损失函数部分
在设计损失函数的时候,首先应该明确的就是在当前任务下,判断是否匹配成功的标准是什么。
对于跨模态行人重识别任务, 一般可以分成 Id-身份级别损失和实例级别损失两种概念思路来理解。
-
Id-身份级别的含义是把每个行人身份标签和相关的文本描述信息看作一类,
-
实例级别的含义就是只将对应标注的图像-文本标注对看成正确匹配,相当于是不考虑行人身份信息
-
交叉熵损失函数
-
排序损失
-
跨模态投影匹配&跨模态投影分类损失