尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

余弦度量的魔力:cosine_metric_learning的cosine-softmax损失如何让Deep SORT追得更准

余弦度量的魔力:cosine_metric_learning的cosine-softmax损失如何让Deep SORT追得更准 余弦度量的魔力cosine_metric_learning的cosine-softmax损失如何让Deep SORT追得更准【免费下载链接】cosine_metric_learningDeep Cosine Metric Learning for Person Re-identification项目地址: https://gitcode.com/gh_mirrors/co/cosine_metric_learningcosine_metric_learning是 Deep SORT 多目标跟踪器的官方配套训练项目通过 cosine-softmax 余弦度量损失训练行人重识别特征网络让目标跟踪在多摄像头、遮挡场景下追得更准。本文带你快速理解其原理并跑通 Market1501 与 MARS 数据集的完整训练流程。 什么是 cosine_metric_learning一句话概括它训练一个会认人的神经网络并把它冻结成mars.pb供 Deep SORT 调用。在多目标跟踪中当目标被遮挡几秒后再出现跟踪器需要回答一个问题——新出现的这个检测框是不是刚才那个人答案就藏在**行人重识别Person Re-identification**特征里。本项目基于 2018 年 WACV 论文《Deep Cosine Metric Learning for Person Re-identification》提供能力对应文件3 种损失函数cosine-softmax / magnet / triplettrain_app.pySoft-margin 三元组损失与磁体损失实现losses.pyDeep SORT 残差骨干网络ELU 批归一化nets/deep_sort/network_definition.py余弦距离 / 平方距离度量与 CMC 指标metrics.py异步队列训练器queued_trainer.pyMarket1501 / MARS 数据集加载datasets/market1501.py、datasets/mars.py训练与特征导出入口train_market1501.py、train_mars.py 核心原理cosine-softmax 到底余弦在哪里传统 softmax 分类器只做分对人但特征向量的长度会不受控导致推理时用欧氏距离比较时不稳定。cosine-softmax 的巧妙之处在于三点L2 归一化特征网络输出的特征先被归一化为单位向量见 network_definition.py 中的l2_normalize只保留方向、丢弃长度球面原型mean vectors每个身份对应一个可学习的均值向量同样被归一化到单位球面上可学习温度 scalelogits scale × (特征 · 原型)即对余弦相似度乘以缩放系数。这样一来损失函数优化的目标等价于同一人的特征方向聚拢、不同人的特征方向远离——正是余弦度量学习Cosine Metric Learning的定义。而 metrics.py 中的cosine_distance函数余弦距离 1 − 余弦相似度在评估 CMC 指标时与训练目标完全一致实现训练什么、就度量什么。 项目同时内置magnet磁体损失和triplet软边界三元组损失见 losses.py作为对照基线方便你用--loss_mode一键切换实验。 项目结构与目录速览cosine_metric_learning/ ├── train_market1501.py # Market1501 训练 / 评估 / 导出入口 ├── train_mars.py # MARS 训练 / 评估 / 导出入口 ├── train_app.py # 训练主循环、损失分发、模型冻结 ├── queued_trainer.py # 基于队列的异步数据训练器 ├── losses.py # 三元组损失、磁体损失 ├── metrics.py # 距离度量、CMCk 流式指标 ├── vis_tools.py # t-SNE 特征可视化散点图 ├── datasets/ # Market1501 / MARS 数据读取 └── nets/deep_sort/ # Deep SORT 骨干网络定义训练时每个身份固定采样 4 张图片num_images_per_id4由 queued_trainer.py 的random_sample_identities_forever生成器无限循环取样配合 10% 训练集留出做验证——这是行人重识别训练的标准配方。 快速上手三步跑通 Market1501 训练第 1 步启动训练默认即 cosine-softmax 损失python train_market1501.py \ --dataset_dir./Market-1501-v15.09.15/ \ --loss_modecosine-softmax \ --log_dir./output/market1501/ \ --run_idcosine-softmax第 2 步TensorBoard 监控训练曲线tensorboard --logdir ./output/market1501/cosine-softmax --port 6006第 3 步并行运行 CMC 评估CPU 上阻塞等待 checkpointCUDA_VISIBLE_DEVICES python train_market1501.py \ --modeeval \ --dataset_dir./Market-1501-v15.09.15/ \ --loss_modecosine-softmax \ --log_dir./output/market1501/ \ --run_idcosine-softmax \ --eval_log_dir./eval_output/market1501评估结果Precision1 / 5 / 10 / 20会实时写入 TensorBoard随时确认模型是否在变强。MARS 数据集的完整流程见 README.md命令结构与 Market1501 完全一致。 模型导出一行命令接入 Deep SORT训练结束后只需把 checkpoint 冻结为纯推理图python train_mars.py --modefreeze --restore_pathPATH_TO_CHECKPOINT生成的mars.pb可直接喂给 Deep SORT 跟踪器。同理--modeexport能把测试集特征导出为.mat文件配合数据集官方评测脚本完成最终测试注意评测侧需把最大池化换成平均池化并做二次归一化与训练时的余弦度量对齐。❓ 常见问题为什么不用现成的 ImageNet 预训练特征行人重识别跨摄像头分布差异极大需要按身份监督训练度量空间这正是 cosine-softmax 解决的问题。三种损失怎么选论文结论是 cosine-softmax 最优且最稳magnet和triplet留作消融对比切--loss_mode即可。如何验证特征学得好vis_tools.py 提供 t-SNE 散点工具把特征小图拼成一张大图肉眼可见同一个人聚成一团。预训练模型哪里找论文配套的预训练模型下载地址与数据集说明均写在 README.md 中。✅ 小结cosine_metric_learning 用单位球面上的余弦相似度重新定义了行人重识别的训练目标是 Deep SORT 能精准关联跨帧、跨摄像头检测的关键一环。理解它的三条主线——L2 归一化特征、球面原型、可学习温度——你就能举一反三地把它迁移到其他度量学习任务中。【免费下载链接】cosine_metric_learningDeep Cosine Metric Learning for Person Re-identification项目地址: https://gitcode.com/gh_mirrors/co/cosine_metric_learning创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表