一种集成注意力机制的行人重识别方法与流程

文档序号:19682110发布日期:2020-01-14 17:31阅读:361来源:国知局
一种集成注意力机制的行人重识别方法与流程

本发明涉及互联网通信技术领域,尤其是涉及一种集成注意力机制的行人重识别方法。



背景技术:

行人重识别是利用计算机视觉技术判断不同相机的图像,或者视频序列中是否存在特定行人的技术,被广泛认为是图像检索的子问题。行人重识别技术可以在一个较大区域内跟踪一个人的轨迹,另外它在机器人技术、照片自动标注等方面也有着很高应用价值。行人重识别是学术界和工业界都非常关注的技术问题,相比于比较成熟的人脸识别技术,它依然是计算机视觉领域的难题。其主要挑战是识别和适应行人在不同相机上呈现的外貌变化,比如角度、姿势、色彩、遮挡等。现有行人重识别方案一般基于深度学习,即利用卷积神经网络(convolutionalneuralnetwork,下面称cnn)提取图片的特征向量,通过计算特征向量的相似度判断不同照片是否属于同一人。cnn是一种层级神经网络,其中低层对应图片的底层特征,高层对应着更为复杂的纹理特征。cnn通过层次结构自动学习得到输入图片的特征向量,但普通的cnn对于图片的局部特征同等看待,这样提取出的全局特征容易受到背景信息、噪音的干扰。

注意力机制模拟人脑的注意力机制,对不重要的部分投放较少注意力,对重要的部分投放更多注意力(其中注意力可理解为权重)。因此注意力机制可以灵活捕捉全局和局部的联系,有助于校准错位的图像,增强特征向量对姿势变化的适应性,消除噪音的干扰。在应用中注意力机制一般作为模块,作为卷积层或循环层的下一层嵌入到cnn中。已有的技术方案把注意力模块嵌入到cnn的尾部,即在cnn最终输出之前先经过多个并行的身体部位检测器提取出多个身体部位特征,最终组合输出特征向量。其中身体部位检测器就是注意力模块,每个注意力模块的掩码矩阵参数不同。具体实现来说可分为以下几个步骤:⑴每个身体部位检测器从cnn接收相同的全局张量输入,首先进行卷积操作得到了掩码矩阵。⑵对掩码矩阵进行sigmoid运算。⑶对⑵的结果进行tile运算,即在通道维度上的广播运算。⑷把⑴和⑶的结果进行element-wise运算,即对两个张量进行点积运算。⑸对⑷的结果在特征图维度上进行平均池化操作。⑹对⑸的结果经过全连接层处理实现降维。⑺把多个⑹的结果进行拼接操作,组合成全局特征。其中⑴-⑹是实现的是身体部位检测器,即注意力模块部分。

上述技术方案把注意力模块直接嵌入到cnn的末尾,而且是嵌入了多个注意力模块,每个注意力模块作为一个并行分支。这种全局注意力方案的缺点是缺少对图片原始特征的采样能力,即采样不够细腻,在最终结果上容易造成较大的全局误差。另外因为是有多个分支,网络模型整体的计算量较大。另一方面注意力层次不够丰富,全局特征的提取效果不尽理想。从注意力模块设计来看,设计比较简单,只是用到卷积层、sigmoid层而没用到全连接层进行更深的学习,这样得到的掩码矩阵比较粗糙。从最终应用结果上实验结果,发现抠图时抠人抠得不好,人容易变大或变小,重识别的准确率提升不够理想。



技术实现要素:

针对上述技术问题,本发明提供了一种集成注意力机制的行人重识别方法,提出了多粒度注意力机制,把该机制集成到cnn中,以提升cnn的特征提取水平,增强cnn的不规则采样能力,cnn整体对行人图片具有多粒度注意力,更强地适应行人姿势、背景等变化,以适应行人重识别任务。

本发明设计了一种新的注意力模块,通过在cnn中嵌入多个注意力模块形成新的注意力机制,即多粒度注意力机制,以面向行人重识别任务。本发明的行人重识别任务方案可分为以下几个步骤:

⑴构造嵌入多粒度注意力机制的cnn。

⑵把train数据集输入cnn,训练cnn,得到cnn模型。其中cnn的损失函数为分类损失和trihard损失之和。

⑶把gallery数据集输入到⑵的模型中,得到一个图片特征数据库。其中每个特征都有唯一的行人id。

⑷输入query图片得到特征,检索⑶中的图片特征数据库计算出相似度,选出相似度最高的这张图片,这张gallery图片的行人id就是query图片的行人id。

