“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。
地址:https://zhuanlan.zhihu.com/p/347957184
论文标题: PAMTRI: Pose-Aware Multi-Task Learning for Vehicle Re-Identification Using Highly Randomized Synthetic Data 地址: https://openaccess.thecvf.com/content_ICCV_2019/papers/Tang_PAMTRI_Pose-Aware_Multi-Task_Learning_for_Vehicle_Re-Identification_Using_Highly_Randomized_ICCV_2019_paper.pdf 01
车辆重识别(Vehicle ReID)在智慧城市等方向有着广泛的应用前景,不过相比它的“同胞兄弟”行人重识别(Person ReID),车辆ReID获得的关注要少得多——一方面是因为标注人体的数据要远多于车辆的标注数据,另一方面是因为车辆ReID问题面临“类间差异小,类内差异大 ”的挑战,任务难度大。为了直观地体现出车辆重识别任务中这个难点,作者选取了行人重识别数据集Market1501 和车辆重识别数据集CityFlow-ReID 用作分析:用经过ImageNet预训练的GoogLeNet分别提取这两个数据集的样本的特征,计算类内和类间特征的方差之比(基于欧式特征空间),发现Market1501是0.921,小于CityFlow-ReID的0.946——车辆重识别任务相比行人重识别,面临着更严峻的“类间差异小,类内差异大”的挑战。 同样是重识别问题,在算法上是否有通用性呢?之前有研究发现,直接把行人重识别的算法套用在车辆重识别数据集上,算法的性能并没有达到其在行人数据集上的水准 。作者认为,这是由于两个任务有着不同的难点造成的,车辆重识别的一个关键点在于提取对视角鲁棒的图片特征,尤其是对车辆的姿态信息、颜色、车型要有鲁棒性 (如图1所示)。提高模型鲁棒性的一大绝招,在于构建大规模数据集用于训练。作者由此想到,用仿真程序 来扩充训练数据。 如果通过“前景+背景 ”的方式制造仿真图片,那么背景图就是类似真实场景的图片,前景则通过三维的车辆CAD模型的二维投影+不同颜色、视角、光照等的变化来生成。在生成仿真图片的同时,我们很容易获取车辆的颜色、姿态、车型等多个维度的信息 ,能否用上这些信息来提升ReID模型的性能呢?作者由此提出了一个Multi-task learning 的框架,结合多维度信息来提升模型的性能。 02
我认为,本文的创新点主要在于构建仿真数据集 和多任务学习框架 这两点。 作者采用了domain randomization的思想来制作仿真数据。作者使用UnReal4 + NVIDIA Deep learning Dataset Synthesizer(NDDS)(https://github.com/NVIDIA/Dataset_Synthesizer)插件作为工具进行制作,具体信息如下: 图片背景:背景图片来自于CityFlow视频数据。 三维模型:选用42个车辆的CAD模型,每个模型标注了36个关键点(keypiont),共有10种颜色。 图片生成:首先用Unreal4构建一个随机的环境,然后选取背景图片和车辆模型,设定随机的位姿、光照,然后将三维模型投影至二维空间,再对其进行缩放、裁剪、水平翻转、遮挡等后处理,然后生成图片。 数据集规模:每个样本包括RGB图片和关键点的坐标、朝向、颜色、类型、id编号等信息。整个数据集包含402个id,共有41000张图片。 生成的仿真数据集随后将和真实数据集一起用作训练集。本文采用的数据集的规模比较表如图3所示: 可行性分析:在设计框架之前,首先要想搞清楚一个问题:像颜色、车型、车辆姿态这些信息,究竟是否有助于主任务车辆重识别的训练呢? 车辆姿态信息隐含了车辆结构信息 ,这部分信息是每辆车关于视角不变的特征信息,因而模型需要学习提取之; 车型的信息也和车辆ID相关(不同车型对应不同的ID); 结合车辆的关键点信息可以定位车辆关键部位的颜色信息 ,从而得到更准确的车辆特征属性用于重识别。 算法概述:该算法的主干网络架构为DenseNet ,该网络架构在车辆ReID中应用较广。 由于仿真数据集包括关键点坐标、车辆颜色、型号等多维度信息,作者尝试将这些信息都利用上来提升模型的性能,因此设计了一个多任务学习的框架。本文算法中,用于训练的信息渠道包括车辆颜色(color)、型号(type)、id和关键点坐标,其中颜色和型号的标签各自在主干网络输出的特征后接一个head(线性层+ReLU+线性层),并用交叉熵损失用来训练: id的标签则采用了分类损失和度量学习中距离度量的损失hard-mining triplet loss用于训练,其中 表示距离边际参数, 、 表示候选样本到正/负样本的距离,超参数 和 各自是1, 和 都是0.125(之所以这两个超参数取得很小,是因为这两个任务与ID分类任务存在潜在的冲突:两辆有着相同颜色/品牌的车子不一定共用一个车辆id): 最重要也是最复杂的信息处理模块在于代表车辆姿态的关键点信息。作者选用了当年在人体姿态估计上取得SOTA性能的网络架构HRNet(TPAMI 2020)作为车辆姿态估计的主干网络(这么选取是有先例的,18年的IROS中有篇估计车辆姿态的文章The earth ain’t flat: Monocular reconstruction of vehicles on steep and graded roads from a moving camera用的也是当时流行的人体姿态估计网络架构Hourglass Network),训练集约为10000张仿真图像+真实数据集。 具体来说,作者设计了两种方式来利用车辆的姿态信息,这两种方式分别对应于两种不同的信息存储方式,heatmap和segments。 在网络的最后一层反卷积层后面,对每个关键点提取一个heatmap(共36个); 在FC层输出36个关键点对于的二维坐标和置信度之后,用它们再分割出车辆的主体部件。作者将36个关键点归为13个组(如图4所示),每组对应于一个mask,如果某一组包含的关键点的置信度低于阈值,则该组对于的图片部分被遮蔽掉(就是说这部分可能被遮挡了,需要遮掉它,以免其对应的颜色特征提取有误)。 得到heatmap和segments以后,将这些信息(和RGB图像在width和height这两个维度是一致的)拼接到RGB图像矩阵之后,送入主干网络。 在主干网络输出特征之后,将HRNet输出的36个关键点的二维坐标+置信度信息拼接在特征之后,一起用作多任务训练。 本文代码已开源(https://github.com/NVlabs/PAMTRI)。 本文的训练分为两部分,首先是训练姿态估计网络HRNet部分,然后是训练主干网络DenseNet121。DenseNet网络的RGB部分和HRNet的参数都是用ImageNet预训练得到的参数 ,而DenseNet网络的其余部分参数则是根据高斯分布随机生成的。姿态估计网络的损失函数是类似于HRNet中的损失函数的,代码如下所示: class JointsMSELoss(nn.Module):
def __init__(self, use_target_weight):
super(JointsMSELoss, self).__init__()
self.criterion = nn.MSELoss(reduction='mean')
self.use_target_weight = use_target_weight
def forward(self, output, target, target_weight):
batch_size = output.size(0)
num_joints = output.size(1)
heatmaps_pred = output.reshape((batch_size, num_joints, -1)).split(1, 1)
heatmaps_gt = target.reshape((batch_size, num_joints, -1)).split(1, 1)
loss = 0
for idx in range(num_joints):
heatmap_pred = heatmaps_pred[idx].squeeze()
heatmap_gt = heatmaps_gt[idx].squeeze()
if self.use_target_weight:
loss += 0.5 * self.criterion(
heatmap_pred.mul(target_weight[:, idx]),
heatmap_gt.mul(target_weight[:, idx])
)
else:
loss += 0.5 * self.criterion(heatmap_pred, heatmap_gt)
return loss / num_joints
03
在VeRi和CityFlow-ReID两个数据集上进行实验,该方法的性能取得了[准]SOTA水平 (如图5,6所示): 如图5,6所示,可以看到Multi-task learning、基于关键点信息的姿态估计、Heatmap/Segments等模块都能带来模型性能的提升。 可视化结果如图7所示,结果表明:本文方法未解决的难点主要还是由高类间相似度和严重遮挡造成的。 实验结果如图8所示,结果表明:姿态embedding有助于提升这两个分类模块的性能。 实验五:验证使用仿真数据是否提升了姿态估计的准确率 实验结果如图9所示,结果表明:增加了仿真数据集之后,模型的性能有了一定的提升。 04
[1] Ansari, Junaid Ahmed, et al. "The earth ain't flat: Monocular reconstruction of vehicles on steep and graded roads from a moving camera."2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2018. [2] Wang, Jingdong, et al. "Deep high-resolution representation learning for visual recognition."IEEE transactions on pattern analysis and machine intelligence(2020). [3] Tang, Zheng, et al. "Pamtri: Pose-aware multi-task learning for vehicle re-identification using highly randomized synthetic data."Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019. 本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。
“源头活水”历史文章
更多源头活水专栏文章, 请点击文章底部“阅读原文 ”查看
分享、在看,给个三连击呗!