项目简介
本项目是一个基于Python的行人重识别(ReID)系统,旨在跨摄像头或多视角场景下实现行人识别。项目涵盖数据集处理、模型训练、评估及可视化等模块,支持将原始数据格式转换为COCO格式,可运用不同损失函数开展模型训练,同时提供评估指标和可视化工具。
项目的主要特性和功能
- 数据集处理:支持将原始数据集格式转换为COCO格式,方便后续处理与训练。
- 模型训练:能构建优化器和学习率调度器,支持使用Triplet Loss、Center Loss等不同损失函数进行模型训练。
- 模型评估:提供累积匹配曲线(CMC曲线)、平均精度(mAP)以及top - k检索准确率等评估ReID模型性能的指标。
- 可视化工具:可对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】