本发明具有如下有益效果:

1.本发明提出了一种面向行人重识别任务新的注意力机制,即多粒度注意力机制,其应用方式将多个注意力模块嵌入到cnn的相邻的两个stage之间,使cnn具有多个粒度的采样能力,不同粒度的采样形成互补优势,优势在于多粒度注意力、应用范围广、灵活等特点,易于集成创新。

2.本发明设计了一种新的注意力模块,相较于已有的注意力模块增加了2个全连接层,从而具有更好的非线性学习能力,能够捕捉到更多的局部与全局的联系,优势在于注意力强、轻量级、易训练。

3.基于本发明的改进形式,比如在注意力模块中增加全连接层、注意力模块应用位置和个数的变化等,即在不脱离本发明原理的前提下,做出的若干改进和润饰,也应视为本发明的保护范围。

附图说明

图1为本发明集成注意力机制的cnn流程示意图;

图2为本发明注意力模块的结构示意图;

图3为本发明注意力模块在实施例中的应用结构示意图。

具体实施方式

现将结合附图对本发明的技术方案进行完整的描述。以下描述仅仅是本发明的一部分实施案例而已,并非全部。基于本发明中的实施案例,本领域技术人员在没有作出创造性劳动的前提下所获得的所有其他实施案例,都属于本发明的权利保护范围之内。

我们规避了现有技术方案中注意力模块性能不好、计算量大、应用方式不好等缺点,并在已有注意力研究成果基础上对注意力模块的结构进行创新,设计了一种新的注意力模块,相应提出了多粒度注意力机制。我们把该机制集成到cnn中,以提升cnn的特征提取水平,增强cnn的不规则采样能力。多个注意力模块嵌入到cnn的不同层上,使cnn具有多个粒度的采样能力,不同粒度的采样形成互补优势。这样cnn整体对行人图片具有多粒度注意力,更强地适应行人姿势、背景等变化,以适应行人重识别任务。

本发明设计新的注意力模块,通过在cnn中嵌入多个注意力模块形成新的注意力机制,即多粒度注意力机制,以面向行人重识别任务。本发明的行人重识别任务方案可分为以下几个步骤:

⑴构造嵌入多粒度注意力机制的cnn。

⑵把train数据集输入cnn,训练cnn,得到cnn模型。其中cnn的损失函数为分类损失和trihard损失之和。

⑶把gallery数据集输入到⑵的模型中,得到一个图片特征数据库。其中每个特征都有唯一的行人id。

⑷输入query图片得到特征,检索⑶中的图片特征数据库计算出相似度,选出相似度最高的这张图片,这张gallery图片的行人id就是query图片的行人id。

补充说明的是,行人重识别应用把图片分为3种类型train、gallery、query,其中train用来训练模型,gallery是用来检索匹配的行人图片数据集,query是要查询的图片。train和gallery的行人id集合是一致的,并且包含query的行人id集合。cnn的损失函数是神经网络执行反向传播的起点,当该损失函数值最小时认为模型收敛。

其中⑴部分,我们采用含有多个stage的cnn。所谓stage,可以认为是一种特殊风格的cnn模块,由若干个结构相同的bottleneck模块拼接组成。以resnet50为例,含有4个stage,被命名为stage1、stage2、stage3和stage4,分别由3、4、6、3个bottleneck模块拼接组成。设定cnn含有m个stage,命名为stage1、stage2……stagem。我们的多粒度注意力机制即在每两个相邻stage间插入我们设计的注意力模块,故共插入m-1个模块。多粒度注意力机制包括多个注意力模块。注意力模块近似于一层掩码,对前一个stage的输入起到过滤作用。在加入多粒度注意力机制后的cnn中,注意力模块对前一个stage的输入进行不规则采样。

多粒度注意力机制应用效果如图1所示。stage1在stage2的前面,就空间维度而言前者提取特征模式的粒度比后者小,即对应着更小范围内的特征水平。同样注意力模块1比模块2过滤更小粒度的特征。因为cnn可以嵌入多个注意力模块,多个注意力模块就会相互协作,使cnn具有多个层级的注意力。就注意力模块的使用方式而言,我们的注意力机制采用串行模式,嵌入到cnn的多个位置,而上述方案是采用并行模式,嵌入到cnn末尾。相对来说我们的计算量更小,而且注意力的效果更好。已有方案的注意力机制的缺陷已在第二部分有所介绍,在此不再重复。

