一、 实现方法
主要利用SSD和ReID两层网络实现行人重识别功能,首先利用SSD作为前端网络监测出图片中的行人,再把监测的行人从原图中切割下来和需要识别的人的图片 一起送入到后端网络ReID中判断是否为同一人。
二、 SSD和ReID原理
这里简单介绍一下SSD和ReID网络的结构,详细原理了解请查看论文原文,本文末尾附有论文链接。
2.1 SSD结构简介
SSD算法是一种直接预测目标类别和bounding box的多目标检测算法。与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度。针对不同大小的目标检测,传统的做法是先将图像转换成不同大小(图像金字塔),然后分别检测,最后将结果综合起来(NMS)。而SSD算法则利用不同卷积的 feature map 进行综合也能达到同样的效果。算法的主网络结构是VGG16,将最后两个全连接层改成卷积层,并随后增加了4个卷积层来构造网络结构。对其中5种不同的卷积层的输出(feature map)分别用两个不同的 3×3 的卷积核进行卷积,一个输出分类用的confidence,每个default box 生成21个类别confidence;一个输出回归的 localization,每个 default box 生成4个坐标值(x, y, w, h)。此外,这5个feature map还经过 PriorBox 层生成 prior box(生成的是坐标)。上述5个feature map中每一层的default box的数量是给定的(8732个)。最后将前面三个计算结果分别合并然后传给loss层。SSD网络结构图如下图1所示(转载自https://www.cnblogs.com/xuanyuyt/p/7447111.html)
图1 SSD网络结构图
2.2 ReID结构简介
ReID提出了一种深度神经网络体系结构,它将人员重新识别的问题表述为二元分类。 给定一对输入图像,任务是确定两个图像是否代表同一个人。 图2说明了我们网络的体系结构。ReID网络由以下不同的层组成:两层绑定卷积,具有最大池,交叉输入邻域差异,跨补丁特征,全连接层,最后是softmax函数,以产生输入图像是否属于同一个人的最终估计。
图2 ReID网络结构图
2.3 训练过程
SSD采用基于imageNet的VGG16作为提取图像特征的预训练模型,在VOC2007数据集上训练,ReID采用CUHK03数据集进行训练,没有采用任何预训练模型。
三、测试效果
两个模型训练完成以后从网上找了两张图片进行了测试,测试过程和效果如下:
图3
图4
图5
如上所示,我首先把穿红色格子衫的女生从图3中截取出来作为需要重识别的行人ID图片,再把图4和图5输入到训练好的PersonReID(SSD+ReID)中运行会得到如下结果:
四、参考论文:
- SSD:https://arxiv.org/abs/1512.02325
- ReID:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7299016