Yolov7 Reid【附代码,行人重识别,可做跨视频人员检测】

本项目使用Yolov7+Reid实现的行人重识别功能,可做跨视频人员检测。

应用场景:

可根据行人的穿着、体貌等特征的Reid算法在视频中进行检索,可以把这个人在各个不同摄像头出现时检测出来。可应用于犯罪嫌疑人检索、寻找走失儿童等。支持GUI界面。


支持功能:

1.reid训练

2.人员标注

3.人员查找(可做跨视频人员检测)

matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.2
Pillow>=7.1.2
PyYAML>=5.3.1
requests>=2.23.0
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.41.0

pytorch-ignite=0.4.11


目录

Reid训练

准备工作

代码准备

数据集准备

权重准备

 训练

恢复训练或微调训练

冻结训练

测试

行人重识别

从视频中获取陌生人(待检测人员)图像

人员检测

GUI界面


更新记录:

Reid baseline训练:√

resume训练:√

冻结训练:√

tensorboard 训练曲线:√

tensorboard hard sample可视化:√

评价指标测试:√

人员检测:√

多视频检测:√

GUI界面:√


Reid训练

ps:Reid理论部分参考:Reid理论视频参考课程

项目支持多网络,如resnet50, resnet50_ibn_a, se_resnext50等主干网络。

准备工作

代码准备

 GitHub - YINYIPENG-EN/yolov7_reid: 使用yolov7+reid实现行人重识别,可做陌生人检索

git clone https://github.com/YINYIPENG-EN/yolov7_reid.git

数据集准备

将Markt1501数据集放项目(yolov7_reid)的在data下:

权重准备

权重链接:

链接:百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间icon-default.png?t=N7T8https://pan.baidu.com/s/1QYvFE6rDSmxNl4VBNBar-A

提取码:yypn

r50_ibn_2.pth放在yolov7_reid/weights

 训练

开发不易,yolov7 reid中的核心训练代码部分为有偿提供。【拒绝讲价】可扫描文末的二维码添加

有偿训练代码有两种:含tensorboard与不含tensorboard(价格不一样)

python tools/train.py --config_file configs/softmax_triplet.yml

恢复训练或微调训练

更新:如果是需要中断epoch后的恢复训练或者是需要微调,传入resume命令即可。如下:

python tools/train.py --weights logs/mAP_43.6%_model_resnet50_ibn_a.pth --resume

注意:在训练期间会保存两种格式,一个是mAP_xx_model_model_name.pth,一个是mAP_xx_optimizer_model_name.pth。后者保存的是训练期间优化器等参数。【不建议修改保存的名字,因为训练期间会根据权重名字自动加载优化器权重】。保存如下:

冻结训练

新增冻结训练功能,可根据自己的需求是否采用冻结训练,冻结训练可加快训练速度,或是用于微调训练。

python tools/train.py --weights 【your weight path】 --freeze --freeze_epoch 20

tensorboard的示例图如下(有偿提供):

tensorbard新增hard sample可视化:

 

即可开启训练:

=> Market1501 loaded
Dataset statistics:
  ----------------------------------------
  subset   | # ids | # images | # cameras
  ----------------------------------------
  train    |   751 |    12936 |         6
  query    |   750 |     3368 |         6
  gallery  |   751 |    15913 |         6
  ----------------------------------------
Loading pretrained ImageNet model......


2023-02-24 21:08:22.121 | INFO     | engine.trainer:log_training_loss:194 - Epoch[1] Iteration[19/1484] Loss: 9.194, Acc: 0.002, Base Lr: 3.82e-05
2023-02-24 21:08:22.315 | INFO     | engine.trainer:log_training_loss:194 - Epoch[1] Iteration[20/1484] Loss: 9.156, Acc: 0.002, Base Lr: 3.82e-05
2023-02-24 21:08:22.537 | INFO     | engine.trainer:log_training_loss:194 - Epoch[1] Iteration[21/1484] Loss: 9.119, Acc: 0.002, Base Lr: 3.82e-05

训练的权重会保存在logs下(tensorboard也会存在这里)。

测试

该脚本为针对训练后的模型单独获得测试结果,例如mAP、Rank等指标。

python tools/test.py --weights weights/ReID_resnet50_ibn_a.pth

测试结果如下:

Validation Results
mAP: 92.0%
CMC curve, Rank-1  :97.2%
CMC curve, Rank-5  :99.1%
CMC curve, Rank-10 :99.5%


行人重识别

链接:百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间icon-default.png?t=N7T8https://pan.baidu.com/s/1QYvFE6rDSmxNl4VBNBar-A

提取码:yypn

检测:将 ReID_resnet50_ibn_a.pth放在👂person_search/weights文件下,yolov7.ptperson_search

该项目可用于做reid识别,可用于做跨视频人员识别

reid网络采用resnet50_ibn_a(权重需要和defaults.py中的MODEL.NAME对应),支持se_resnext50网络。

该项目没有将yolov7训练加入,只是将检测功能和reid进行了整理。

person_search下只进行检测,不进行reid的训练,reid的训练在yolov7_reid中。

从视频中获取陌生人(待检测人员)图像

python get_query.py

可从弹出的视频中利用鼠标框选待检测的人员(陌生人员)。

操作方法:

运行程序后用鼠标左键从目标左上角进行框选,按“空格”键继续播放视频(会自动把框选的图像进行保存)

该人员图像会保存在query文件夹中,默认命名格式为markt1501

ps:也可以直接将图像放在query文件中,但名字也需要按mark1501命名。

人员检测

参数说明:

--weights: yolov7权重路径

--source: video/file/ path

--imgsz: 输入图像大小,默认640

--conf_thres:置信度阈值

--iou_thres:iou阈值

--classes:过滤的类

--dist_thres:reid对比的距离阈值(小于该阈值判断为同一个人)

--save_res:保存视频图像

python search.py --weights yolov7.pt --source demo.mp4 --dist_thres 1.5

 检测后的视频会保存在runs/detect/下

检测效果如下:

GUI界面

 GUI部分未开源,该部分为有偿提供

  • 30
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃肉的鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值