度量学习DML之Circle Loss

article/2025/11/10 20:36:26

度量学习DML之Contrastive Loss及其变种_程大海的博客-CSDN博客

度量学习DML之Triplet Loss_程大海的博客-CSDN博客

度量学习DML之Lifted Structure Loss_程大海的博客-CSDN博客

度量学习DML之Circle Loss_程大海的博客-CSDN博客

度量学习DML之Cross-Batch Memory_程大海的博客-CSDN博客

度量学习DML之MoCO_程大海的博客-CSDN博客

数据增强之SpecAugment_程大海的博客-CSDN博客

数据增强之MixUp_程大海的博客-CSDN博客


 

度量学习的目标:

  1. 相似的或者属于同一类的样本提取到的embedding向量之间具有更高的相似度,或者具有更小的空间距离
  2. 对于out-of samples的样本,也就是未见过的样本,希望也能提取到有效的embedding,也就是模型的泛化能力更好

Circle Loss

论文:《Circle Loss: A Unified Perspective of Pair Similarity Optimization》

参考:Circle Loss 感想 - 知乎

参考:如何理解与看待在cvpr2020中提出的circle loss? - 知乎

        以往的损失函数(如Triplet Loss)是通过训练使positive之间的相似度大于positive和negative之间的相似度,损失值的计算是通过(有时也写作)这种方式实现的,这种计算方式有一个特点,就是为了满足“positive之间的相似度大于positive和negative之间的相似度”这个条件,有两个优化方向:1)、增大;2)、降低。这两个优化方向的权重是相同的,这就导致了在同一个限制条件下,在决策边界上的所有点都满足这个限制条件。如下图(a)中,只要之间满足就行,这条决策边界上的任何点都是符合优化条件的。Cirlcle Loss认为这种方式是不灵活的,直觉上应该是偏离最优目标更远的样本对更应被重视,而不是一视同仁,Circle Loss就是以这个为出发点来设计的,如下图(b)。

         上图中(a)就是传统损失函数的处理方法,当之间不满足时,这时候就需要优化或者,或者同时优化使得满足。在上图(a)中,, ,这两个点都满足当时的不等式条件,那么将C这个点优化到或者哪种结果是最好的呢?

        Circle Loss认为离最优值越远的样本对应该具备更大的优化权重,所以对分别进行了独立加权,这样优化目标就变成了,其中的线性函数,的线性函数,且相互独立,用来控制自适应优化步长(allowing each similarity score to learn at its own pace)。对于上图中的A,B,C三个点,在相同的限制参数控制下,图(a)中将A、B、C可能被优化到决策边界上的任意一点,图(b)中将A、B、C三点优化到圆形的决策边界上,经过Circle Loss优化后的之间的分离度更大,效果更好。

        假设有一个空间特征向量embedding是,假设与属于相同ID的样本有K个,与属于不同ID的样本有L个,即。在Circle Loss中,作者首先提出了一个基础版的损失函数如下:

        从上式可以看出,上述损失函数也是可以同时处理一个batch中的多个positive和多个negative的,分别计算batch中每一个positive和每一个negative之间的损失值,用来控制之间的分离度,起到损失尺度缩放的作用。

        上述损失函数的决策边界是,对于的优化权重是相同的,Circle Loss对此进行改进,使用自学习得到的权重参数来控制的学习步长,Circle loss的损失函数如下:

        是非负的权重参数,用来控制的梯度大小。当与最优值偏离较大时,具有较大的梯度,偏离较小是,具有较小的梯度。假设的最优值分别是,那么对应的定义如下:

        上述公式说明,当时,说明得到的已经足够好了,不需要再进行惩罚了,同理,对于也一样。在优化方法中,限制参数对于是等价的,作用于上就是加上一个,作用于上就是减去一个。但是在上述Circle Loss的公式中,由于引入了,导致的优化不再是等价的了,因此需要对分别使用独立的限制参数,分别记做,Circle Loss的计算公式进一步演变为:

        其中分别用来控制异类和同类之间的margin大小。Circle Loss期望。这样的话Circle Loss就有5个超参数。为了简单起见,作者将p设置如下:

        越小,对于训练集要求得到的预测置信度越高,在训练集上的拟合程度就越高,对于unseen的数据泛化能力就相对差一些,反之同理(不清楚这样理解是否恰当)。这样的话Circle Loss就只有两个超参数了。

        上图是关于超参数的对比实验结果。

        通过上图可以看到,在Circle Loss中,当越小时,得到的越大,越小。

        Circle Loss实际用起来效果确实很nice,在使用时batch_size一定要大,不然效果就不是很nice了,我目前使用的batch_size=2048。

