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

该项目利用yolov5+reid实现的行人重识别功能,可做跨视频人员检测。

应用场景:

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


已更新内容:

        1.reid训练

        2.继续训练和微调训练

        3.冻结训练

        4.tensorboard可视化(已支持评价指标、困难样本可视化)

        5.评价指标复现测试

        6.人员标注

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

        8.可使用reid应用程序直接执行(暂时只支持windows系统)

环境说明:

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训练

中断后的继续训练或微调训练

冻结训练

测试

人员标注

 人员查找(yolov5+Reid)

说明


Reid训练

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

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

train.py训练可选参数

参数说明:

--config_file: 配置文件路径,默认configs/softmax_triplet.yml

--weights: pretrained weight path

--neck: If train with BNNeck, options: bnneck or no

--test_neck: BNNeck to be used for test, before or after BNNneck options: before or after

--model_name: Name of backbone.

--pretrain_choice: Imagenet

--IF_WITH_CENTER: us center loss, True or False.

--resume:继续训练

配置文件的修改:

(注意:项目中有两个配置文件,一个是config下的defaults.py配置文件,一个是configs下的yml配置文件,一般配置yml文件即可,当两个配置文件参数名相同的时候以yml文件为主,这个需要注意一下)

configs文件:

softmax_triplet.yml为例(其中softmax_triple.yml是配置文件(里面包含了训练epochs,学习率,优化器等参数配置)

 SOLVER:
  OPTIMIZER_NAME: 'Adam' # 优化器
  MAX_EPOCHS: 120  # 总epochs
  BASE_LR: 0.00035
  IMS_PER_BATCH: 8  # batch

  CHECKPOINT_PERIOD: 1   # 权重保存周期
  LOG_PERIOD: 1 # 日志周期
  EVAL_PERIOD: 1  # 测试周期,测map

TEST:
  IMS_PER_BATCH: 4 # test batch
  RE_RANKING: 'no'
  WEIGHT: "path"  # test weight path
  FEAT_NORM: 'yes'
OUTPUT_DIR: "/logs" # model save path

下载代码后输入:

python tools/train.py --config_file configs/softmax_triplet.yml MODEL.DEVICE_ID "('0')" DATASETS.NAMES "('market1501')" DATASETS.ROOT_DIR "(r'./data')

或直接输入以下命令:

python tools/train.py

输入命令后打印如下:

=> 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下。


中断后的继续训练或微调训练

如果训练意外终止,或者希望继续训练,可以适用本功能。只需要传入--resume参数即可

python tools/train.py --weights 【your weight path】 --resume

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


冻结训练

新增冻结训练,加快网络前期训练速度。

训练中只需传入:--freeze --freeze_epoch 20即可,其中--freeze表示是否开启冻结训练,--freeze_epoch是冻结训练后的epoch,这里默认为20,那么网络会在前20个epoch冻结训练,从21个epoch开始解冻训练

示例如下:

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

测试

输入以下命令即可快速开启测试,获得测试结果

【此脚本是针对训练后的模型单独获得测试结果,例如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% 


人员标注

可将视频中嫌疑人(特定人员),可以运行person_search/get_query.py,按住鼠标左键不放,拖动进行人员款选标注,标注后的人员会自动保存在query文件中(命名格式为markt1501),按空格键继续播放视频。

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

 人员查找(yolov5+Reid)

参数说明:

--weights: yolov5权重路径

--source: video/file/ path

--data: data/coco128.yaml

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

--conf_thres:置信度阈值

--iou_thres:iou阈值

--classes:过滤的类

--half:半精度推理

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

--save_res:保存视频图像

python search.py --weights yolov5s.pt --source 0 --dist_thres 1.5

如果需要检测视频或者多视频(跨视频检测),需要指定source路径。

代码:

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

权重下载:

检测:ReID_resnet50_ibn_a.pth放在👂person_search/weights文件下,yolov5s.pt放person_search

训练:r50_ibn_2.pth,resnet50-19c8e357.pth放在yolov5_reid/weights下

注意:训练和检测(person_search)是两个独立的项目!!

链接:百度网盘 请输入提取码 提取码:yypn


Reid应用程序

福利来啦~2024.5.1本项目做了重大更新,已将本项目生成exe应用程序直接执行,让操作更便捷,脱离繁琐的代码~

有很多代码基础比较差的同学在使用项目的时候会私信我说不太会用,或者不会配置深度学习环境,因此我将GUI检测部分的代码和人员标注功能分别导成了exe应用程序。哪怕你的电脑没有安装python、pytorch、cuda,也照样可以使用本项目,只需双击exe就可以轻松实现reid啦~(不支持跨平台)

不过本部分为有偿提供~

下载程序到本地后,如下图所示:

本项目包含了两个exe应用程序,get_query.exe和Search_GUI.exe

人员标注应用程序(get_query.exe)

1.get_query.exe是用来标注人员的应用程序,可直接双击打开默认打开的是demo.mp4文件如果需要指定其他的视频,那么可以打开cmd,输入命令:

get_query.exe --video_path xxx.mp4

 在跳出的视频画面中可以用鼠标直接框选人物(建议这里只选一个人),程序会自动将截图以markt1501格式保存到query文件中,按键盘空格键会继续播放视频。按键盘q键退出程序。如下图所示:

人员标注执行程序效果图

 

Reid应用程序

直接双击Search_GUI.exe将会显示Reid GUI界面。此时只需在界面上加载好权重和视频,最后点击检测即可。效果图:

reid应用程序效果图

 


说明

开发不易,本项目部分功能有偿提供(请按需购买)。联系方式可扫描本末二维码添加,或直接微信搜索:y24065939s。

1.训练核心代码

有偿训练代码有两种:含tensorboard与不含tensorboard(价格不一样,与旧版本相比均支持继续训练)

tensorboard包含(loss、acc、mAP、Rank、lr)曲线的可视化。

需要安装:

protobuf==3.20.0

tensorboardX==2.6.2.2

开启tensorboard命令(需要在conda的pytorch环境下进行):

cd logs/
tensorboard --logdir=./

tensorboard效果图如下:

 2024.4.24 tensorboard更新记录:

tensorboard中新增加hard sample的可视化,效果如下:

2.已加入GUI界面,效果如下(该部分有偿提供):

pyqt需要安装:

PyQt5                     5.15.9
pyqt5-plugins             5.15.9.2.3
PyQt5-Qt5                 5.15.2
PyQt5-sip                 12.11.0
pyqt5-tools               5.15.9.3.3

qt5-applications          5.15.2.2.3
qt5-tools                 5.15.2.1.3
QtPy                      2.1.0

3.Reid应用程序为收费内容 

详细效果和说明可见Reid应用程序章节。


后续将不断更新针对reid代码的详解。请持续关注。

Reid训练代码之数据集处理:reid数据集处理代码详解


  • 17
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 123
    评论
Yolov5+Reid是一种结合了目标检测模型Yolov5行人重识别模型Reid的方法。Yolov5是一种基于深度学习的目标检测算法,可以用于检测图像或视频中的目标物体。而Reid是一种用于识别行人身份的算法,可以根据行人的外貌特征将其匹配到之前的记录中。 在使用Yolov5+Reid时,需要先进行训练和检测。首先,需要将"r50_ibn_2.pth"和"resnet50-19c8e357.pth"放在yolov5_reid/weights文件夹下,用于训练模型。然后,将"ReID_resnet50_ibn_a.pth"放在person_search/weights文件夹下,用于行人重识别。 在进行检测时,可以使用以下命令:python search.py --weights yolov5s.pt --source 0 --dist_thres 1.5。其中,--weights指定了Yolov5的权重文件,--source指定了输入的源,这里使用了0表示摄像头输入,--dist_thres指定了行人重识别时的距离阈值。 通过结合Yolov5和Reid,可以实现对图像或视频中的行人进行检测和重识别,以实现行人识别和追踪等应用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [yolov5_reid代码行人重识别,可视频人员检测】](https://blog.csdn.net/z240626191s/article/details/129221510)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱吃肉的鹏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值