ReID基础 | 表征学习和度量学习
文章目录
- 1. 分类
- 2. 表征学习
- 2.1 概述
- 2.2 分类损失
- 2.3 属性损失
- 2.4 验证损失
- 3. 度量学习
- 3.1 概述
- 3.2 对比损失
- 3.3 三元组损失
- 3.4 改进三元组损失
- 3.5 四元组损失
- 3.6 TriHard loss
- 4. 表征学习与度量学习的对比
1. 分类
从训练reid网络的损失函数方面进行分类,可以分为表征学习和度量学习。
- 表征学习的方法没有直接在训练网络的时候考虑图片间的相似度,而是把行人重识别任务当做分类问题或者验证问题来看待。
- 度量学习旨在通过网络学习出两张图片的相似度。在行人重识别问题上,表现为同一行人的不同图片间的相似度大于不同行人的不同图片相似度。
2. 表征学习
2.1 概述
- 分类损失(ID损失):利用行人的ID作为训练标签来训练模型,每次只需要读入一张图片。
- 验证损失(Verification Loss):输入一对行人图片,让网络来学习这两张图片是否属于同一个行人,等同于二分类问题。
- 总结:通常需要额外的FC层来辅助学习,测试阶段FC层丢弃;ID损失的FC层维数和ID数量一致,当训练集太大时网络巨大,训练收敛很难;验证损失测试的时候需要输入一对图片,效率低;但是,表征学习训练比较稳定,结果容易复现。
2.2 分类损失
- 只有ID损失的网络称为ID Embedding网络(IDE网络)
- 训练集中行人的ID数为网络的类别数
- 特征层获得ReID特征,后面接一个分类FC,经过Softmax激活函数计算交叉熵损失。
- 测试阶段丢弃分类FC和softmax
2.3 属性损失
- 可以同时连接几个属性分类损失增强Reid特征的性能。每一个属性损失都是一个分类的交叉熵。测试阶段丢弃所有的FC和softmax,只使用ReID特征。
2.4 验证损失
- 每次输入两张图片,进入同一个孪生网络提取特征,然后融合两个特征信息(例如两个特征做减法,通过一个FC)计算一个二分类损失。训练阶段可以和ID损失一起使用。
3. 度量学习
3.1 概述
- 定义一个映射,将图片从原始域映射到特征域;之后再定义一个距离度量函数来计算这两个特征向量之间的距离;最后通过最小化网络的度量损失,来寻找一个最优的映射,使得相同行人两张图片的距离尽可能小,不同行人的两张图片的距离尽可能大(图片在特征空间聚类)。这个映射就是我们训练得到的深度卷积网络。
- 常用度量函数:欧氏距离、余弦距离。
- 常用度量学习损失:对比损失(Contrastive loss)、三元组损失(Triplet loss)、改进三元组损失(Improved triplet loss)、四元组损失(Quadruplet loss)、Triplet loss with hard example mining(TriHard loss)
- 总结:网络大小与训练集规模无关,但是数据采集器(组成三元组等)时间消耗会增加;TriHard loss 为目前业界度量学习的标杆;
3.2 对比损失
损失函数公式:
Lc=ydIa,Ib2+(1−y)(α−dIa,Ib)+2L_{c}=yd^{2}_{I_{a},I_{b}}+(1-y)(\alpha-d_{I_{a},I_{b}})^{2}_{+} Lc=ydIa,Ib2+(1−y)(α−dIa,Ib)+2
dIa,Ib=∥fIa−fIb∥d_{I_{a},I_{b}}=\left \| f_{I_{a}}-f_{I_{b}} \right \|dIa,Ib=∥fIa−fIb∥
其中(z)+=max(z,0)(z)_{+}=max(z,0)(z)+=max(z,0),输入为一对正样本时y=1;一对负样本时y=0。dIa,Ibd_{I_{a},I_{b}}dIa,Ib为两张图片特征的距离。
目标:每次输入一对样本图片,拉近正样本对间的距离趋于0,推开负样本对间距离大于a。
3.3 三元组损失
损失函数公式:
Lt=(da,p−da,n+α)+L_{t}=(d_{a,p}-d_{a,n}+\alpha )_{+}Lt=(da,p−da,n+α)+
上式等价于da,p+α<da,nd_{a,p}+\alpha <d_{a,n}da,p+α<da,n
输入三张图片,Anchor(随机挑选的一张锚点图片),Positive(和Anchor属于同一行人的正样本),Negative(负样本)。
目标:拉近A和P之间的距离,推远A和N之间的距离。
分析:(x)+的意思是max(x, 0)。当负样本对的距离小于正样本对的距离加上a时,()里的数大于0,就会产生损失;当负样本对的距离大于正样本对距离加上a时,损失为0。
缺陷:只是计算的AP和AN之间的差值,没有考虑到AP之间的绝对距离。
3.4 改进三元组损失
与三元组损失相比,添加了正样本对之间的距离约束。
损失函数公式:
Lit=da,p+(da,p−da,n+α)+L_{it}=d_{a,p}+(d_{a,p}-d_{a,n}+\alpha )_{+}Lit=da,p+(da,p−da,n+α)+
3.5 四元组损失
输入四张图片,Anchor,Positive,Negative1,Negative2。其中N1和N2属于不同的ID。
损失函数公式:
Lt=(da,p−da,n1+α)++(da,p−dn1,n2+β)+L_{t}=(d_{a,p}-d_{a,n1}+\alpha )_{+}+(d_{a,p}-d_{n1,n2}+\beta )_{+}Lt=(da,p−da,n1+α)++(da,p−dn1,n2+β)+
第一项为正常的三元损失,第二项为弱推动的三元组损失(通常 a<b)。
3.6 TriHard loss
难样本挖掘:传统的度量学习方法是随机采样组成元组样本对,但是采集的样本通常非常容易识别,不利于训练表达能力强的ReID网络。
TriHard loss的核心思想:对每一个训练batch挑选P个ID的行人,每个行人,随即挑选K张不同的图片,即一个batch含有PXK张图片。之后对batch中的每一张图片a,挑选一个最难的正样本和一个最难的负样本组成一个三元组。
损失函数公式:
Lth=1P×K∑a∈batch(maxda,p−minda,n+α)+L_{th}=\frac{1}{P\times K}\sum_{a\in batch}^{}(max d_{a,p}-mind_{a,n}+\alpha )_{+}Lth=P×K1a∈batch∑(maxda,p−minda,n+α)+
TriHard loss 只考虑了极端样本的信息。还有一种自适应权重损失,Triplet loss with adaptive weights 可以根据样本对之间的距离计算自适应权重。对于正样本对,距离越大,我们希望它能够提供更多的信息,赋予的权重也就越大;对于负样本对,距离越小,希望能够得到更多的信息,赋予的权重越大。
4. 表征学习与度量学习的对比
- 特征空间对比:表征学习(分类损失)学习的是一个分界面,一般不能直接作距离度量,通常使用归一化处理(例如归一化到球面上)或者计算余弦距离(因为样本的距离虽然远,倒是角度分布很小);度量学习直接聚类,训练出来的特征在特征空间有很好的聚类属性,可以直接计算距离。
- 表征学习和度量学习可以一起使用。
ReID基础 | 表征学习和度量学习相关推荐
- 【ReID】表征学习和度量学习
文章目录 1.表征学习 1.1分类损失 1.2验证损失 1.3表征学习总结 2.度量学习 2.1 Introduction 2.2 对比损失 2.3 三元组损失 2.4 改进三元组损失 2.5 四元组 ...
- 对比学习和度量学习loss的理解
度量学习和对比学习的思想是一样的,都是去拉近相似的样本,推开不相似的样本.但是对比学习是无监督或者自监督学习方法,而度量学习一般为有监督学习方法.而且对比学习在 loss 设计时,为单正例多负例的形式 ...
- 什么是度量学习?度量学习如何实现?
度量学习 (Metric Learning) == 距离度量学习 (Distance Metric Learning,DML) == 相似度学习. 在数学中,一个度量(或距离函数)是一个定义集合中元素 ...
- 度量学习(Metric Learning)基础概念
一.什么是度量学习? 度量学习 (Metric Learning) == 距离度量学习 (Distance Metric Learning,DML) == 相似度学习. 在数学中,一个度量(或距离函数 ...
- Multi-Scale Metric Learning for Few-Shot Learning(用于小样本学习的多尺度度量学习)
Abstract 本文提出了一种新的小样本学习方法,名字叫多尺度度量学习(multi-scale metric learning, MSML),能提取多尺度特征,学习样本间的多尺度关系,进行少镜头学习 ...
- Metric Learning——度量学习
2018年04月10日 15:30:29 敲代码的quant 阅读数:1567 标签: 度量学习metric learning机器学习聚类 更多 个人分类: 机器学习 版权声明:本文为博主原创文章,未 ...
- 墨奇科技博客 | 理解度量学习的新姿势
在身份识别领域,特征的稳定性一直是影响认证精度的重要因素.为了支持特征提取的稳定性,很多方案都会选择比较固定单一的采集方式来获取生物特征,但是这样的采集方式已经不能满足现代身份认证/识别系统的需求. ...
- TripletsLoss不是解决距离的银色子弹,而是打开度量学习的大门钥匙
TripletsLoss不是向量距离的银色子弹,而是打开度量学习的大门钥匙 前言 表征学习和度量学习 回顾度量学习loss损失函数 Triplet-loss之门后,还有哪些loss mining方法值 ...
- 度量学习:ArcFace算法和工程应用总结
目录 前言 1 度量学习简介 2 ARCFace介绍 3 实际应用时的探讨 探讨1:类似于人脸识别这样的应用,从0到落地应用的大概流程是怎样的? 探讨2:怎么评估这个特征提取器网络训练好了? 探讨3: ...
最新文章
- QT 4.8.5支持电容触摸屏 和 鼠标
- Session执行机制与原理
- linux:tomcat写入文件失败
- Applying Multicycle Exceptions in the TimeQuest Timing Analyzer--Altera Note
- Linux下MySQL server和client安装
- 图层重命名快捷键_玩转CAD快捷键(大全),一篇文章就够了
- 为什么数据可视化很重要
- 导出微信添加的自定义表情(动图)
- LaTeX 页眉设置
- 虚拟机创作ubuntu18的ISO镜像
- Linux中ps命令详解
- 关于程序员的20 幅幽默漫画,太真实了!
- 《人类简史》这本烧脑书风靡全球的秘密是什么?
- 浅谈ALM与PLM区别
- 【板栗糖GIS】在使用EPS导入dwg时显示SSDWGX组件未注册该怎么办
- vue中Echarts之省市地图(北京市)展示相关数据
- 数据分析师入门推荐书单
- 三亚将建智慧旅游大数据应用平台
- Matlab画密度函数分布图
- Windows 8/Server 2012/Office 2013 所有版本下载