这是一篇介绍Re-ID任务的tricks和baseline的论文。有很多地方也可以被别的任务借鉴,特别是特征匹配的任务,如检索。
Baseline
- 我们使用ImageNet上的预训练参数初始化ResNet50,并将完全连接层的尺寸更改为N。N表示训练数据集中的身份数量。
- 我们随机采样P个人和每个人的K个图像,组成一个训练批。一批大小等于B = P×K。在本文中,我们设置P = 16且K = 4。
- 我们将每个图像的大小调整为256×128像素,并使用零值将调整大小的图像填充10像素。然后将其随机裁剪为256×128矩形图像。
- 每个图像以0.5的概率水平翻转。
- 将每个图像解码为[0,1]中的32位浮点原始像素值。然后,我们通过分别减去0.485、0.456、0.406并分别除以0.229、0.224、0.225来标准化RGB通道。
- 模型输出ReID特征f和ID预测对数p。
- ReID特征f用于计算triplet loss。 ID预测logits p用于计算交叉熵损失。triplet loss的margin被设置为0.3。
- 采用Adam方法对模型进行优化。初始学习率设置为0.00035,并且在40th epch和70th epoch分别降低为1/10。总共有120个epoch。
Tricks
- Warmup Learning Rate。花了10个epoch将学习率从3.5×10-5线性增加到3.5×1e4。 然后,学习率在第40个时代和第70个时代分别降至3.5×1e5和3.5×1e6。
- Random Erasing Augmentation。为了解决遮挡问题使用随机擦除。
- Label Smoothing。一种正则化的方法以防止过拟合,鼓励模型不要太相信训练集,让分类之间的cluster更加紧凑,增加类间距离,减少类内距离,避免over high confidence的adversarial examples。还可以之后做知识蒸馏。比如原始的label是[0,0,1,0,0,0],平滑参数设置为0.1,则平滑之后的label就会变成[0.02,0.02,0.9,0.02,0.02,0.02]。
- Last Stride。 ResNet50的最后一个跨步设置为2。当馈入256×128大小的图像时,ResNet50的主干输出一个空间大小为8×4的特征图。如果将最后一个跨步从2更改为1,我们可以获得具有更大空间尺寸(16×8)的要素图。
- BNNeck。BNNeck只在特征层之后(和分类器FC层之前)添加了一个batch normalization(BN)层。
- Center Loss。center loss同时学习每个类的深度特征中心,并惩罚深度特征与其对应的类中心之间的距离,弥补了triplet loss的缺点。
- BNNeck。提取BN层之后的特征,而不是使用FC层特征。