论文:https://arxiv.org/pdf/2103.04607.pdf

问题

  • 对于跨膜态难样本三元组损失, 在一批中选择P个身份ID,对每个ID随机选择K张可见图像和K张红外图像。这样的采样策略确保每个ID在训练阶段都有足够的和相同数量的图像。

  • 这种情况遇到的问题: 形成三元组的所有样本有可能属于同一模态。就有可能导致在每次迭代中,一种模态被优化得更多,而另一种模态被优化得更少,这种不平衡将使模型难以拟合较少优化的模态。

    模型

  • 网络比较简单,没有增加复杂的模块。首先,引入了随机灰度作为一种数据增强方法,它随机选择具有0.5概率的部分可见图像,将其转换为灰色图像,来减少模态差异。网路bakbone选用resnet50,参数共享。使用1x1卷积层,降低特征图的通道维度。使用平均池化将特征图变为一维向量。最后,使用我们训练的三个损失函数来训练网络(全样本三元组损失、余弦ID损失、全样本中心损失)。

Cross Modality Batch Hard Triplet loss

  • 为了解决上面的问题,有文献提出了在保留(1)的同时,添加一个跨模态三元组损失。添加的这个三元组,anchor来自一个模态,正负样本来自另一个模态。最终的损失包含了全局三元组损失和跨模态三元组损失。

    创新点

1.(1)Unified Batch All Triplet Loss

  • 作者认为与其设计三元组的采样策略,不如把所有样本都用来计算三元组损失。具体的,对于每一个anchor,依次遍历所有正样本和负样本,全部用来形成三元组。最后,再遍历每个样本anchor,对所有的anchor三元组求和。

  • 对于每个anchor,会有2K-1个正样本,2PK-2K个负样本,每个anchor总共2(P-1)K(2K-1)个三元组。这样就考虑了所有的可能情况,不会出现优化不平衡的现象。然而计算复杂度太高,于是作者做了一下改进,提

    (1.1)改进的Unified Batch All Triplet loss。

  • 其中γ是比例因子,m是边际项。S(x, y)计算x和y之间的余弦相似度。与Batch All Triplet loss类似,Unified Batch All Triplet loss也考虑了样本中所有可能的三元组。不同的是,统一批处理全三元组丢失将计算复杂度从O(2(P−1)K(2K−1))降低到O(2(P−1)K + (2K−1))。而且,统一批处理所有三元组损耗用exp(•)代替函数[•]+,使所有三元组都能贡献适当的损失,而不是大于margin的三元组。值得注意的是,与优化欧氏距离的普通三元组损耗不同,统一批处理全三元组损耗优化余弦相似度。

    还是考虑所有样本形成三元组。只是将计算量降到了2(P-1)K + (2K-1)。另外,用exp替换[]+,这样所有的三元组都能造成适当的损失,而不只有大于margin的三元组。γ是比例因子,S是余弦距离。

    • 图解说明

2. Collaborative Optimization with Cosine Softmax Loss

普通计算ID损失:W是FC层参数。pi表示xi被正确分类的概率。yi是xi的类。Wj表示W中的第j列,Wj可以看作是j类的中心。 其中Pi表示正确分类的概率。N为训练样本数,C为类数。yi是xi的标签类。

Wj表示W中的第j列,Wj可视为j类的中心,因此Softmax损失优化了每个图像向量与其类中心的内积。

问题

在计算ID损失的时候,Softmax loss是计算的向量内积;三元组损失计算的是向量之间的欧氏距离。它们不一致。更糟糕的是,在推理阶段,通常使用L2标准化向量,这意味着不管是向量内积还是欧几里得距离作为推理中的度量函数,它都相当于余弦距离。这与训练过程中使用的度量函数不一致。

为了解决这些问题,作者代替softmax loss,引入了Cosine Softmax loss。S计算余弦距离。

通过比较,Cosine Softmax loss 和 Softmax loss的区别是,前者优化了样本向量和权重向量之间的余弦距离,而后者优化了向量内积。此外,Cosine Softmax loss增加了一个margin,使属于同一类的点更加集中。

2.1 Batch All Hetero Center Triplet Loss

有文献提出难挖掘的异质中心三元组损失,考虑每个ID中心之间的距离。同ID的两模态特征中心的距离要小于该中心和其他所有中心距离一个margin。

其中vji为批次中第i个人的第j个可见图像,tji为批次中第i个人的第j个红外图像。因此,文明是人的可见形态中心,城市是人的红外形态中心。D(x, y)为向量x和y之间的欧氏距离。如图3a所示,对于每个锚中心,批量硬异质中心三元组损失选择同类但形态不同的中心作为正样本,选择不同类中最硬的中心作为负样本,形成最硬的中心三元组。批量硬异质中心三联体损耗缩短了同一类的模态中心距离,增大了不同类之间的中心距离。

作者也是觉得应该考虑所有样本。所以对此进行改进,提出了Batch All Hetero Center Triplet Loss。v¯表示L2标准化向量。它考虑了所有的中心三元组,并优化了余弦距离。

