Rethinking of Pedestrian Attribute Recognition: Realistic Datasets and A Strong Baseline

论文:https://arxiv.org/pdf/2005.11909v2.pdf
代码:https://github.com/valencebond/Strong_Baseline_of_Pedestrian_Attribute_Recognition

1 论文

本文分析了行人重识别常用数据集PETA和RAP的缺陷,对数据集进行了修正,得到了 P E T A z s PETA_{zs} PETAzs R A P z s RAP_{zs} RAPzs两个数据集。并且作者提出了强的baseline模型已经具有了很好的属性定位能力,无需使用额外的注意力机制或STN进行关注区域定位。

PETA和RAP数据集的缺陷

在这里插入图片描述PETA和RAP数据集中最大的缺陷是,训练集中和测试集中包含了同一人的图像且图像间的差异很小,如Fig. 1(a)(b)所示,这和实际的项目应用场景是不符的。这会造成各算法的测试结果优于其实际应用结果,如Fig. 2所示,作者使用PETA测试数据集中不同重叠度的数据子集进行测试,可以明确发现当训练集和测试集没有人员重复时,模型的准确率会显著下降
在这里插入图片描述修正PETA和RAP数据集

作者统计了原有PETA数据集划分方式下,训练集和测试集中来自于同一人的数据重复情况,如Fig. 3(a)所示,可以看出训练集和测试集中出现了很多的同一人的情况,具体是在训练集和测试集中,有1106个人重复出现,占测试集总人数的26.91%,重复出现的人的总图像量占总测试集的57.7%。而在实际应用中,基本上不会出现训练集和测试集是同一人的情况,Fig. 2也给出了,在PETA数据集上,如果只用不重复人的测试图像进行模型测试,精度相比使用现有的测试集会下降很多,所以非常有必要对现有的数据集进行修正。
在这里插入图片描述作者提出了下面五个原则进行数据集的修正:
在这里插入图片描述
I I I是指Identity,指人数;N是图片数量;R是指各属性正样本的比例;T指阈值。

1,2,3是为了保证训练、验证和测试集分别包含的是不同人的图像,比例为3:1:1,且验证集中包含的人数和测试集包含的人数差异要小于 ∣ I a l l ∣ × T i d |I_{all}| \times T_{id} Iall×Tid T i d T_{id} Tid设置为0.01;

4,5是为了保证训练集和测试集的属性分布(不理解作者的意图), T i m g T_{img} Timg设置为300, T a t t r T_{attr} Tattr设置为0.03.

作者按照上述五条规则对PETA和RAP数据集进行了重新划分,得到了 P E T A z s PETA_{zs} PETAzs R A P z s RAP_{zs} RAPzs数据集,如下表所示:
在这里插入图片描述Baseline

数据集
在这里插入图片描述
N表示图像数量,M表示属性数量, y i y_i yi表示各图像的属性label,这里是默认按照对各属性进行二分类判别的。

损失函数

因为把行人属性识别看成了是多个二分类问题,因此采用sigmoid激活函数,损失函数表示为:
在这里插入图片描述 w j w_j wj是为了解决属性不均衡问题引入的参数,可以表示为:

在这里插入图片描述 r j r_j rj表示训练集中第 j j j个属性为正的比例值。

度量标准

采用了五个度量标准:

  • 一个基于label的标准(mA),计算各属性的正样本和负样本分类的准确率的均值;
  • 四个基于instance的标准,分别是Acc、P、R和F1;
  • 主要使用mA和F1作为度量标准;

训练细节

  • 骨干网络:ResNet50
  • 输入图像大小:256 * 192,使用随机水平镜像
  • SGD,momentum=0.9,weight decay = 5e-4
  • 初始学习率 0.01
  • batchsize = 64
  • plateau学习率衰减策略,衰减比例0.1
  • 训练30个epoch

实验结果
在这里插入图片描述existing表示原有数据集;zero-shot表示处理后的数据集,也就是 P E T A z s PETA_{zs} PETAzs

在这里插入图片描述在原有数据集上的对比,也可以作为各算法的效果对比。有三点发现:

  • PA100K中训练集和测试集人员重叠较少,结果更可信;
  • 作者使用ResNet50比MsVAA效果更好,后者使用ResNet101,参数量更多;
  • 相比于VAC,使用了更多的数据增广策略,网络上也有两个额外的分支网络,作者使用ResNet50参数量少,但效果相当;
  • 将线性分类器替换为基于余弦距离的分类器,模型的效果可以小幅度提升;
  • 对各属性 分类器的权重进行归一化可以使其独立于正样本,有助于提升性能。

在这里插入图片描述作者实现的baseline效果更好的原因是,一个效果更好的baseline可以进行更好地进行感兴趣区域的定位。作者用GradCAM测试了其方法定位的感兴趣区域,发现已经很准确了,所以无需使用额外的注意力机制了。

在这里插入图片描述

2 代码分析

作者使用了四个trick,分别为:

  • sample-wise loss not label-wise loss;

    loss = loss.sum() / batch_size if self.size_average else loss.sum()
    
  • big learning rate combined with clip_grad_norm;

    clip_grad_norm_(model.parameters(), max_norm=10.0)
    
  • augmentation Pad combined with RandomCrop;

    train_transform = T.Compose([
            T.Resize((height, width)),
            T.Pad(10),
            T.RandomCrop((height, width)),
            T.RandomHorizontalFlip(),
            T.ToTensor(),
            normalize,
        ])
    
  • add BN after classifier layer.

    self.logits = nn.Sequential(
                nn.Linear(2048, nattr),
                nn.BatchNorm1d(nattr)
            )
    

其余的也就是正常的训练resnet模型。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值