littlebot
Published on 2025-04-11 / 1 Visits
0

【源码】基于Python的行人重识别系统

项目简介

本项目是一个基于Python的行人重识别(ReID)系统,旨在跨摄像头或多视角场景下实现行人识别。项目涵盖数据集处理、模型训练、评估及可视化等模块,支持将原始数据格式转换为COCO格式,可运用不同损失函数开展模型训练,同时提供评估指标和可视化工具。

项目的主要特性和功能

  1. 数据集处理:支持将原始数据集格式转换为COCO格式,方便后续处理与训练。
  2. 模型训练:能构建优化器和学习率调度器,支持使用Triplet Loss、Center Loss等不同损失函数进行模型训练。
  3. 模型评估:提供累积匹配曲线(CMC曲线)、平均精度(mAP)以及top - k检索准确率等评估ReID模型性能的指标。
  4. 可视化工具:可对ReID任务的排名结果进行可视化,包含查询图像和匹配库图像的网格图像。

安装使用步骤

前提条件

假设用户已下载本项目的源码文件,项目依赖Python环境和相关库,如PyTorch、Pillow等,可能还需TensorBoard、MLFlow等用于记录训练过程和结果。

数据集准备

裁剪COCO2017和PASCAL VOC行人图像

进入项目目录,将COCO数据集json格式转为xml格式,修改代码文件 pretrain_dataset --> COCOaVOC --> script.py,把 imgs_path 改为对应数据集的图片路径,xmls_path 改为对应的xml标注信息文件,运行 python script.py

混合ReID数据集

进入项目目录,修改代码文件 pretrain_dataset --> mixReID --> script.py,参照相应数据集格式进行路径等修改,运行 python script.py

预训练

使用准备好的数据集进行掩码自监督学习预训练,无需数据集有标签,骨干网络无预训练模型。 ```bash python pretrain.py --batch_size 16 --epochs 400 --model 'tiny' --mask_ratio 0.75 \ --data_path './pretrain_dataset/COCOaVOC' --output_dir './pretrained_model' \ --log_dir './pretrain_logs' --device 'cuda' --num_workers 8

python pretrain.py --batch_size 16 --epochs 400 --model 'tiny' --mask_ratio 0.75 \ --data_path './pretrain_dataset/mixReID' --output_dir './pretrained_model' \ --log_dir './pretrain_logs' --device 'cuda' --num_workers 8 ```

可视化测试

预训练完成后,使用保存好的预训练模型进行图像重建测试,选取重建效果较好的模型进行行人重识别下游任务。准备未经训练的行人测试图像放于 代码根目录/pretrain_dataset/test/ 中。 bash python pretrain_test_visualization.py --model 'tiny' --device 'cuda' \ --model_path './pretrained_model/checkpoint-390.pth' \ --mask_ratio 0.75 --data_path './pretrain_dataset/test/'

PRSNet + MCTL Reid训练

训练

每个数据集和模型都有自己的训练脚本,所有训练脚本都在 train_scirpts 文件夹中,文件夹名称对应数据集名称。 示例:在DukeMTMC - reID上训练MCTL bash sh ./reid_train_scripts/dukemtmc/train_mctl_prs_dukemtmc.sh 默认情况下,所有训练脚本将启动3个实验。

测试

要测试训练好的模型,可使用 train_scripts 中的脚本,只需添加两个参数: TEST.ONLY_TEST True MODEL.PRETRAIN_PATH "path/to/pretrained/model/checkpoint.pth" 示例:在Market1501上测试训练好的CTL - Model bash python train_ctl_model.py \ --config_file="reid_configs/prs.yml" \ GPU_IDS [0] \ DATASETS.NAMES 'market1501' \ DATASETS.ROOT_DIR '/data/' \ SOLVER.IMS_PER_BATCH 16 \ TEST.IMS_PER_BATCH 128 \ SOLVER.BASE_LR 0.00035 \ OUTPUT_DIR './reid_logs/market1501/prs/' \ SOLVER.EVAL_PERIOD 40 \ TEST.ONLY_TEST True \ MODEL.PRETRAIN_PATH "./reid_logs/market1501/prs/train_ctl_model/version_0/checkpoints/epoch=119.ckpt"

重排序可视化

详细内容请参考 reid_inference/README.md 文件。

其他示例命令

  • 数据转换python street2shop2coco.py --root_dir_path <原始数据集路径> --save_dir <保存目录>
  • 模型训练python run_main.py --config <配置文件路径>
  • 模型评估python eval_reid.py --query_dir <查询集目录> --gallery_dir <库集目录> --output_dir <输出目录>
  • 结果可视化python visrank.py --distmat <距离矩阵> --dataset <元数据> --width <图像宽度> --height <图像高度> --save_dir <保存目录>

注意事项

  • 需要根据项目的实际情况修改和配置命令行参数或配置文件。
  • 具体的安装和运行步骤可能因环境和需求而有所不同。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】