论文:http://xxx.itp.ac.cn/abs/1901.05742
代码:https://github.com/yuange250/video_pedestrian_attributes_recognition
1 综述
本文是基于视频的方法进行行人属性识别的,所谓的视频方法就是基于同一运动目标的序列输入图像,这在实际的业务场景中是很有必要的。因为,基于单张图像进行行人属性分析的模型高度依赖输入图像的质量,如图1所示,如果行人的某个关键部位被遮挡,那么算法肯定无法正确的识别该部位对应的属性。在实际应用中,行人属性分析往往基于的是行人的追踪结果,因此完全有获取序列输入的数据基础。
本文作者的主要贡献分为两部分,第一部分是对两个已经存在的数据集进行了标注更新,第二部分是引入了时间注意力方法帮助提升行人属性识别的准确率。
2 数据集
作者是对两个行人重识别的数据集MARS和Duke MTMC-VideoReID进行了重新标注,之所以要重新标注的原因是:如图3所示,同一个行人目标的运动过程,由于行人在持续的运动,可能某些属性会出现,某些属性会消失,因此,按照行人的ID进行属性标注是不准确的,应该按照行人的轨迹进行属性标注。
MARS数据集是对Market-1501数据集的扩充,包含来自于6个摄像头的1261个人的20478条运动轨迹,平均每条运动轨迹包含60帧图像;DukeMTMC-VideoReID是对DukeMTMC-ReID数据集的扩充,包含来自于八个摄像头的1402个人的4832条轨迹,平均每条轨迹包含160帧图像。
作者对MARS和DukeMTMC-VideoReID按照轨迹进行了重新标注,标注的属性共有两类14种,第一类是行为属性,第二类是表观属性。行为属性包括运动状态(行走、站立、奔跑、骑车和various)、姿态(前方、侧前方、侧面、侧后方、后方和various),表观属性共12种,如图2所示。
3 时间注意力方法
时间注意力方法其实就是在各属性判别的网络上加一个关键帧选取的子网络,也就是针对某一个属性选取图像序列中能给出最清晰的描述信息的关键帧,告诉模型依据这个关键帧的图像进行该属性的判别。 网络结构如图4所示:
训练时的输入图像为同一行人某条轨迹中随机选取的T幅图像,经骨干网络处理得到feature map后,分成两个分支,一个分支进行行为属性(动作和姿态)的判别,另外一个分支进行表观属性(衣物颜色、类型等共12中)的判别。每一个分支中又是针对每一个子任务进行了一个带有时间注意力机制的小网络,具体来说就是特征经过时间注意力网络形成一个掩模,这个掩模表示时间轴上(也就是T帧图像)中每一帧的权重系数,将其和每一帧的特征进行相乘的操作,然后经过线性层后进行属性分类。损失函数使用的交叉熵损失。时间注意力网络用的是两个级联的一维卷积,表示在时间轴上进行卷积操作。
测试时,对一个轨迹的序列图像,可以将其分组,每组图像数量等于T,每组分别进行前向推理,预测结果可以是多组结果的平均。
4 实验
从这副图上可以看出,同一个轨迹中的不同帧对某个属性学习的影响权重的确是不一致的,时间注意力机制就是要找到最合适的进行某个属性判别的关键帧。
CNN-RNN的方法更适合于进行动作识别,因为考虑了连续的视频帧之间的关系;基于单幅图像进行识别在某些特别细节的属性上可能略好。总体上来说,作者的方法更好。
Temporal Pooling是指ResNet50出来的特征经卷积、池化操作后,直接使用一个线性层分类;separate channel是指把行为类属性和外观类属性分成两个分支进行学习。可以看出作者最终使用的baseline + separated channels strategy + temporal attention strategy取得了最好的效果。