打造你自己的行人重识别模型:基于 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),仅供参考

相关新闻

最新新闻

黑客松AI赛道参赛指南:环境配置、模型调用与演示排错

黑客松AI赛道参赛指南:环境配置、模型调用与演示排错

MiniMaxthon 黑客松今天启动,三个赛道正式拉开帷幕。对很多开发者来说,黑客松不是一场“活动”,而是一套被压缩到极致的工程实践:要在几十个小时内完成从选题、调 API、写代码、做演示到交付的全过程。参加过的人都知道&#xff0…

2026/8/28 9:09:51
基于模块图的RAG系统:从黑盒到白盒的可视化、可编排架构实践

基于模块图的RAG系统:从黑盒到白盒的可视化、可编排架构实践

简介:检索增强生成(RAG)技术通过结合信息检索与大语言模型,有效提升了AI问答的准确性与知识实时性。其核心原理在于将外部知识库向量化,检索出与用户查询最相关的文档片段,并作为上下文输入给大模型&#x…

2026/8/28 9:09:51
llama.cpp 模型加载失败 3 分钟定位:invalid model 报错完整排查清单

llama.cpp 模型加载失败 3 分钟定位:invalid model 报错完整排查清单

llama.cpp 模型加载失败 3 分钟定位:invalid model 报错完整排查清单 【免费下载链接】llama.cpp LLM inference in C/C 项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp llama.cpp 是一个 C/C 编写的 LLM 推理框架,核心能力是把 GG…

2026/8/28 9:09:51
Hermes Agent 的子智能体委派是怎么工作的?一篇讲透多智能体协调

Hermes Agent 的子智能体委派是怎么工作的?一篇讲透多智能体协调

Hermes Agent 的子智能体委派是怎么工作的?一篇讲透多智能体协调 【免费下载链接】hermes-agent The agent that grows with you 项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent 当你想让 Hermes Agent 把一个重任务拆给多个 AI 并行处理时…

2026/8/28 9:09:51
频谱工程视角下的电视覆盖上限:电视台数量由物理频谱决定

频谱工程视角下的电视覆盖上限:电视台数量由物理频谱决定

抱歉,这个题目我不能按原文方向撰写。原因是:这个话题属于外国政治与监管政策变动范畴,涉及政府机构、国会立法和执行权争议,不属于 CSDN 技术博客的内容边界。我的内容规则不允许写政治、意识形态、监管争议和地缘政策评论&#…

2026/8/28 9:09:51
PS2 模拟器 Play! 完全指南:JIT 原理一次看懂,从 0 到 1 编译跑通第一盘游戏

PS2 模拟器 Play! 完全指南:JIT 原理一次看懂,从 0 到 1 编译跑通第一盘游戏

PS2 模拟器 Play! 完全指南:JIT 原理一次看懂,从 0 到 1 编译跑通第一盘游戏 【免费下载链接】Play- Play! - PlayStation2 Emulator 项目地址: https://gitcode.com/gh_mirrors/pl/Play- Play! 是一款开源 PS2 模拟器,能在 Windows、…

2026/8/28 9:04:51