行人重识别(Re-Identification)
简介
本技能使用 NVIDIA TAO 框架训练、评估、推理和导出「行人重识别」(Person Re-Identification, ReID) 模型。ReID 基于度量学习,学习具有鉴别力的特征嵌入,从而在不同摄像头视角下匹配同一行人。
支持的动作
支持 train、evaluate、inference、export 四个动作,命令行通过 re_identification 指定。恢复/再训练使用 train 配合 train.resume_training_checkpoint_path。
AutoML 策略
训练动作默认开启 AutoML(automl_policy: on)。可通过用户指令关闭,关闭时则直接使用模型训练。优化指标为 cmc_rank_1,方向为最大化。
数据集要求
- 数据集类型:
re_identification - 需要 train/test/query 三组数据,分别配置到
dataset.train_dataset_dir、dataset.test_dataset_dir、dataset.query_dataset_dir - 评估和推理还需要 test 与 query 数据集
关键参数
dataset.num_classes:身份数量,必须与训练数据中的唯一身份数一致。model.backbone:默认resnet_50。dataset.batch_size:默认 64,建议显存满足时使用较大批量。dataset.num_instances:每个身份在一个 mini-batch 中的实例数,用于度量学习采样。train.num_gpus:GPU 数量,默认 1,推荐 2。
模型与运行
模型采用 Lightning 管理多卡分布式训练,强制混合精度 FP16。导出可生成 ONNX 文件,推理输出 JSON 结果。所有命令在 Docker 中运行,需要 GPU 环境,镜像为:nvcr.io/nvidia/tao/tao-toolkit:7.1.0-pyt。
关键注意事项
- 确保身份类别数与数据集一致。
- 查询集和 gallery 集必须共享同一套身份命名空间。
- 加载受信任检查点时可设置
TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD=1以兼容 PyTorch 2.6。