Improving Pedestrian Attribute Recognition With Weakly-Supervised Multi-Scale Attribute-Specific Localization
文章:https://arxiv.org/abs/1910.04562
代码:https://github.com/chufengt/iccv19_attribute
核心点
该论文主要从两点进行行人属性分析:
1.使用多尺度的特征进行行人属性的判别,低层次的特征用于局部属性的判别,如是否佩戴帽子;高层次的特征用于语义属性信息的判别,如性别;
2.对每一个属性都使用了一个属性定位模块(Attribute Localization Module,ALM),在输入图像上定位和当前属性相关联的图像区域,基于定位的区域进行属性的判别。ALM也属于一种视觉注意力机制,但是针对各个属性都去学习一个对应的ALM,并且作者使用了STN(Spatial Trabnsformer Net),用弱监督的方式进行了感兴趣区域的学习。ALM内部也结合了来自于SENet的channel混合的思想。
论文内容
1. 网络结构
2. 多尺度属性判别
行人属性包含了局部属性和全局属性两类,比如发型判别,就只取决于头部的子块,而行人的性别判定,就需要全局的语义特征。而对于CNN来说,低层网络的输出是高分辨率、低语义信息的低层特征,高层网络的输出是低分辨率、高语义信息的高层特征。 对于行人属性分析任务而言,低层特征和高层特征应该是互补的。因此作者借鉴了FPN做目标检测的思想进行行人属性的判别。
作者使用的骨干网络是BN-Inception,将inception_3b,inception_4b,inception_5b三个尺度的输出取出构建多尺度的特征,这三个尺度的特征的空间尺寸相对于输入图像的stride分别是8,16,32。具体的实现是,对三个尺度的输出特征,分别使用1 * 1的卷积,将其channel数变为256,而后两个尺度的特征进行上采样操作,空间尺度扩大2倍。因此,对于第一、第二个尺度的输出,进行的操作为:
f表示1 * 1的卷积操作, g表示的是对相邻的下一个尺度的输出进行的空间上采样的操作。这两个输出进行concatenate的操作,作为当前尺度的最终输出feature map。
对于第三个尺度的输出,因为其为最后一个尺度,因此,没有可供上采样的下一尺度的特征,唯一的操作是对其应用1 * 1的卷积,即:
3. ALM
ALM进行和属性相关的图像区域定位,作者认为一个注意力网络同时进行多个属性定位时,定位出来的不同属性间的感兴趣区域之间是存在混叠的,如下图的©(d)所示,因此作者针对每一个属性都单独训练了一个ALM。
ALM的具体结构如下图所示:
STN模块
在训练ALM的过程中,因为现有的数据集都没有标注各行人属性对应的bounding box的位置,因此作者采用了弱监督的方式进行ALM的训练。具体来说就是使用STN。STN是一个可微的模型,可以对feature map进行空间变换(裁剪、平移、缩放等)。本文中,作者使用了简化版本的STN,因为和某个属性相关的感兴趣区域可以当成一个bounding box进行处理。具体来说,是执行了下面的变换公式:
sx,sy是缩放参数,tx,ty是平移参数, (xis,yis)和(xit,yit)是第 i个像素的原始坐标和变换后的坐标。上面这个简化后的变换可以当成是一个可微的ROI池化,可以在未标注区域的情况下进行端到端的训练。为了加速收敛,作者限制 sx,sy∈(0,1), tx,ty∈(−1,1),因此可以使用sigmoid和tanh函数得到对应的值。
channel attention:
作者借鉴了SENet中的channel attention的思想,应用1 * 1的卷积操作先进行channel数量缩减,然后再使用1*1卷积进行channel数量的扩充。这是因为,每个ALM的输入都是来自于多个尺度的融合后的特征,如果这些不同尺度的特征对要某个属性的区域定位具有相同的影响力的话,可能不利于属性的定位。比如,针对细粒度的属性,就应该让低层的特征的影响力更大,对于全局的属性,就应该让高层的属性的影响力更大。因此作者使用channel attention的思想,就是想针对每一个尺度的每一个属性,让模型自己去选择最合适的尺度的属性,也就是去选择最合适的channel。
Deep Supervision
可以参考:https://blog.csdn.net/weixin_41274801/article/details/82973723
如Figure 2所示,对四个尺度的输出feature map,作者应用了deep supervison机制进行训练。所谓的deep supervison就是指在训练时,四个尺度的输出都和ground-truth计算损失。这是因为每一个ALM都应该直接根据损失值判定属性区域定位是否准确,如果对四个尺度的输出进行取平均或者取最大值的操作,最终的损失无法衡量每一个尺度对属性区域定位的准确性,可能造成某些尺度的ALM训练不充分。
在测试决断,四个尺度的输出进行投票,从四个尺度中选择针对某一属性的最精确的区域。
4. 损失函数
训练过程中,把所有的属性都变成了二分类属性。因此,损失函数使用的加权的sigmoid交叉熵损失。四个尺度的损失之和作为最终的损失。
实验效果
消融研究
Baseline是指BN-Inception;
前两行可以看出,加上ALM之后有很大提升,并且三个尺度都使用ALM比只对单个尺度使用ALM的提升更大。
对四个尺度的输出feature map像FPN那样进行逐元素的相加操作的效果不如concatenate好。在使用concatenate的基础上加上channel attention之后会有进一步的提升。
deep supervison中取最大值操作的效果要比取均值效果好。
可视化ALM学得的和属性相关的区域
对比其他算法
在三个数据集上都取得了更高的mA和F1值。
ALM包含的参数量为(4C+C2/8),4C为STN的参数量,C2/8为channel attention的参数量。ALM的参数量相比于原始模型的参数量很小。