RethinkingPAR-行人属性识别

论文Rethinking of Pedestrian Attribute Recognition提供了valencebond/Rethinking_of_PAR

数据

论文中尝试了多个行人属性识别数据集(PETA/RAP/PA100K/RAP2),在分析这些数据集的不足后重新创建了两个数据集:

  1. PAR\(_{zs}\):基于RAP数据集;
  2. PETA\(_{zs}\):基于PETA数据集。11241张训练集、3826张验证集、3933张测试集,35个属性。

因为RAP数据集的下载需要经过申请,流程繁琐,所以仅采用了PETA\(_{zs}\)数据集进行实验。

PETA\(_{zs}\)

论文调整了PETA数据集的文件存放,在Rethinking_of_PAR/data/PETA/提供了标签文件dataset_zs_run0.pkl,另外PETA的图像数据使用另一个仓库的预处理:

  1. peta mat #6
  2. deeplearning_project/pedestrian_attribute_recognition/

本仓库参考上述实现,将标签文件和图像文件存放在同一路径下:Baidu Drive 密码: 7a1q

1
2
3
4
5
6
7
8
.
└── PETA
├── dataset_zs_run0.pkl
└── images
├── 00001.png
├── 00002.png
├── 00003.png
├── 00004.png

属性解析

论文并没有完全采用PETA提供的105个属性,而是选择其中的35个属性标签,具体属性标签以及含义参考PETA (35 in 105)

对于行人属性数据集,依次标注不同区域的属性:

  1. head region(头部区域)
    1. 'accessoryHat':配饰帽子
    2. 'accessoryMuffler':配饰围巾
    3. 'accessoryNothing':无配饰
    4. 'accessorySunglasses':配饰太阳镜
    5. 'hairLong':长发
  2. upper region(上部区域)
    1. 'upperBodyCasual':休闲上衣
    2. 'upperBodyFormal':正式上衣
    3. 'upperBodyJacket':夹克外套
    4. 'upperBodyLogo':带有标志的上衣
    5. 'upperBodyPlaid':格子上衣
    6. 'upperBodyShortSleeve':短袖上衣
    7. 'upperBodyThinStripes':细条纹上衣
    8. 'upperBodyTshirt':T恤衫
    9. 'upperBodyOther':其他上衣
    10. 'upperBodyVNeck':V领上衣
  3. lower region(下部区域)
    1. 'lowerBodyCasual':休闲裤
    2. 'lowerBodyFormal':正式裤子
    3. 'lowerBodyJeans':牛仔裤
    4. 'lowerBodyShorts':短裤
    5. 'lowerBodyShortSkirt':短裙
    6. 'lowerBodyTrousers':长裤
  4. foot region(脚部区域)
    1. 'footwearLeatherShoes':皮鞋
    2. 'footwearSandals':凉鞋
    3. 'footwearShoes':鞋子
    4. 'footwearSneaker':运动鞋
  5. accessory/bag(配件/包)
    1. 'carryingBackpack':携带背包
    2. 'carryingOther':携带其他物品
    3. 'carryingMessengerBag':携带信使包
    4. 'carryingNothing':无携带物品
    5. 'carryingPlasticBags':携带塑料袋
  6. age(年龄)
    1. 'personalLess30':小于30
    2. 'personalLess45':小于45
    3. 'personalLess60':小于60
    4. 'personalLarger60':大于60
  7. gender(性别)
    1. 'personalMale':男性
  8. others(其他)

训练

模型

参考论文实现,使用resnet50测试PETA\(_{zs}\)数据集,使用pytorch 1.8.1 + torchvision 0.9.1提供的ResNet预训练模型。

损失函数

Rethink_of_PAR的关键在于损失函数的设计,除了常规的BCELoss以外,论文还设计了加权函数来缓解不同属性标签数据量不平衡的问题。

实验

最好的的训练结果如下,本仓库实验结果和论文保持一致:

DatasetModelmAAccPrecRecF1
valencebond/Rethinking_of_PAR(Origin Paper)PETA_zsResNet5071.4358.6974.4169.8272.04
This ReposPETA_zsResNet5070.37459.10675.23969.82272.429
This ReposPETA_zsResNet10171.98059.80975.48670.58372.952

更多的实验查看RethinkingPAR/docs/train.md。尝试了多种训练配置,包括

  1. 不同的图像长宽比(256/192 vs. 256/128);
  2. 不同的训练预处理(w/wo Pad+RandomCrop);
  3. 不同的批量大小(64 vs. 256)。

从训练结果来看,

  1. 最好的图像缩放比例为256/192
  2. 对于更大模型(resent101),可以采用更丰富的图像预处理实现;
  3. 批量预处理的提高对模型性能没有提升。