参考:深度度量学习-论文简评 - 知乎

参考:深度度量学习中的损失函数 - 知乎

参考:GitHub - KevinMusgrave/pytorch-metric-learning: The easiest way to use deep metric learning in your application. Modular, flexible, and extensible. Written in PyTorch.

参考:PyTorch Metric Learning


http://chatgpt.dhexx.cn/article/GJc4QrLW.shtml

相关文章

度量学习DML之MoCO

度量学习DML之Contrastive Loss及其变种_程大海的博客-CSDN博客 度量学习DML之Triplet Loss_程大海的博客-CSDN博客 度量学习DML之Lifted Structure Loss_程大海的博客-CSDN博客 度量学习DML之Circle Loss_程大海的博客-CSDN博客 度量学习DML之Cross-Batch Memory_程大海的…

【ReID】表征学习和度量学习

文章目录 1.表征学习1.1分类损失1.2验证损失1.3表征学习总结 2.度量学习2.1 Introduction2.2 对比损失2.3 三元组损失2.4 改进三元组损失2.5 四元组损失2.6 TriHard loss2.7 Triple loss with adaptive weights2.8 度量学习总结 3. 总结 表征学习和度量学习是行人重识别最基本的…

度量学习---综述

introduction 度量学习的对象通常是样本特征向量的距离,度量学习的目的是通过训练和学习,减小或限制同类样本之间的距离,同时增大不同类别样本之间的距离。 度量学习 (Metric Learning) 距离度量学习 (Distance Metric Learning&#xff0…

Deep metric learning 深度度量学习 总结

最近的工作用是深度度量学习的改进,这里将DML进行一个总结。 根据个人的理解,开篇用一句话介绍一下度量学习: “不同于分类学习,度量学习是通过学习数据之间的相似性程度来获得一个更有意义或者说更具可分性的特征空间。” Tra…

度量学习方法总结

目录 一.距离度量 闵可夫斯基距离 欧式距离(Euclidean Distance): 标准化欧氏距离 (Standardized Euclidean distance ) 曼哈顿距离(ManhattanDistance) 切比雪夫距离(Chebyshevdistance) 马氏距离 马氏距离代…

度量学习

度量学习(Metric Learning) 度量(Metric)的定义 在数学中,一个度量(或距离函数)是一个定义集合中元素之间距离的函数。一个具有度量的集合被称为度量空间。 度量学习(Metric Learni…

度量学习(Metric learning、损失函数、triplet、三元组损失、fastreid)

定义 Metric learning 是学习一个度量相似度的距离函数:相似的目标离得近,不相似的离得远. 一般来说,DML包含三个部分, 如下图.。 1)特征提取网络:map embedding 2)采样策略:将一个mini-batch里的样本组合成很多个sub…

度量学习Metric Learning

度量学习 (Metric Learning) 距离度量学习 (Distance Metric Learning,DML) 相似度学习 度量学习 是指 距离度量学习,Distance Metric Learning,简称为 DML,是人脸识别中常用传统机器学习方法,由Eric Xing在NIPS 2…

度量学习(Metric Learning)基础概念

