精华内容
下载资源
问答
  • 2021-06-23 15:51:17

    最近的工作用是深度度量学习的改进,这里将DML进行一个总结。

    根据个人的理解,开篇用一句话介绍一下度量学习:

    “不同于分类学习,度量学习是通过学习数据之间的相似性程度来获得一个更有意义或者说更具可分性的特征空间。”

    Traditional metric learning

    核心目的:

    1 通过一个optimal的距离度量来判断样本之间的相似性

    2 减小相似样本之间的距离,增加不相似样本之间的距离

    限制条件:往往利用的的是线性映射,导致很难解决实际问题中的non-linear问题。(当然大部分传统方法都会遇到这个问题,最常见的方法就是核方法,譬如SVM原本只能解决线性分类,但是加入高斯核或多项式核就可以解决非线性分类,还有PCA-KPCA这些)

    Deep metric learning(DML)

    通过深层结构,学习到高抽象化的非线性特征以及数据之间的相似性关系。

    DML三大关键点: 采样策略、合适的距离度量函数以及模型结构,因此当前DML模型往往基于指定任务在这些方面进行改进。[1]

    距离度量

    度量学习希望学习到一种distance metric,使得在该distance metric下,相似数据(不相似数据)能够在空间中有更好的分布。最经典的就是利用马氏距离(Mahalanobis distance),如下式,其中 x i ∈ R m x_i \in R^m xiRm
    D ( x i , x j ) = ( x i − x j ) T M ( x j − x j ) D(x_i, x_j) = \sqrt{(x_i-x_j)^TM(x_j-x_j)} D(xi,xj)=(xixj)TM(xjxj)
    作为一个距离函数,那么一定要包含几个性质:非负、对称以及三角不等,如果想在度量上进行创新一定要注意这些。马氏距离中的 M M M具有半正定和对称性,那么根据矩阵理论相关知识, M M M的特征值要全部非负,且存在n阶实矩阵 W W W使得 M = W T W M = W^TW M=WTW ,则上述式子可以转化为:
    D ( x i , x j ) = ( x i − x j ) T W T W ( x j − x j ) = [ ( x i − x j ) T W T ] [ W ( x j − x j ) ] = ( W x i − W x j ) T ( W x j − W x j ) = ∥ W x i − W x j ∥ D(x_i, x_j) = \sqrt{(x_i-x_j)^TW^TW(x_j-x_j)} \\ = \sqrt{[(x_i-x_j)^TW^T][W(x_j-x_j)]} \\ =\sqrt{(Wx_i-Wx_j)^T(Wx_j-Wx_j)} \\ =\left \| Wx_i - Wx_j \right \| D(xi,xj)=(xixj)TWTW(xjxj) =[(xixj)TWT][W(xjxj)] =(WxiWxj)T(WxjWxj) =WxiWxj
    OK,那从上面这个式子可以看到,原始空间的马氏距离就对应经过一个线性映射 W W W之后新空间中的欧氏距离,也就是说基于马氏距离的度量学习其实就是学习一个 W W W,经过这个矩阵的映射之后的数据点具有相似数据更近,不相似数据更远的特性。同时,学习的矩阵是一个线性映射,也就意味着仅用这种方式是无法解决非线性问题的,因此就要学习$ f(x)$, DML就是利用强大的特征学习能力,学习到这样一个映射。

    采样

    采样策略在DML中扮演着一个非常重要的角色,一个好的采样策略可以大大提升模型的效果以及计算速度。采样策略的发展如下:在这里插入图片描述
    关于DML中采样策略发展历史中几个比较关键的节点

    1 2006年 大神Lecun提出的孪生网络,其中采样是先随机选一个样本,然后0.5的概率从同类样本中随机采样,0.5的概率从不同类样本采样[2]

    2 后来发现,很多简单的样本对学习模型并没有作用,因此提出了hard sample mining[3]

    3 另一个经典DML模型三元组网络,同时选择anchor, positive sample和negative sample作为输入,同时考虑同类与异类的距离关系[4]

    4 将三元组与hard sample mining结合。[5]

    提到的hard negative sample是什么呢?
    在这里插入图片描述

    如上图所示,黑色点代表anchor 和 positive sample , 橙色点 1 2 3 分别是negative sample,在采样的时候 如果我们选择3作为负例,其实对模型的学习是没有意义的,因为此时负例与anchor之间的距离已经大于正例与anchor之间的距离加上一个期望的margin(这就是随机采样,不考虑hard negative sample)。因此其实只有采样1 和 2才是真正有意义的,但还有一个问题是如果我们选择1,也就是 hard negative,出现的问题就是 后续的loss会很大,对应的梯度也会很大,模型会很难收敛。那么最好的采样就是2, 距离大于正例与anchor的距离,同时不超过一个期望的margin,那么模型学习起来就会轻松。

    Loss function

    这一节会介绍一些经典的DML中用到的loss function,排序按照提出的先后顺序。所用到的距离函数如下,其中G代表网络映射函数。
    D ( X 1 , X 2 ) = ∥ G ( X 1 ) − G ( X 2 ) ∥ D(X_1,X_2) = \left \| G(X_1) - G(X_2) \right \| D(X1,X2)=G(X1)G(X2)
    1 Contrastive loss [2]

    对比损失是Lecun 孪生网络论文中提到的损失函数,如前面提到的,采样是正负样本随机采样,如果是正采样则参数Y = 0 ,否则参数Y = 1. 损失函数如下:
    L o s s = ( 1 − Y ) 1 2 ( D ( X 1 , X 2 ) ) 2 + Y 1 2 m a x ( 0 , m a r g i n − D ( X 1 , X 2 ) ) 2 Loss = (1 - Y)\frac{1}{2}(D(X_1,X_2))^2 + Y\frac{1}{2}{max(0, margin -D(X_1,X_2))}^2 Loss=(1Y)21(D(X1,X2))2+Y21max(0,marginD(X1,X2))2
    该函数的目的是,当两个样本同类时,希望D减小,当两个样本异类时,希望D增加,同时如果D超过设定的margin,则不再进行模型更新。

    2 Triplet loss [4]

    三元损失如前面介绍的,同时选择anchor,positive 和 negative。损失函数如下:
    L o s s = m a x ( 0 , D ( X , X p ) − D ( X , X n ) + a ) Loss = max(0, D(X,X_p) - D(X,X_n) + a) Loss=max(0,D(X,Xp)D(X,Xn)+a)
    该损失函数同时考虑anchor 与 positive sample和 negative sample的距离关系,并且考虑的是相对距离关系,如果 D ( X , X n ) > D ( X , X P ) + a D(X,X_n) > D(X,X_P) + a D(X,Xn)>D(X,XP)+a, 参数就不会更新.

    3 Angular loss [6]

    角损失不同于前面两个损失,而是通过角度约束负例样本。
    L o s s = m a x ( 0 , D ( X , X p ) − 4 t a n 2 α D ( X n , X c ) ) Loss = max(0, D(X,X_p) - 4tan^2\alpha D(X_n,X^c)) Loss=max(0,D(X,Xp)4tan2αD(Xn,Xc))
    损失函数中 X c X^c Xc是正例样本的clustering center ,也就是说通过一种角度度量来限制负例样本和正例样本聚类中心的距离。

    其他一些loss包括Quadruplet loss[7]通过再增加一个跟anchor接近的样本,实现四元组; Stuctured loss[8]利用了训练过程中的结构化信息(距离向量转化为距离矩阵); N-pair Loss[9]利用多类别数据解决收敛慢和局部最优的问题…

    参考文献

    [1]Kaya, Bilge. Deep Metric Learning: A Survey. Symmetry. 2019;11(9):1066. doi:10.3390/sym11091066

    [2]Hadsell, R.; Chopra, S.; LeCun, Y. Dimensionality Reduction by Learning an Invariant Mapping.
    In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), New York, NY,
    USA, 17–22 June 2006; pp. 1735–1742.

    [3]Simo-Serra, E.; Trulls, E.; Ferraz, L.; Kokkinos, I.; Fua, P.; Moreno-Noguer, F. Discriminative learning of deep
    convolutional feature point descriptors. In Proceedings of the IEEE International Conference on Computer
    Vision (ICCV), Santiago, Chile, 11–18 December 2015; pp. 118–126.

    [4]Hoffer, E.; Ailon, N. Deep Metric Learning Using Triplet Network. In Progress in Pattern Recognition, Image
    Analysis, Computer Vision, and Applications; Springer: Berlin/Heidelberg, Germany, 2015; Volume 9370,
    pp. 84–92.

    [5]Lin, Y.; Cui, Y.; Zhou, F.; Belongie, S. Fine-Grained Categorization and Dataset Bootstrapping Using Deep
    Metric Learning with Humans in the Loop. In Proceedings of the IEEE International Conference on Computer
    Vision (ICCV), Venice, Italy, 22–29 October 2017; pp. 1153–1162

    [6]Wang, J.; Zhou, F.; Wen, S.; Liu, X.; Lin, Y. Deep Metric Learning with Angular Loss. In Proceedings of the
    IEEE International Conference on Computer Vision (ICCV), Venice, Italy, 22–29 October 2017; pp. 2593–2601.

    [7]Ni, J.; Liu, J.; Zhang, C.; Ye, D.; Ma, Z. Fine-grained Patient Similarity Measuring using Deep Metric Learning.
    In Proceedings of the 2017 ACM on Conference on Information and Knowledge Management, Singapore,
    6–10 November 2017; pp. 1189–1198.

    [8]Song, H.O.; Savarese, S.; Xiang, Y.; Jegelka, S. Deep Metric Learning via Lifted Structured Feature Embedding.
    In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Las Vegas, NV,
    USA, 27–30 June 2016; pp. 4004–4012

    [9]Sohn, K. Improved deep metric learning with multi-class n-pair loss objective. In Proceedings of the Advances
    in Neural Information Processing Systems (NIPS), Barcelona, Spain, 5–10 December 2016; pp. 1857–1865

    更多相关内容
  • PyTorch中的深度度量学习 Learn deep metric for image retrieval or other information retrieval. 我们的XBM被提名为2020年CVPR最佳论文。 知乎XBM上的一个博客 我写了一个知乎文章,通俗快速解读了XBM想法动机:...
  • 基于跨模态深度度量学习的甲骨文字识别.pdf
  • 针对视频分类中普遍面临的类内离散度和类间相似性较大而制约分类性能的问题,该文提出一种基于深度度量学习的视频分类方法.该方法设计了一种深度网络,网络包含特征学习、基于深度度量学习的相似性度量,以及分类3个...
  • 深度度量学习综述.pdf

    2021-08-18 21:56:19
    深度度量学习综述.pdf
  • 具有深度度量学习和上下文的实例细分。 这项工作遵循和 它是实例细分模型的PyTorch实现,该模型将像素嵌入d维嵌入空间,并使用聚类查找实例。 在这项工作中,我添加了上下文-运行在嵌入上的RNN,并且每个像素输出...
  • 一种基于深度度量学习的视频分类方法.pdf
  • 高分辨率光学遥感场景分类的深度度量学习方法.pdf
  • 图像生成和深度度量学习的身份感知面部表情识别方法.pdf
  • matlab的egde源代码FastAP:深度度量学习排名 该存储库包含以下论文的实现: *,* 、、和(*均等贡献) IEEE计算机视觉与模式识别会议(CVPR),2019年 用法 Matlab :请参阅matlab/README.md PyTorch :请参阅...
  • 度量学习现实检查 请参阅 。 基准测试结果: 这个图书馆的好处 高度可配置: 用于有组织的配置 ,使您可以合并,覆盖,交换,应用和删除配置选项。 可定制的: 您自己的损失,矿工,数据集等进行基准测试。 轻松...
  • 从度量学习到深度度量学习,本文介绍了一个 PyTorch 中的程序包,它可以极大简化使用深度度量学习的难度。 本文首发自微信公众号「PyTorch 开发者社区」 度量学习(Metric Learning)是机器学习过程中经常用到的一...

    内容导读

    从度量学习到深度度量学习,本文介绍了一个 PyTorch 中的程序包,它可以极大简化使用深度度量学习的难度。

    本文首发自微信公众号「PyTorch 开发者社区」

    度量学习(Metric Learning)是机器学习过程中经常用到的一种方法,它可以借助一系列观测,构造出对应的度量函数,从而学习数据间的距离或差异,有效地描述样本之间的相似度。

    CUB200 数据集样本示例,常被用作度量学习的 benchmark

    这个度量函数对于相似度高的观测值,会返回一个小的距离值;对于差异巨大的观测值,则会返回一个大的距离值。

    当样本量不大时,度量学习在处理分类任务的准确率和高效率上,展现出了显著优势。

    DML:为多类别、小样本分类而生

    然而,如果要处理的分类任务十分复杂,具有多类别、小样本等特征时,结合深度学习和度量学习的深度度量学习((Deep Metric Learning,简称 DML)),才是真正的王者。

    深度度量学习又被称为距离度量学习(Distance Metric Learning)。相较于度量学习,深度度量学习可以对输入特征做非线性映射。

    通过训练一个基于 CNN 的非线性特征提取模块或编码器,深度度量学习可以将提取的图像特征(Embedding)嵌入到近邻位置,同时借助欧氏距离、cosine 等距离度量方法,将不同的图像特征区分开来。

    接下来,深度度量学习再结合 k 最近邻、支持向量机等分类算法,就可以在不考虑类别数量的基础上,利用提取的图像特征,来完成目标识别任务了。

    import numpy as np
    
    
    # 随机定义A, B 两个向量
    A = np.random.randn(10)
    B = np.random.randn(10)
    
    
    # 欧几里得距离(Euclidean distance)
    dist = np.square(np.sum(A - B)**2)
    
    
    # 曼哈顿距离(Manhattan distance)
    dist = np.sum(np.abs(A - B))
    
    
    # 切比雪夫距离(Chebyshev distance)
    dist = np.max(np.abs(A - B))
    
    
    # cosine距离
    similarity = (np.sum(A * B))/(np.linalg.norm(A)) / (np.linalg.norm(A))
    

    深度度量学习中的常用距离函数

    深度度量学习在 CV 领域的一些极端分类任务(类别众多、样本量不足)中表现优异,应用遍及人脸识别、行人重识别、图像检索、目标跟踪、特征匹配等场景。

    以往要在程序中使用深度度量学习,主要依赖工程师从零到一写代码,不光耗时久还容易出 bug。**现在则可以依赖一个封装了多个常用模块的开源库,**直接进行调用,省时省力。

    PML:让深度度量学习易如反掌

    pytorch-metric-learning(PML)是一个开源库,可以让各种繁琐复杂的深度度量学习算法,变得更加简单友好。

    pytorch-metric-learning 具有两大特点

    1、易于使用

    只需添加 2 行代码,就可以在程序中使用度量学习;调用单个函数,就可以挖掘 pairs 和 triplets。

    2、高度灵活

    融合了 loss、miner、trainer 等多个模块,可以在已有代码中实现各种算法组合。

    PML 包括 9 个模块,每个模块既可以单独使用,也可以组合成一个完整的训练/测试 workflow

    pytorch-metric-learning 中的 9 大模块

    1、Loss: 可以应用的各种损失函数

    from pytorch_metric_learning.distances import CosineSimilarity
    from pytorch_metric_learning.reducers import ThresholdReducer
    from pytorch_metric_learning.regularizers import LpRegularizer
    from pytorch_metric_learning import losses
    loss_func = losses.TripletMarginLoss(distance = CosineSimilarity(), 
                 reducer = ThresholdReducer(high=0.3), 
                  embedding_regularizer = LpRegularizer())
    

    自定义损失函数 TripletMarginLoss 代码示例

    2、Distance: 包括计算 pairwise distance 或输入 embedding 之间相似性的各种类别

    3、Reducer: 从几个损失值变为单个损失值

    4、Regularizer: 对权重和嵌入向量进行正则化

    5、Miner: PML 提供两种类型的挖掘函数:子集批处理 miner 及 tuple miner

    from pytorch_metric_learning import miners, losses
    miner = miners.MultiSimilarityMiner()
    loss_func = losses.TripletMarginLoss()
    
    
    # your training loop
    for i, (data, labels) in enumerate(dataloader):
      optimizer.zero_grad()
      embeddings = model(data)
      hard_pairs = miner(embeddings, labels)
      loss = loss_func(embeddings, labels, hard_pairs)
      loss.backward()
      optimizer.step()
    

    用 Tripletmurginloss 损失函数添加挖掘功能

    6、Sampler:torch.utils.data.Sampler 类的扩展,决定样本的 batch 的组成形态

    7、Trainer: 提供对度量学习算法的访问,如数据增强、附加网络等

    8、Tester: 输入模型和数据集,找到基于最近邻的准确度指标(使用该模块需要安装 faiss 安装包)

    9、Util:

    • AccuracyCalculator:给定一个 query 和推理嵌入向量(reference embedding),计算数个准确度指标
    • Inference modelutils.inference 包含用于在 batch 或一组 pair 中,找到匹配对(matching pairs )的类
    • Logging Preset:提供日志数据 hook,模型训练、验证和存储期间的提前停止日志。

    损失函数可以自定义使用 Distance、Reducer 及 Regularizer 三个模块

    PML 上手实践

    PyTorch 版本要求

    pytorch-metric-learning v0.9.90 版本及以上:torch ≥ 1.6

    pytorch-metric-learning v0.9.90 版本以下:没有版本要求,但是测试版本 torch ≥ 1.2

    Pip

    pip install pytorch-metric-learning
    

    获得最新版本

    pip install pytorch-metric-learning --pre
    

    在 Windows 上安装

    pip install torch===1.6.0 torchvision===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
    pip install pytorch-metric-learning
    

    增加评估和日志功能,需要安装 faiss-gpu 的非官方 pypi 版本

    pip install pytorch-metric-learning[with-hooks]
    

    或 faiss-CPU

    pip install pytorch-metric-learning[with-hooks-cpu]
    

    Conda

    conda install pytorch-metric-learning -c metric-learning -c pytorch
    

    GitHub 地址:

    https://github.com/KevinMusgrave/pytorch-metric-learning

    Google Colab:

    https://github.com/KevinMusgrave/pytorch-metric-learning/blob/master/examples/README.md

    相关论文:

    https://arxiv.org/pdf/2008.09164.pdf

    参考:

    http://html.rhhz.net/tis/html/201906045.htm

    https://analyticsindiamag.com/guide-to-pytorch-metric-learning-a-library-for-implementing-metric-learning-algorithms/

    在这里插入图片描述

    展开全文
  • matlab简单图像处理代码深度学习排名失败 代码正在接受法律检查。 如果您只希望将其用于学术用途,请随时给我发送电子邮件。 这项工作正在扩展到TPAMI提交,其主要目标是进一步改进这项工作。 更新的代码将被发布。 ...
  • 基于深度度量学习的电机故障诊断.pdf
  • 基于深度度量学习的行人重识别方法.pdf
  • 深度度量学习的对称综合 深度综合学习的对称综合的正式Tensorflow实施(AAAI 2020) Guonmo Gu *,Byungsoo Ko * (*作者同样贡献。) @ NAVER / LINE视觉 | | | 概述 对称综合 对称合成(Symm)是一种用于深度...
  • 深度度量学习视频指纹算法.pdf
  • 几乎重复的视频检索深度度量学习 该存储库包含论文《 的Tensorflow实现。它提供了用于在深度复制视频检索(NDVR)问题上进行深度度量学习(DML)网络的训练和评估的代码。在训练过程中,DML网络将接收由三元组生成器...
  • 基于深度度量学习的轴承故障诊断方法.pdf
  • 基于改进深度度量学习算法的表面缺陷检测.pdf
  • 基于深度度量学习的小样本商品图像分类研究.pdf
  • 深度度量学习的代理锚丢失 PyTorch的CVPR 2020论文官方PyTorch实施。 经过代理-锚丢失训练的标准嵌入网络可实现SOTA性能,并能最Swift地收敛。 该存储库提供了四个数据集(CUB-200-2011,Cars-196,斯坦福在线产品...
  • 深度度量学习(deep metric learning) Center loss: 优化各个样本到其聚类中心的距离。 xi:第i张图片的特征值 cyi:该图片所属分类的中心(该分类的特征值的中心) Contrastive embedding: 在 ...
    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接: https://blog.csdn.net/qq_16234613/article/details/81210320

    曼哈顿距离(CityBlockSimilarity)

    同欧式距离相似,都是用于多维数据空间距离的测度。
    这里写图片描述

    欧式距离(Euclidean Distance)

    用于衡量多维空间中各个点之间的绝对距离。欧式距离的缺点就是将每个维度同等看待,但显然不是,比如人脸vector,显然眼睛、鼻子、嘴部特征应该更为重要。因此使用时各个维度量级最好能够在同一个尺度上。
    这里写图片描述

    马氏距离(Mahalanobis distance)

    一种有效的计算两个未知样本集的相似度的方法。与欧氏距离将所有维度同等看待不同,其考虑到各种维度之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的),并且是尺度无关的(scale-invariant),即独立于测量尺度。作为欧式距离的标准化版,归一化特征的同时也有可能过分看重微小变化的特征。
    这里写图片描述
    其中x为单个样本,u为样本集合均值,S为样本集合协方差。

    明可夫斯基距离(Minkowski Distance)

    明氏距离,是欧氏空间中的一种测度,被看做是欧氏距离和曼哈顿距离的一种推广。
    这里写图片描述

    切比雪夫距离(Chebyshev Distance)

    各坐标数值差的最大值。
    这里写图片描述


    搬土距离(Earth Mover’s Distance)

    待续


    余弦相似度(Cosine Similarity)

    用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。
    这里写图片描述

    调整余弦相似度(Adjusted Cosine Similarity)

    在余弦相似度的介绍中说到:余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感。因此没法衡量每个维数值的差异,会导致这样一个情况:比如用户对内容评分,5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得出的结果是0.98,两者极为相似,但从评分上看X似乎不喜欢这两个内容,而Y比较喜欢,余弦相似度对数值的不敏感导致了结果的误差, 
    需要修正这种不合理性,就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。


    皮尔森相关性(Pearson correlation-based similarity)

    用于表示两个变量之间的线性相关程度,它的取值在[-1, 1]之间。当两个变量的线性关系增强时,相关系数趋于1或-1;当一个变量增大,另一个变量也增大时,表明它们之间是正相关的,相关系数大于0;如果一个变量增大,另一个变量却减小,表明它们之间是负相关的,相关系数小于0;如果相关系数等于0,表明它们之间不存在线性相关关系。
    这里写图片描述

    未知类似:
    这里写图片描述

    斯皮尔曼秩相关系数(SpearmanCorrelationSimilarity)

    用来度量两个变量之间联系。
    这里写图片描述

    Tanimoto系数(TanimotoCoefficientSimilarity),又称广义杰卡德系数(Jaccardsimilarity coefficient)

    Tanimoto Coefficient主要用于计算符号度量或布尔值度量的个体间的相似度,因为个体的特征属性都是由符号度量或者布尔值标识,因此无法衡量差异具体值的大小,只能获得“是否相同”这个结果。其值介于[0, 1]之间,如果两个用户关联的物品完全相同,交集等于并集,值为1;如果没有任何关联,交集为空,值为0。
    这里写图片描述

    对数似然相似度(LogLikelihoodSimilarity)

    主要应用于自然文本语言库中两个词的搭配关系问题。它是基于这样一种思想,即统计假设可以确定一个空间的很多子空间,而这个空间是被统计模型的位置参数所描述。似然比检验假设模型是已知的,但是模型的参数是未知的。
    这里写图片描述
    这里写图片描述

    海明距离(Hamming distance)

    在信息领域,两个长度相等的字符串的海明距离是在相同位置上不同的字符的个数,也就是将一个字符串替换成另一个字符串需要的替换的次数。
    1011101与1001001之间的汉明距离是2。 
    2143896与2233796之间的汉明距离是3。 
    “toned”与“roses”之间的汉明距离是3。

    豪斯多夫距离(hausdorff distance)

    度量两组点集合之间的距离

    这里写图片描述
    遍历集合A中点,分别找到它们与集合B的最短距离,然后取最大距离,同理对于集合B,然后取二者较大值。

    更全版本

    深度度量学习(deep metric learning)

    Center loss:
    优化各个样本到其聚类中心的距离。
    xi:第i张图片的特征值
    cyi:该图片所属分类的中心(该分类的特征值的中心)
    这里写图片描述
    Contrastive embedding:
    在 paired data (xi,xj,yij)上进行训练。 contrastive training 最小化具有相同 label 类别的样本之间的距离,然后对不同label的样本,其距离小于 α 的 negative pair 给予惩罚(距离大于α的被max(0,)置为0,可能觉得距离过大时,再优化没有意义,还会导致影响其他距离小的异类样本的优化)。每次优化只是在一对样本间。
    这里写图片描述
    Triplet embedding(Triplet Loss):
    找一个 anchor,然后找一个正样本p,一个负样本n。训练的目的就是:鼓励网络找到一个 embedding 使得 anchor 和 negative 之间的距离大于 anchor 和 positive 加上一个 margin α 的和。相比Contrastive,其优化是在三个样本之间,彼此有了参照。
    这里写图片描述
    这里写图片描述
    lifted structured feature embedding:
    Contrastive 和 Triplet存在拟合速度慢,易陷入局部极小点问题。
    Deep Metric Learning via Lifted Structured Feature Embedding
    文章认为过去方法没有充分考虑一个mini-batch中存在的各个样本距离关系。因此提出考虑一个batch中所有样本距离,公式i,j表示相同label,N表示与其相异的样本集合。如下图,同样是6个样本lifted不仅考虑每个pair对关系,还考虑每个相异样本距离关系。
    这里写图片描述
    这里写图片描述
    红色线条代表两个样本同label,蓝色表示相异。
    但上述损失函数又两个问题:不够平滑;计算时同个pair重复计算了多次。
    这里写图片描述
    这里写图片描述
    同时文章还引入难分样本挖掘思想:
    这里写图片描述
    Multi-class N-pair Loss Objective:
    文章同样认为过去方法没有充分考虑一个mini-batch中存在的各个样本距离关系。并且在训练的末期,许多随机选择negative example由于和positive example距离太大,已经不能提供梯度信息了,因此需要使用mini negative。思想和前面的lifted非常像,就是一个特例。
    这里写图片描述
    这里写图片描述
    如果按照原本的N-pair方法采集样本,当类别很大时,模型将需要一次载入大量数据样本。因此作者重建了一种高效新的办法,只需要2N个不同类别样本,就形成原本的N-pair方法。
    这里写图片描述
    Hard negative class mining步骤:
    这里写图片描述
    regularize L2:
    这里写图片描述
    Angular Loss:
    Deep Metric Learning with Angular Loss
    从角度相似性方向考虑对triplet loss,增强了其尺度不变性,并且考虑了3阶几何约束。这篇文章的逻辑推理很nice。
    这里写图片描述
    文章认为triplet loss的优化使得an的距离相比ap的距离变化程度更大,an距离的变大导致角n变小。如果从角度方向可以认为triplet loss的优化可以等效于优化角n。然而如果直接使用上式进行优化,会导致一些问题。如下图a,角n的减小导致xn移动到xn’,当这会减小an的距离,形成相反效果。
    这里写图片描述
    因此作者试图优化样本n和有样本p和a组成的样本分布的关系。通过样本p和a组成的圆,认为是样本分布区域,然后使用圆的中心和左点m重新构建三角关系。
    这里写图片描述
    这里写图片描述
    global loss functions:
    Learning local image descriptors with deep siamese and triplet convolutional networks by minimising global loss functions
    这里写图片描述
    这里写图片描述

    展开全文
  • 深度度量学习(DMML) 此存储库包含ICCV19论文的PyTorch代码:深度度量学习,包括对Market-1501和DukeMTMC-reID数据集的人员重新识别实验。 要求 Python 3.6+ PyTorch 0.4 tensorboardX 1.6 要安装所有...
  • PyTorch度量学习文档请在此处查看文档Google Colab示例请参阅示例文档文件夹,以显示带有loggin的整个培训/测试工作流程。PyTorch Metric学习文档请在此处查看文档,其中Google Colab示例请参阅示例文件夹,以显示...
  • 用于人员重新识别的集合标签建模和深度度量学习
  • DarkRank:通过交叉样本相似性转移加速深度度量学习

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,914
精华内容 17,565
关键字:

深度度量学习