[论文复现]A Richly Annotated Dataset for Pedestrian Attribute Recognition
[论文复现]A Richly Annotated Dataset for Pedestrian Attribute Recognition
整体介绍
复现了一篇行人识别的论文
数据集介绍
实验中采用peta数据集进行模型训练和测试。peta数据集存于./dataset/peta中。由于数据集有19000张图片,过于庞大,所以提交文件中只有数据集标注的文件。
从数据集标注文件中来看,将19000张图片按5:1:4分成训练集、验证集和测试集。每个数据包含了105 个特征,但有的特征出现次数太少,即使采用加权交叉熵损失函数也不太适合,所以在训练时只选取了其中35个特征。数据集详细介绍参见./dataset/peta/README.
主要运行环境
python2.7+pytorch1.4
模型构建
主要采用论文中提到的deepmar模型。但论文中用的backbone是CaffeNet,而这里复现时用的ResNet50作为backbone。
对于预训练好的ResNet50,除去其最后的全连接层,改用自己的全连接层。最终因为要联合训练35个特征,所以输出为35维向量,采用加权交叉熵损失函数。加权的作用是减轻特征数量差距太大的影响。
论文中的网络结构如下
论文中采用图©所示的backbone和(b)中的整体架构。而在本实验中只是将©的backbone换成ResNet50。
损失函数具体形式为
其中表示数据集总量,表示特征总量,表示第个样本的第个特征真实值({0,1}),表示第个特征所占比重。
模型训练和测试
在当前目录运行sh script/experiment/train.sh进行训练。
在当前目录运行sh script/experiment/test.sh进行测试。
由于在提交文件中不包含训练数据所以无法运行shell,但在./exp/deepmar_resnet50/peta/partition0/run1/model路径下有训练好的模型(迭代1次和50次)
下图是在训练至第70个eopch时的结果
对比论文中的结果
可以发现采用ResNet50训练的结果得到全方位的提升。
下面是对于demo中的样本的检测结果。中间是实际的标注,右边是用迭代50次的模型得到的结果,对比发现预测出的特征已经和实际值非常接近,表明该方法的性能较好。