yolov5行人识别(yolov5_reid【附代码,行人重识别,可做跨视频人员检测】)
该项目利用yolov5+reid实现的行人重识别功能 ,可做跨视频人员检测 。
应用场景:
可根据行人的穿着 、体貌等特征在视频中进行检索 ,可以把这个人在各个不同摄像头出现时检测出来 。可应用于犯罪嫌疑人检索 、寻找走失儿童等 。
支持功能:
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目录
Reid训练
人员标注
人员查找(yolov5+Reid)
Reid训练
ps:Reid理论部分参考:Reid理论视频参考课程
项目支持多网络 ,如resnet50, resnet50_ibn_a, se_resnext50等主干网络 。
下载代码后输入:
python tools/train.py --config_file configs/softmax_triplet.yml MODEL.DEVICE_ID "(0)" DATASETS.NAMES "(market1501)" DATASETS.ROOT_DIR "(r./data)
其中softmax_triple.yml是配置文件(里面包含了训练epochs ,学习率 ,优化器等参数配置) 。
训练可选参数 :
参数说明:
--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.
配置文件的修改:
(注意:项目中有两个配置文件 ,一个是config下的defaults.py配置文件 ,一个是configs下的yml配置文件 ,一般配置yml文件即可 ,当两个配置文件参数名相同的时候以yml文件为主 ,这个需要注意一下)
configs文件:
以softmax_triplet.yml为例
SOLVER:
OPTIMIZER_NAME: Adam # 优化器
MAX_EPOCHS: 120 # 总epochsBASE_LR: 0.00035
IMS_PER_BATCH: 8 # batchCHECKPOINT_PERIOD: 1 # 权重保存周期
LOG_PERIOD: 1 # 日志周期
EVAL_PERIOD: 1 # 测试周期 ,测mapTEST:
IMS_PER_BATCH: 4 # test batchRE_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下 。
人员标注
可将视频中嫌疑人(特定人员),可以运行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
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!