度量学习Metric Learning

article/2025/11/10 21:52:41

度量学习 (Metric Learning) == 距离度量学习 (Distance Metric Learning,DML) == 相似度学习 

度量学习 是指 距离度量学习,Distance Metric Learning,简称为 DML,是人脸识别中常用传统机器学习方法,由Eric Xing在NIPS 2002提出。

度量学习(Metric Learning)也就是常说的相似度学习。如果需要计算两张图片之间的相似度,如何度量图片之间的相似度使得不同类别的图片相似度小而相同类别的图片相似度大(maximize the inter-class variations and minimize the intra-class variations)就是度量学习的目标。

分为两种,一种是基于监督学习的,另外一种是基于非监督学习的。

一. 监督学习

1)LDA Fisher线性判别

2)Local LDA

  Local Linear Discriminative Analysis

3)RCA 相关成分分析

  Relevant Component Analysis

4)LPP 局部保留投影

  Locality Preserving Projection

5)LMNN 大间隔最近邻

   Large-Margin Nearest Neighbors

6)LLE 局部线性嵌入

   Locally linear embedding

监督学习的方法应用比较多,包括上一节我们讲到的 基于CNN的特征提取都属于监督学习的范畴。

二. 非监督学习

  严格说来,非监督的度量学习(主要是指降维方法)不算真正的度量学习,我们也把他们列出来,方便读者记忆:

1)主成分分析(Pricipal Components Analysis, PCA)

2)多维尺度变换(Multi-dimensional Scaling, MDS)

3)独立成分分析(Independent components analysis, ICA)

4)拉普拉斯特征映射(Laplacian Eigenmaps)


举例:

knn最合适的是学习马氏距离,要给出先验知识,哪两个数据更相似,欧式距离不可靠。SVM也是metric learning的一种,因为kernel matrix就是相似度。state of art的metric learning方法LMNN。任何方法只要用到相似度,就可以用到度量学习。度量学习主流就是学习马氏距离!

http://www.cs.cmu.edu/~liuy/distlearn.htm  其中的Principal Component Analysis(PCA)是有蔡登老师开发 
http://www.cse.wustl.edu/~kilian/Downloads/LMNN.html有Large Margin NN Classifier (LMNN)的代码

 

 

与经典识别网络相比
经典识别网络有一个bug:必须提前设定好类别数。 
这也就意味着,每增加一个新种类,就要重新定义网络模型,并从头训练一遍。

比如我们要做一个门禁系统,每增加或减少一个员工(等于是一个新类别),就要修改识别网络并重新训练。很明显,这种做法在某些实际运用中很不科学。

因此,Metric Learning作为经典识别网络的替代方案,可以很好地适应某些特定的图像识别场景。一种较好的做法,是丢弃经典神经网络最后的softmax层,改成直接输出一根feature vector,去特征库里面按照Metric Learning寻找最近邻的类别作为匹配项。

目前,Metric Learning已被广泛运用于人脸识别的日常运用中。
========================

度量学习的应用基本可以涵盖各种领域,当作工具使用,用的语言是python,有工具包metric-learn,可以直接使用pip install metric-learn的方法来安装,或者根据前面github上的网址下载源码之后python setup.py install. 
安装好之后就可以使用包中带的一些度量学习的方法了。例如:
Large Margin Nearest Neighbor (LMNN)

import numpy as np
from metric_learn import LMNN
from sklearn.datasets import load_irisiris_data = load_iris()
X = iris_data['data']
Y = iris_data['target']lmnn = LMNN(k=5, learn_rate=1e-6)
lmnn.fit(X, Y, verbose=False)

参考:

1.https://blog.csdn.net/lzt1983/article/details/7884553

2.https://www.jianshu.com/p/cf235256771b

3.https://blog.csdn.net/jningwei/article/details/80641184

4.https://blog.csdn.net/linolzhang/article/details/71247548

5.https://blog.csdn.net/m0_37052320/article/details/78912203


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

相关文章

度量学习(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下载其源码。它提供了录制、转换以及流化音…

ffmpeg命令大全

ffmpeg命令大全 FFMPEG 目录及作用FFMPEG基本概念FFMPEG 命令基本信息查询命令主要参数视频参数音频参数录制录屏 分解与复用滤镜简单滤镜复杂滤镜 直播相关 前言 FFMPEG是特别强大的专门用于处理音视频的开源库。你既可以使用它的API对音视频进行处理,也可以使用它…

音视频ffmpeg——ffmpeg 命令大全

ffmpeg 命令参数 ffmpeg信息查询命令 ffmpeg 控制命令 主要参数: ◼ -i 设定输入流 ◼ -f 设定输出格式(format) ◼ -ss 开始时间 ◼ -t 时间长度 音频参数: ◼ -aframes 设置要输出的音频帧数 ◼ -b:a 音频码率 ◼ -ar 设定采样率 ◼ -ac 设定…

常见FFmpeg命令行全面分析

FFmpeg多媒体库支持的命令行调用分为三个模块:ffmpeg、ffprobe、ffplay。其中ffmpeg命令行常用于音视频剪切、转码、滤镜、拼接、混音、截图等;ffprobe用于检测多媒体流格式;ffplay用于播放视频。详情可查阅FFmpeg官方文档:ffmpeg…

ffmpeg 常用命令汇总

​​​​​​经常用到ffmpeg做一些视频数据的处理转换等,用来做测试,今天总结了一下,参考了网上部分朋友的经验,一起在这里汇总了一下。 1、ffmpeg使用语法 命令格式: ffmpeg -i [输入文件名] [参数选项] -f [格…

FFmpeg常用基本命令行

本文收集记录了笔者使用过的FFmpeg命令,亲测可用,并不是简单的copy别人的FFmpeg大全,下面的命令大部分都是本人测试成功过的,大家可以放心使用。 音视频技术是程序员日常生活中经常用到的,比如转码需求,同事…

Eclipse启动Tomcat逐渐变慢

现象 1、Eclipse用着用着发现启动Tomcat特别慢 原因 断点打多了,之前调试的断点没有取消,导致启动时加载断点,拖慢启动 解决方案 1、点击debug按钮 2、选择breakpoint选项 清空所有断点 3、重新启动

eclipse 解决启动慢、运行慢的方法总结(最全)

由于 CSDN 的目录只在固定地方显示,并不是很方便阅读,又占空间,所以本文章已同步更新到个人博客上,在个人博客上的文章,有滑动侧边目录栏,阅读体验更加,而且文章的样式也更为丰富,推…

eclipse卡慢解决办法

1.设置JVM运行内存 1.1编辑eclipse.ini 1.2 编辑eclipse.ini,设置jvm运行内存参数,最小内存:物理内存*0.2, 最大内存: 物理内存*0.6; 其中-vmargs为必须添加参数(-vmargs的意思是设置JVM参数),…