其中¯vij和¯tij是L2归一化向量,那么¯civ和¯cit是L2归一化向量的中心。S(x, y)计算x和y之间的余弦相似度。我们的批处理所有异质中心三元组损失的公式与统一批处理所有三元组损失的公式相似。如图3b所示,它考虑了所有中心三元组,并优化了余弦距离

图解

总损失

在推断阶段,我们使用cos距离作为度量函数:

实验

参考博客 https://blog.csdn.net/tt_sunshine/article/details/127171541

Unified Batch All Triplet Loss for Visible-Infrared Person Re-identification相关推荐

  1. Re-ID with Triplet Loss

    一篇讲Person Re-ID的论文,与人脸识别(认证)有很多相通的地方. 文章链接: <In Defense of the Triplet Loss for Person Re-Identif ...

  2. 论文笔记3 --(ReID)In Defense of the Triplet Loss for Person Re-Identification

    <In Defense of the Triplet Loss for Person Re-Identification> 论文:https://arxiv.org/abs/1703.07 ...

  3. MXNet/Gluon 中 Triplet Loss 算法

    Triplet Loss,即三元组损失,用于训练差异性较小的数据集,数据集中标签较多,标签的样本较少.输入数据包括锚(Anchor)示例⚓️.正(Positive)示例和负(Negative)示例,通 ...

  4. Triplet Loss: A Unified Embedding for Face Recognition and Clustering(论文阅读笔记)(2015CVPR)

    论文链接:<FaceNet: A Unified Embedding for Face Recognition and Clustering> 摘要 尽管人脸识别领域最近取得了重大进展[1 ...

  5. CV之FRec之ME/LF:人脸识别中常用的模型评估指标/损失函数(Triplet Loss、Center Loss)简介、使用方法之详细攻略

    CV之FRec之ME/LF:人脸识别中常用的模型评估指标/损失函数(Triplet Loss.Center Loss)简介.使用方法之详细攻略 目录 T1.Triplet Loss 1.英文原文解释 ...

  6. 一文理解Ranking Loss/Margin Loss/Triplet Loss

    点击蓝字  关注我们 作者丨土豆@知乎 来源丨https://zhuanlan.zhihu.com/p/158853633 本文已获授权,未经作者许可,不得二次转载. 前言 Ranking loss在 ...

  7. 三元组损失(Triplet loss)

    来源:Coursera吴恩达深度学习课程 在人脸识别中,我们希望学习"输入两张人脸图片,然后输出相似度"的函数d,然后Siamese 网络(Siamese network)实现了这 ...

  8. Triplet Loss 实现

    按照我原来的想法,Triplet Loss 三元组应该是这样选择的: (1) 前馈操作: cnn 先执行forward 操作,获取到embedding 的具体值后,再去用非 tf 函数去处理embed ...

  9. 【翻译】HyNet: Learning Local Descriptor with Hybrid Similarity Measure and Triplet Loss

    一篇很nice的论文 大部分机翻,可能有不通的地方,建议结合原文一起看 基于Hybrid Similarity Measure和Triplet Loss的局部描述子学习 摘要 最近的研究表明,局部描述 ...

最新文章

  1. Next.js踩坑入门系列(七) —— 其他相关知识
  2. jquery清空div内容_jQuery常用功能
  3. 用StringBuilder 或StringBuffer: 把字符串“ABCDE”,转变成字符串“A,B,C,D” (注意,最后一个E是需要删除的)
  4. c++ 反射_固体火箭发动机黏接壳体超声C扫描检测系统研制与应用
  5. leetcode 148. 排序链表(归并排序)
  6. 红黑树的删除_红黑树
  7. Spring源码分析之lazy-init属性的配置
  8. Android Intent机制与常见的用法
  9. Codeforces Round #554 (Div. 2) 1152B. Neko Performs Cat Furrier Transform
  10. JavaScript-161:表格全行变色
  11. 计算机专业综合改革举措,数学与应用数学专业综合改革的举措数学论文(9页)-原创力文档...
  12. HTML / CSS / JS 编程入门 —— 使用 Lightly 制作可切换主题的简单网页
  13. github镜像网站_Jenkins把GitHub项目做成Docker镜像
  14. Ubuntu16-18任务栏、启动器、收藏夹建立快捷图标的方法
  15. highCharts第一天学习笔记(面积图)
  16. 字节跳动内推 校招 社招 实习生都可以投递
  17. 白告王旋的前端开发笔记——性能优化
  18. 阿里大数据之路:数据管理篇大总结
  19. SQL 使用ADD_MONTHS或ADDDATE实现RFM参数—R(Recency)
  20. 解决layui的table数据重载reload where参数会保留上次条件的问题

热门文章

  1. Windows Media Player控件的所有属性和方法
  2. chromebook刷机_如何自定义Chromebook的键盘和触摸板
  3. zigbee网络启动流程 ---- 协调器
  4. SUP桨板电动气泵方案——鼎盛合方案
  5. jQuery事件-鼠标事件
  6. Linux都应用在哪些领域?发展如何?
  7. 面向医学图像分析的深度学习研究方案
  8. 根据指定字符拆分字符串
  9. 力软:九年沉淀,从呱呱坠地到风华少
  10. Redux源码分析--Enhancer