一、什么是度量学习? 度量学习 (Metric Learning) 距离度量学习 (Distance Metric Learning,DML) 相似度学习。 在数学中,一个度量(或距离函数)是一个定义集合中元素之间距离的函数。一个具有度量的集合被称为度量空…

度量学习——总结

传统方法 User guide: contents — metric-learn 0.6.2 documentation 深度学习 基于深度学习的度量学习方法大都由两个部分组成:特征提取模块和距离度量模块。距离度量模块的任务是使同一类样本间的距离更靠近,而不同类样本间的距离更远离。这一模块…

ffmpeg命令分析-r

本系列 以 ffmpeg4.2 源码为准,下载地址:链接:百度网盘 提取码:g3k8 之前的文章分析 FFMpeg 工程的 do_video_out() 函数的时候,建议不关注 delta0,delta,nb0_frames,nb_frames 等变…

使用FFmpeg命令处理音视频

文章目录 前言一、ffprobe相关命令1.使用ffprobe查看音频文件的信息2.使用ffprobe查看视频文件的信息 二、ffplay相关命令1.基本的ffplay命令2.音视频同步命令 三、ffmpeg相关命令1.ffmpeg通用参数2.ffmpeg视频参数3.ffmpeg音频参数4.ffmpeg示例 总结 前言 FFmpeg是一套可以用…

ffmpeg-命令行详解

前言 ffmpeg是一个多媒体开发库,提供了关于音频和视频的工具。这个项目的官网是这里。 下载地址 ffmpeg提供了方便地控制台命令,可以在下载页面下载。三个平台(windows,linux,macos)都有打包好的可执行文…

ffmpeg命令分析-b:v

本系列 以 ffmpeg4.2 源码为准,下载地址:链接:百度网盘 提取码:g3k8 本系列主要分析各种 ffmpeg 命令参数 在代码里是如何实现的。a.mp4下载链接:百度网盘,提取码:nl0s 。 命令如下:…

FFmpeg命令详解

命令格式 功能 FFmpeg命令是在ffmpeg.exe可执行文件环境下执行,ffmpeg.exe用于音视频的转码,加水印,去水印,视频剪切,提取音频,提取视频,码率控制等等功能。 最简单的命令 ffmpeg -i input.a…

FFmpeg命令行转码

本文主要了解FFmpeg进行音视频编码转换。主要学习如下几个知识点: FFmpeg使用libx264进行H,264(AVC)软编码,使用libx265进行H.265(HEVC)软编码使用FFmpeg在MacOS环境下硬编码了解音频编码,MP3,AAC的参数设置编码 FFmpeg软编码H.…

ffmpeg命令行使用

查看视频信息 ffmpeg -i 视频名字视频名字这里输入前几个字符按 tab 键可以自动补全 返回结果: 红框之内的内容没什么用 编码器 :encoder : Lavf57.25.100 持续时间:Duration: 00:14:20.58, start: 0.000000, bitrate: 381 kb/s Duratio…

ffmpeg录屏命令

1.gdigrab抓屏 ffmpeg -f gdigrab -i desktop -q:v 0.01 -vcodec mpeg4 -f mp4 out.mp4-i 输入设备 -vcodec 视频编码格式 -f 视频封装格式 缺点只能录制视频,不能录制音频 2.dshow 下载安装screen capture recorder https://sourceforge.net/projects/screencap…

FFMPEG常用命令行

目录 命令格式: 1.获取视频信息 2.转视频/音频格式 视频格式转换 音频格式转换 3.音视频分离 4.图像处理 5.视频旋转 6.视频倒放&视频加速&视频减速 7.视频合并(两个10秒的视频合并为20秒): 8.视频拼接&…

FFmpeg命令介绍

FFmpeg 简介轶闻常用命令视频相关音频相关录制命令 简介 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。使用C语言进行开发,采用LGPL或GPL许可证,可前往Github下载其源码。它提供了录制、转换以及流化音…