ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

打造你自己的行人重识别模型:基于 cosine_metric_learning 框架扩展自定义数据集开发指南

打造你自己的行人重识别模型:基于 cosine_metric_learning 框架扩展自定义数据集开发指南 打造你自己的行人重识别模型基于 cosine_metric_learning 框架扩展自定义数据集开发指南【免费下载链接】cosine_metric_learningDeep Cosine Metric Learning for Person Re-identification项目地址: https://gitcode.com/gh_mirrors/co/cosine_metric_learningcosine_metric_learning 是一个基于 Deep Cosine Metric Learning 论文的开源行人重识别Person Re-ID训练框架支持在 Market1501、MARS 等公开数据集上训练余弦度量模型并一键导出为 Deep SORT 追踪器可直接使用的推理图。本文带你从零搭建属于自己的 Re-ID 模型——只需四步就能把自己的数据集接入训练流程。 框架架构5 个核心文件一次看懂在动手之前先花 1 分钟建立全局认知文件职责train_app.py训练引擎封装了train_loop、eval_loop、freeze等核心函数接收图片路径列表 标签数组即可启动训练datasets/数据加载器Market1501、MARS 各自一个文件负责扫描目录并返回(文件名列表, 身份 ID 列表, 摄像头索引列表)nets/deep_sort/network_definition.py卷积网络定义4 层残差块 → 128 维特征 → L2 归一化支持 cosine-softmax / magnet / triplet 三种损失losses.py损失函数实现soft-margin triplet loss 与 magnet lossqueued_trainer.py异步预取队列保证 GPU 不等待数据 IO 关键认知train_loop的输入是任意图片路径列表 任意整数标签数组并不绑定具体数据集。这就是扩展自定义数据集的突破口。 快速上手先跑通一个公开数据集克隆仓库git clone https://gitcode.com/gh_mirrors/co/cosine_metric_learning cd cosine_metric_learning用 Market1501 训练将 Market-1501 数据集解压到./Market-1501-v15.09.15/后执行python train_market1501.py \ --dataset_dir./Market-1501-v15.09.15/ \ --loss_modecosine-softmax \ --log_dir./output/market1501/ \ --run_idmy-first-run训练日志和 TensorBoard checkpoint 会保存在./output/market1501/my-first-run/。并行启动验证集 CMC 评估CUDA_VISIBLE_DEVICES python train_market1501.py \ --modeeval \ --dataset_dir./Market-1501-v15.09.15/ \ --loss_modecosine-softmax \ --log_dir./output/market1501/ \ --run_idmy-first-run \ --eval_log_dir./eval_output/market1501然后用 TensorBoard 监控两个目录训练 loss 和验证 CMC1/5/10/20即可实时追踪模型收敛情况。 扩展自定义数据集四步走第一步规划数据目录结构框架不关心你的数据是怎么来的只关心三样东西每张图片的绝对路径对应的身份 ID整数≥ 0同一个人的所有图片共享同一 ID对应的摄像头/视角索引整数用于交叉视角验证单摄像头场景可全部填 0推荐目录组织方式最直观my_dataset/ ├── 001/ # 身份 001 │ ├── cam1_000.jpg │ └── cam2_001.jpg ├── 002/ │ └── ... └── ...⚠️ 注意身份 ID 建议从 0 开始连续编号最大 ID 1 决定了网络的分类头大小num_classes。第二步编写数据加载模块新建datasets/custom.py核心函数只需返回三个列表# datasets/custom.py import os def read_train_split_to_str(dataset_dir): 扫描数据集目录返回 (filenames, ids, camera_indices)。 filenames, ids, camera_indices [], [], [] for person_dir in sorted(os.listdir(dataset_dir)): person_path os.path.join(dataset_dir, person_dir) if not os.path.isdir(person_path): continue person_id int(person_dir) for cam_dir in sorted(os.listdir(person_path)): cam_idx int(cam_dir.replace(cam, )) img_dir os.path.join(person_path, cam_dir) for fname in sorted(os.listdir(img_dir)): if not fname.endswith(.jpg): continue filenames.append(os.path.join(img_dir, fname)) ids.append(person_id) camera_indices.append(cam_idx) return filenames, ids, camera_indices 可复用datasets/util.py中的create_validation_split自动按身份划分训练/验证集create_cmc_probe_and_gallery生成跨视角 CMC 评估对。第三步编写训练入口脚本新建train_custom.py仿照 train_market1501.py 的结构核心调用如下# train_custom.py核心片段 import train_app import datasets.custom as custom import nets.deep_sort.network_definition as net MAX_LABEL 100 # 改成你数据集中最大 ID IMAGE_SHAPE (128, 64, 3) # 高×宽×通道可按需调整 # —— 训练 —— network_factory net.create_network_factory( is_trainingTrue, num_classesMAX_LABEL 1, add_logitsTrue) train_app.train_loop( net.preprocess, network_factory, train_xfilenames, train_yids, num_images_per_id4, image_shapeIMAGE_SHAPE, batch_size128, log_dir./output/custom/, loss_modecosine-softmax, run_idv1)几个容易踩的坑⚡问题原因解决方案batch_size报错必须能被num_images_per_id整除128 能被 4 整除 ✓特征维度不匹配num_classes必须 ≥ 最大 ID 1确认MAX_LABEL图片读不出来框架内部用tf.image.decode_jpeg解码确保图片是JPEG 格式、BGR 色彩空间验证集为空某身份只有 1 张图无法组成 probe-gallery 对每个身份至少 2 张图第四步训练、评估与导出# 训练 python train_custom.py --dataset_dir./my_dataset/ --run_idv1 # 并行 CMC 评估新终端 CUDA_VISIBLE_DEVICES python train_custom.py --modeeval \ --dataset_dir./my_dataset/ --run_idv1 # 导出 .pb 推理图供 Deep SORT 使用 python train_custom.py --modefreeze --restore_path./output/custom/v1/model.ckpt导出的.pb文件可直接加载到 Deep SORT 追踪器中完成从训练到部署的闭环。 损失函数怎么选框架内置三种损失模式通过--loss_mode切换模式适用场景特点cosine-softmax默认大多数 Re-ID 任务用余弦相似度 可学习 scale训练稳定推荐首选triplet小数据集、类内差异大Soft-margin triplet loss对 hard negative 敏感magnet中等规模数据自适应密度判别类间间隔自动调节论文实验表明在 Market1501 上cosine-softmax综合表现最优新手建议从这里起步。 总结扩展清单✅ 组织数据目录按身份ID/摄像头/图片.jpg三级结构存放✅ 编写datasets/custom.py返回(路径列表, ID 列表, 摄像头列表)✅ 编写train_custom.py调用train_app.train_loop设置正确的num_classes和image_shape✅ 训练 → CMC 验证 → 导出.pb三步完成模型交付掌握这套流程后无论你的数据来自园区摄像头、商场监控还是手机相册都能在cosine_metric_learning框架上快速训练出专属的行人重识别模型 【免费下载链接】cosine_metric_learningDeep Cosine Metric Learning for Person Re-identification项目地址: https://gitcode.com/gh_mirrors/co/cosine_metric_learning创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表