就注意力模块具体设计而言,我们的注意力模块特别加入了两个全连接层,可以实现更好的特征采样。其中第一个全连接层起到空间维度的压缩作用,第二个全连接层起到空间维度的还原作用,两个全连接层的组合运用使注意力模块比起已有的注意力模块拥有更好的注意力,因为全连接层进行的是非线性学习,能够捕捉到更多的局部与全局的联系。

下面介绍我们的注意力模块的具体设计。注意力模块由卷积层(记为conv)、relu层、全连接层1(记为fc1)、全连接层2(记为fc2)、sigmoid层、tile层和element-wise层依次拼接而成。conv主要在通道维度上进行学习,并将通道数量压缩为1,这样每张图片的输入张量的规模变成了二维平面。relu层起到非线性变换的作用。fc1起到在空间维度上的压缩作用,fc2起到在空间维度上的还原作用,fc1和fc2整体起到对特征图的筛选过滤作用。sigmoid层执行sigmoid运算,其输出结果相当于每个通道上的掩码矩阵。tile层在通道维度上进行广播运算,方便后面的element-wise操作。elment-wise层对经过tile运算的张量和原输入张量进行相乘运算(哈达马积),类同于矩阵的点积运算。至此,输出结果比起最开始输入的张量已经具有了注意力效果。注意力模块整体设计如图2所示。

注意力模块参数设置:conv的输入通道数为c,输出通道数为1,卷积核大小为1x1,偏置为true。fc1层输入特征数为hxw,输出特征数为h。fc2层的输入特征数为h,输出特征数为hxw。

注意力模块计算流程:

step1:conv接收前一个stage输入,记为a,规模为(nxcxhxw),并执行卷积运算。其中,n为训练批次大小,c为通道数量,h为特征图高度,w为特征图宽度。输出规模变为(nx1xhxw)。

step2:执行groupnorm操作,即在特征维度上进行归一化操作。其中,groupnorm比batchnorm减少了对训练批次大小的依赖。

step3:relu层接收groupnorm后的输出,执行relu运算。

step4:fc1层接收relu层输出,执行全连接运算。输出规模变为(nx1xhx1)。

step5:fc2层接收fc1层输出,执行全连接运算。输出规模变为(nx1xhxw)。

step6:对step5输出结果执行sigmoid运算。

step7:对上一步结果执行在通道维度上的广播运算,输出规模变为(nxcxhxw),记为b。

step8:对a与b进行elment-wise运算,运算结果记为c,c的规模是(nxcxhxw)。输出c到后一个stage。

模块复杂度分析:conv初始化的参数个数为c+1,fc1、fc2的参数个数都为h2xw,故模块的参数总数是2h2xw+c+1。可以发现我们设计的注意力模块的参数量是轻量级的,因此本注意力模块易于集成。

实施例

本发明以把注意力机制集成到resnet50中作为应用实例来说明。resnet50于2015年被提出,因其简单与实用并存的特点在深度学习领域产生重要影响,在检测,分割,识别等领域被纷纷使用。

resnet50由1个卷积层、1个最大池化层、4个由bottleneck模块组成的stage、1个全局均值池化层、1个输出维度为1000的全连接层拼接组成。其中4个stage,我们分别命名为stage1、stage2、stage3和stage4,4个stage又分别由3、4、6、3个bottleneck模块拼接组成。我们要在stage1和stage2间插入注意力模块1,在stage2和stage3间插入注意力模块2,在stage3和stage4间插入注意力模块3。因为stage1、stage2、stage3的输出维度分别是nx56x56x256、nx28x28x512、nx14x14x1024,注意力模块1、2、3的输入和输出亦为nx56x56x256、nx28x28x512、nx14x14x1024。需要强调的是因为实际任务的分类数量不同,最后一个全连接层的输出维度1000应改为实际分类数目。将本文发明的注意力机制集成到resnet50的应用实例可由图3表示(其中n表示样本数目,c表示实际分类数目,右侧括号内表示输出规模)。除了resnet50,resnet101、resnet152等模型均可与本注意力机制融合。需要指出的是以上强调的只是如何把该注意力机制跟cnn融合,融合之后的新模型在实践中可用于智能安防、智能寻人系统、无人超市、相册聚类等多个应用场景,在此不再过多叙述。

以上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,所作出各种变换或变型,均属于本发明的范畴。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前下,本发明还会有各种变化和改进,本发明要求保护范围由所附的权利要求书、说明书及其等效物界定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1