代码开源!!行人检测与行人重识别结合 person search

0 前言

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

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

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

还有视频的demo展示:

利用下面一张其他摄像头拍摄的特定行人图片在视频中进行搜人:

https://www.bilibili.com/video/av69353188/

由视频效果可以看到对于遮挡等情况效果还是非常好的,自己也试过单目标跟踪多目标跟踪,直接用效果都是比较差的。

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的开源代码基础上做的,我也非常喜欢这个工作,感觉还是很有帮助的,并且仅仅利用全局特征,没有那么多花哨的设计:

https://link.zhihu.com/?target=https%3A//github.com/michuanhaohao/reid-strong-baseline

https://zhuanlan.zhihu.com/p/61831669

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

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

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

  1. 训练的时候去掉随机擦除操作,因为随机擦除可能引导网络学习更多背景相关信息了
  2. 多个数据集联合训练,这里我将Market1501数据集、CUHK03数据集和MSMT17数据集进行了联合训练,然后在没有进行训练的DukeMTMC数据集进行测试,看看跨域性能如何。
  3. 使用跨域比较好的IBN-Net,具体介绍可以看看下面这个,在跨域效果确实有一些提高

量子位:汤晓鸥为CNN搓了一颗大力丸​zhuanlan.zhihu.com

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

 

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

3 行人检测 + 重识别

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

Person Re-identification数据集描述——Market-1501​blog.fangchengjin.cn

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

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

4 下一步方向

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

1. 行人检测部分利用RFSong在COCO+VOC联合训练的权重进行检测,参考下面文章:。

https://zhuanlan.zhihu.com/p/47196727

https://zhuanlan.zhihu.com/p/36734511

2. 检测与跟踪的结合

SYUI:工程实践中,目标检测为何要加目标追踪?​zhuanlan.zhihu.com

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

总结

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

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

代码链接:

https://github.com/songwsx/person_search_demo

 

加群交流: 云深不知处-目标检测 763679865

  • 8
    点赞
  • 5
    评论
  • 76
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

<h3 class="MsoNormal"><span style="mso-spacerun: 'yes'; font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; font-size: 10.5000pt; mso-font-kerning: 1.0000pt;"><span style="font-family: 宋体;">行人重识别课程主要包括三大核心模块:</span>1.2020<span style="font-family: 宋体;">经典算法</span><span style="font-family: Calibri;">(</span><span style="font-family: 宋体;">论文</span><span style="font-family: Calibri;">)</span><span style="font-family: 宋体;">详细解读;</span><span style="font-family: Calibri;">2.</span><span style="font-family: 宋体;">项目源码分析;</span><span style="font-family: Calibri;">3.</span><span style="font-family: 宋体;">实战应用;通俗讲解</span><span style="font-family: Calibri;">CVPR</span><span style="font-family: 宋体;">等会议最新行人重识别方向算法及其实现,基于</span><span style="font-family: Calibri;">PyTorch</span><span style="font-family: 宋体;">框架展开实战,逐行讲解全部项目源码及其应用实例。整体风格通俗易懂,用最接地气的方式带领同学们掌握最新行人重识别算法并进行项目实战。</span></span></h3> <p><span style="mso-spacerun: 'yes'; font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; font-size: 10.5000pt; mso-font-kerning: 1.0000pt;"><span style="font-family: 宋体;"><img src="https://img-bss.csdnimg.cn/202008110957562608.png" alt="" width="880" height="2325" /></span></span></p>
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值