Mask-guided Contrastive Attention Model for Person Re-Identification学习笔记

刚刚去火车站买了下火车票,两个小时就为了刷个下铺。。。。。。突然看自己的笔记本,这周学的东西还有很多没有整理,上周的东西也还有很多没有清尾,最可耻的是上上周还有一篇计划了很久的东西,看了一半挂在那里没有看。郭师叔给的论文可能才看了1/8,最近又和我将强化学习是个很火的东西,花皮的deep learning买回来这么久也还没有正式看,还有一直心心念念的slam十四讲。我又不喜欢熬夜,每天还要定打不饶的运动。“路漫漫其修远兮,这他妈什么时候是个头呀”,加油吧多多。

言归正传,这也是我CVPR2018 ReID系列阅读之一。那么先对整个文章进行一个大体的介绍:ReID作为近些年来越来越火的一个课题,他在嫌疑人搜索,失踪人口查找等方面都有着巨大的优势以及潜在的价值。然而如何提取出图像中具有很强的可判别性,鲁棒性以及场景不变性的特征是一个很有挑战性的问题,在这篇文章中,作者首次提出了将二值掩图构成原RGB图的第四个通道进行输入。然后又构建了MGCAM这样一个框架,来分别从全图,body图,以及背景图来进行特征提取。

1)什么是full,body以及mask图像呢?我想不少同学应该很想问这样一个问题。

如上图所示,我们可以看到full其实就是完整图像,它包含了body以及mask图像的所有信息;body图像就是相对来讲,在原图上将所有的背景信息全部用黑色进行替代;而mask图,就是对原图进行二值掩盖,只保留人物边缘信息。

这里有朋友也许会问,既然背景信息没用,直接去掉就好,为什么还要加入mask信息。文中给出了这两个解释:首先有助于在像素级去除背景信息,其次mask包含了人物的边缘形状信息,这个被认为是十分重要的特征。

2)MSCAN

这是一个基础的特征提取的网络,例如之前的ReID中常用的是CaffeNet以及ResNet-50.这些basemodel由一个好处都是,因为被使用是十分广泛,所以存在大量的预训练模型,可以降低模型训练的时间。但是这里就存在这样一个问题,这篇文章中使用的图像是四通道,与常规的三通道不同,所以想caffenet这样的模型就没法使用。而MSCAN是一个多级的语义感知网络,他的输入也是四层,所以文章中采用了MSCAN作为基础网络。

3)MGCAM

首先是一个两级的预训练好的MSCAN模型,通过下方的图可以看出它有多级的特征采集方式。然后到这里图像输出形成第一个feature map f1。我们需要通过一系列的操作来·提取出full faeture,body feature以及background feature三种不同的特征图。1)首先是full feature,这个特别简单我们不需要做任何操作,直接将f1输入即可。

对于body以及bkgd feature的获得,我们可以将他们看为是一个互补的过程,因为把这两个图片相加就直接得到的是feature map f1.所以我们假定了两个参数,他们是大小与f1相同,值在0-1之间的权重矩阵。之后的body feature以及bkgd feature的获得则是利用f1与这两个值进行内积操作:

当然,已知这两个操作是互补的,所以肯定会存在这样一个条件:

有没有人发现到这里尽管我说了一堆,以及这两个值的求法还是没有做出具体的说明,别急看下面:

那个小 σ代表的是一个归一化函数,因为上面讲这个值在0-1之间。由于我们希望最后的特征图,body feature部分能够提供多的信息,而bkgd feature部分提供比较少的信息,所以呢我们使用了mask图,希望通过一个损失函数来生成独立的body feature以及bkgd feature。损失函数如下所示:

4)Triplet loss

我想如果作为一个经常接触网络的人,你在接触到full,body,bkgd这几个不同的feature map的时候,你的第一印象应该就是这里应该会使用triplet loss。没错,作者不然不负我们所望,他使用了triplet loss。这个目标样本自然就是full feature,正样本是body feature而负样本是bkgd loss。这个很容易理解,希望通过这个函数,使得body feature提供大部分信息,并且同时希望减少背景对于最终结果的影响。

5)最后的整体框架

上面介绍那么多,其实都是为了最后的这个框架服务的,先上图:

两张图片作为输入,经过MGCAM提取信息,这里的两个MGCAM其实是同一个网络,结构相同参数相同,你也可以把他视为一个孪生网络。生成的两个feature map,最后通过一个函数进行相似度对比。

整个函数训练过程中使用的目标函数式表达为:

  

他们的系数都是预先设置好的超参数。你可以发现整个框架使用了四个损失函数构成了最终的目标函数,这也是本文的一个比较大的优点。

好啦,这篇文章介绍到这里,我是钱多多,欢迎大家有空交流指正。

猜你喜欢

转载自blog.csdn.net/weixin_40955254/article/details/81263963