YOLOv8 Reid(附代码,行人重识别)

该项目利用yolov8+reid实现的行人重识别功能,实现特定人员查找

应用场景:

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


支持功能:

        1.reid训练

        2.人员标注

        3.Reid(行人重识别)

环境说明:

(项目中有requirements.txt)

ipython==8.12.3
loguru==0.7.2
matplotlib==3.7.5
mss==7.0.1
numpy==1.22.4
opencv-python==4.4.0.44
pandas==2.0.3
Pillow==9.5.0
protobuf==5.26.1
pytorch-ignite==0.4.11
PyYAML==6.0.1
requests==2.31.0
scikit-learn==1.3.2
scipy==1.10.1
seaborn==0.13.2
six==1.16.0
tensorboardX==2.6.2.2
torch==1.10.0+cu102
torchvision==0.11.0+cu102
tqdm==4.66.1
transformers==4.27.0
ultralytics==8.0.228
yacs==0.1.8


Reid训练

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

下载代码后输入:

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

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

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

如果训练意外终止,或者希望继续训练,可以适用本功能。只需要传入--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即可,可用于加快训练或者微调训练如下:

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

tensorboard更新内容:

支持训练曲线可视化:√

hard sample可视化:√

 


训练可选参数 :

参数说明:

--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:继续训练

--freeze:冻结训练

--freeze_epoch:表示前多少个epoch为冻结训练

配置文件的修改:

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

configs文件:

以softmax_triplet.yml为例

 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

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


人员标注


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

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


人员查找(yolov8_Reid) 

python search.py --weights yolov8s.pt --source demo.mp4 --dist_thres 1.

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

效果如下:

yolov8_reid

参数说明:

--weights: yolov8权重路径

--source: video/file/ path

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

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

--save:保存视频图像

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


训练和检测代码有偿使用。(训练部分是否含tensorboard,价格不一样)

wechat:y24065939s


代码

https://github.com/YINYIPENG-EN/yolov8_reid.git

权重下载

检测:将 ReID_resnet50_ibn_a.pth放在:ear:Reid_Search/weights文件下,yolov8s.pt放Reid_Search

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


相关参考资料


涉及到的相关资料如下:

参考的reid论文:Bag of Tricks and A Strong Baseline for Deep Person Re-identification(这应该是一篇19年的论文,可能稍微比较早了,但很有参考价值)

Reid代码详解:Reid strong baseline 代码详解

Reid之网络的定义:Reid之网络的定义代码详解

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

Reid损失函数理论学习:Reid损失函数理论学习

Reid度量学习Triplet loss:Reid度量学习之Triplet loss 

yolov5_行人重识别:yolov5_行人重识别 

yolov5_车辆重识别:yolov5 车辆重识别

yolov7_行人重识别:yolov7 行人重识别


  • 21
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱吃肉的鹏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值