yolo行人检测_7. 行人检测与行人重识别结合

0 前言

最近在做自己课题相关的小项目,行人检测与行人重识别进行结合进行场景图片进行特定行人的检索由于也比较着急,先利用现有的模型搭建了简单的demo,简单效果展示如下,速度大概在17 FPS:

先是给定需要检索的行人:

yolo行人检测_7. 行人检测与行人重识别结合_第1张图片

在监控场景图片进行检索该行人:

yolo行人检测_7. 行人检测与行人重识别结合_第2张图片

还有视频的demo展示:

1 行人检测部分

行人检测先是尝试使用之前的RFSong进行尝试,发现在这种监控场景下效果非常不好,可能是VOC数据集太小了,难以实现很好的泛化。因为这种监控场景在VOC数据集很少有类似的,因此使得训练的网络泛化很差,在监控场景以及一些密集行人场景都不太理想。为了实现更好的效果,需要在COCO等包含大量行人的数据集进行训练,这样网络才能“认识”这种场景下的行人。

这种监控场景目标往往也都是中小型的,因此感觉YOLO应该还是蛮合适的,而且YOLO也有提供COCO权重,我就直接先用YOLO来做了。行人检测YOLO代码主要采用下面这个:

https://github.com/ultralytics/yolov3​github.com

自己对YOLO416 COCO权重在监控场景和行人密集情况都做了测试,效果也都还是不错的,因此先直接用,后面尝试进行一些改进,例如进行剪枝以及类似RFSong的设计尝试。

2 行人重识别

行人重识别部分是利用Bag of Tricks and A Strong ReID Baseline的开源代码基础上做的,我也非常喜欢这个工作,感觉还是很有帮助的,并且仅仅利用全局特征,没有那么多花哨的设计:

michuanhaohao/reid-strong-baseline​github.com
yolo行人检测_7. 行人检测与行人重识别结合_第3张图片
罗浩.ZJU:一个更加强力的ReID Baseline​zhuanlan.zhihu.com
yolo行人检测_7. 行人检测与行人重识别结合_第4张图片

由于需要在实际监控场景进行一些简单演示,并且自己也实在懒得去标注,所有比较关注的是跨域的性能,也就是泛化要很好才行。

论文中也有关于跨域(cross-domain)的一些实验,发现去掉随机擦除(REA)操作跨域性能会好很多。

yolo行人检测_7. 行人检测与行人重识别结合_第5张图片

因此为了实现更好的泛化性能,使得可以直接演示:

  1. 训练的时候去掉随机擦除操作,因为随机擦除可能引导网络学习更多背景相关信息了
  2. 多个数据集联合训练,这里我将Market1501数据集、CUHK03数据集和MSMT17数据集进行了联合训练,然后在没有进行训练的DukeMTMC数据集进行测试,看看跨域性能如何。
  3. 使用跨域比较好的IBN-Net,具体介绍可以看看下面这个,在跨域效果确实有一些提高
量子位:汤晓鸥为CNN搓了一颗大力丸​zhuanlan.zhihu.com
yolo行人检测_7. 行人检测与行人重识别结合_第6张图片

自己在上述联合数据集进行训练,然后在没有训过的Duke数据集进行跨域测试,然后对各个trick进行了消融实验对比:

yolo行人检测_7. 行人检测与行人重识别结合_第7张图片

在DukeMTMC数据集的测试集进行测试的效果rank1达到了71.9,mAP也有56.2,,说明跨域效果应该还是OK的,做个小展示应该问题不大。

3 行人检测 + 重识别

代码主要就是去掉了两个代码的训练部分,只保留推理相关的代码。query文件夹是存放待查询图片,命名格式与market1501保持一致,具体介绍可以看看下面这篇文章:

Person Re-identification数据集描述——Market-1501​blog.fangchengjin.cn
yolo行人检测_7. 行人检测与行人重识别结合_第8张图片

data/samples文件夹下就是需要进行检索的图片,检索完成后,保存在output文件夹。

需要注意的是,行人检测与行人重识别如何更好的进行结合。reid使得行人检测可以存在多一些的误检,要求recall比较高,因为一些背景可以通过reid进行相似度比较从而排除掉。但是如过置信度阈值设的太低,会有很多的proposal要进入reid模型,降低模型的速度。因此,需要进行合理的设置,这里我就设置了conf-thres=0.1,nms-thres=0.4。

4 下一步方向

这个还只是个小demo,因此还是需要后面做很多改进工作。

  1. 行人检测部分利用RFSong在COCO+VOC联合训练的权重进行检测,参考下面文章:
Pascal:YOLO从零开始:基于YOLOv3的行人检测入门指南​zhuanlan.zhihu.com
yolo行人检测_7. 行人检测与行人重识别结合_第9张图片
diff:使用yolov3训练行人检测模型要点总结​zhuanlan.zhihu.com

2. 检测与跟踪的结合

SYUI:工程实践中,目标检测为何要加目标追踪?​zhuanlan.zhihu.com
yolo行人检测_7. 行人检测与行人重识别结合_第10张图片

3. 对行人重识别模型进行剪枝、蒸馏,加快推理速度

总结

还是欢迎各位大佬交流指正,代码和权重文件先传到群文件了,后面稍微整理下放到github。

希望大家多多加群,一起交流进步,云深不知处-目标检测 763679865

代码链接:

songwsx/person_search_demo​github.com
yolo行人检测_7. 行人检测与行人重识别结合_第11张图片

你可能感兴趣的:(yolo行人检测)