如果有不对的地方,欢迎指正!!!只是个人理解。

一、引言

人脸识别,REID都是经过卷积神经网络提取图像的特征向量,再进行比对的过程。神经网络的选择,可以选择经典的或者当下流行的,这里主要总结下千变万化的人脸识别 REID损失函数。

这里先说人脸识别比较火有代表性的两种方法。

facenet: 该方法用了triplet loss损失函数,Triplet loss属于度量学习,相比起softmax,它可以方便地训练大规模数据集,不受显存的限制。缺点是过于关注局部,导致难以训练且收敛时间长。代码链接如下:
https://github.com/davidsandberg/facenet

arcface:arcface loss属于变形softmax。softmax训练的时候收敛得很快,但是精确度一般达到0.9左右就不会再上升了,一方面是作为分类网络,softmax不能像度量学习一样显式的优化类间和类内距离,所以性能不会特别好,另外,人脸识别的关键在于得到泛化能力强的feature,与分类能力并不是完全等价的。这种损失函数改进了softmax,对特征向量归一化和加性角度间隔,提高了类间可分性同时加强类内紧度和类间差异。代码链接如下:
https://github.com/deepinsight/insightface

这两种方法也恰巧代表了人脸识别损失函数的两种研究方向,表征学习和度量学习,它们是什么意思?又有什么关系?请继续往下看。

二、表征学习和度量学习

度量学习:计量特征间距离,通过距离损失优化网络——>欧式距离及其变种

表征学习:将问题作为分类问题和验证问题——> softmax及其变种损失函数

这里度量学习很好理解,用欧式距离就可以计算出两串特征向量的相似性。如何理解将特征向量用于softmax损失函数?

其实就是添加了一个全连接层。假设我们得到的特征向量是256维,训练的人脸库有10,000个人就是10,000种分类,将特征向量乘以256*10000的矩阵,再经过softmax激活,计算多分类交叉熵损失。


度量学习样本大情况下收敛快一些,因为只是随机取一个类内,一个类间计算损失;而表征学习内存占用最大的是512*100万人脸的全连接层(假设人脸特征向量512维,人脸库有100万个人),内存占用很大,计算量也非常大。

CVPR2020,旷视科技推出circle loss,也属于变种softmax,这里面有个很大的贡献是关联了这两大类损失函数。放一个b站视频,感兴趣可以看一下。部分截图也来自于这个视频。
https://www.bilibili.com/video/BV13z4y1R71f?from=search&seid=16884633457415289901

对于人脸识别问题来说,无非是要解决这个问题:最大化类内相似性Sp,最小化类间相似性Sn

所以 loss 最小化(Sn-Sp),希望任一类间相似性小于任一类内相似性

cosine相似性时,Wj 第j个非目标性的权重向量,Wy是目标,分类学习中目标的相似性分数只有一个,最后可变形为softmax/ crossEntropyLoss


趋近无穷大 可变形为tripletloss

三、度量学习损失函数总结

from:ReID综述(上)https://www.leiphone.com/news/201712/4Mvj2NBIxCN5bQZI.html

(1)对比损失(Contrastive loss)
对比损失用于训练孪生网络(Siamese network)。孪生网络的输入为一对(两张)图片,其实就是损失函数的计算,还是一个网络。标签相同y=1,不同为0,对比损失函数写作:

()+:max(z,0)

(2)三元组损失(Triplet loss)
三元组损失是一种被广泛应用的度量学习损失,之后的大量度量学习方法也是基于三元组损失演变而来。顾名思义,三元组损失需要三张输入图片。和对比损失不同,一个输入的三元组(Triplet)包括一对正样本对和一对负样本对。三张图片分别命名为固定图片(Anchor) a ,正样本图片(Positive)p和负样本图片(Negative) n 。图片 a 和图片 p 为一对正样本对,图片 a 和图片 n 为一对负样本对。则三元组损失表示为:

后来有改进版认为原版的Triplet loss只考虑正负样本对之间的相对距离,而并没有考虑正样本对之间的绝对距离,为此提出改进三元组损失(Improved triplet loss)

保证网络不仅能够在特征空间把正负样本推开,也能保证正样本对之间的距离很近。

(3)四元组损失(Quadruplet loss)

四元组损失是三元组损失的另一个改进版本。顾名思义,四元组(Quadruplet)需要四张输入图片,和三元组不同的是多了一张负样本图片。即四张图片为固定图片(Anchor) a ,正样本图片(Positive) p ,负样本图片1(Negative1) n1 和负样本图片2(Negative2) n2 。其中 n1 和 n2 是两张不同行人ID的图片,其结构如上图所示。则四元组损失表示为:

其中α和β是手动设置的正常数,通常设置β小于α,前一项称为强推动,后一项称为弱推动。相比于三元组损失只考虑正负样本间的相对距离,四元组添加的第二项不共享ID,所以考虑的是正负样本间的绝对距离。因此,四元组损失通常能让模型学习到更好的表征。

(4)难样本采样三元组损失(Triplet loss with batch hard mining, TriHard loss)
TriHard损失的核心思想是:对于每一个训练batch,随机挑选 P 个ID的行人,每个行人随机挑选 K 张不同的图片,即一个batch含有 P×K 张图片。之后对于batch中的每一张图片 a ,我们可以挑选一个最难的正样本和一个最难的负样本和 a 组成一个三元组。
首先我们定义 a 和为相同ID的图片集为 A,剩下不同ID的图片图片集为 B,则TriHard损失表示为:

(5)边界挖掘损失(Margin sample mining loss, MSML)
与难采样三元组损失类似,也是一种引入难样本采样思想的度量学习方法,将其应用到四元组损失。

(6)各种度量损失loss性能对比

四、表征学习损失函数总结

arcface(insightface)作者提出的,softmax变形,不同的决策边界

这里额外说下circle loss。

circleloss
更加灵活的优化;收敛目标更加明确,更容易到达T点

可视化梯度

优化概率,最大化类内相似性,最小化类间相似性

推理,圆形决策边界

可视化,圆形收敛分界面,梯度不会骤变,也更加灵活

梯度推理解释

遗留问题

决策边界???
多标签分类softmax???

【人脸识别】千变万化的人脸识别 REID损失函数总结相关推荐

  1. 人脸检测MTCNN和人脸识别Facenet(附源码)

    原文链接:人脸检测MTCNN和人脸识别Facenet(附源码) 在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第九节.人脸检测之Haa ...

  2. (转)第三十七节、人脸检测MTCNN和人脸识别Facenet(附源码)

    http://www.cnblogs.com/zyly/p/9703614.html 在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第 ...

  3. 人脸检测与识别:AlexNet人脸检测

    最终目标:为课题组做一个人脸打卡系统. 项目1阶段已更新完毕,如有错误请不吝赐教~ 注:作为一个负责任的博主,虽然过了好几个月了,但必须要说明一下,文中代码有bug,cv2.resize时,参数输入是 ...

  4. Pytorch实现戴口罩人脸检测和戴口罩识别(含训练代码 戴口罩人脸数据集)

    Pytorch实现戴口罩人脸检测和戴口罩识别(含训练代码 戴口罩人脸数据集) 目录 Pytorch实现戴口罩人脸检测和戴口罩识别(含训练代码 戴口罩人脸数据集) 1.戴口罩识别的方法 (1)基于多类别 ...

  5. 格灵深瞳:人脸识别工业级大规模人脸识别实践探讨 | 百万人学AI

    作者 | 张德兵 编辑 | 阿司匹林 出品 | 人工智能头条(公众号ID:AI_Thinker) 人脸识别已经成为成为计算机视觉领域最热门的应用之一,很多刚入门的 AI 新手都或多或少接触过人脸识别的 ...

  6. 机器学习与人脸识别3:人脸检测算法综述

    以下内容转自网络,主要介绍人脸算法的历史: 导言 人脸检测是目前所有目标检测子方向中被研究的最充分的问题之一,它在安防监控,人证比对,人机交互,社交和娱乐等方面有很强的应用价值,也是整个人脸识别算法的 ...

  7. CVPR 2022 | 腾讯优图实验室30篇论文入选,含场景文本语义识别、3D人脸重建、目标检测、视频场景分割和视频插帧等领域...

    关注公众号,发现CV技术之美 本文转载自腾讯优图 近日,CVPR 2022官方公布了接收论文列表(CVPR 2022 接收论文公布! 总计2067篇!),来自腾讯优图实验室共计30篇论文被CVPR收录 ...

  8. 全球首个开源图像识别系统上线了!人脸、商品、车辆识别一网打尽!

    父老们,乡亲们! 你知道人脸.商品.车辆识别,以图搜图乃至自动驾驶,背后的技术是什么吗? 起初我觉得不就是图像分类.目标检测这些东西嘛,有什么难的?但能熟练这些应用的BAT高级工程师们都轻松年薪百万, ...

  9. 计算机视觉、图像分类、目标检测、人脸比对、人脸识别、语义分割、实例分割、图像搜索

    计算机视觉.图像分类.目标检测.人脸比对.人脸识别.语义分割.实例分割.图像搜索 目录

最新文章

  1. Go 学习笔记(81)— Go 性能分析工具 pprof
  2. GPRS、EDGE、CDMA1X、WCDMA、EVDO、EVDV速度性能大比较
  3. k8s的资源限制及资源请求
  4. 粉丝给我发色情app,我反手对色情app渗透,我居然发现了 ....
  5. 异常处理try...catch...throw
  6. 视觉SLAM十四讲学习笔记-第六讲-非线性优化的状态估计问题
  7. 在没有插件的情况下为Chrome设置Proxy
  8. Serverless 应用开发的 7 个经验心得
  9. MySql 中文乱码问题
  10. 按网络管理模式 计算机网络可分为,计算机网络应用 按网络管理模式分类
  11. Apple 开发者账户类型
  12. 软件测试所需要掌握的技能
  13. 物联网芯片的协议之WLAN及其调制
  14. CentOS的 Oracle 11g R2安装
  15. 正则表达式匹配中英文姓名
  16. Excel只删除开头和末尾空格,中间不管的2种操作
  17. 使用kali破解WiFi抓不住包问题和No such BSSID available.问题的解决方法----airodump-ng、aireplay-ng
  18. 程序员专属对联,总有一款适合你...
  19. VMware 虚拟机安装 OpenWrt 作旁路由 单臂路由 img 镜像转 vmdk 旁路由无法上网 没网络
  20. mysql修改工具下载_MDB数据库修改工具

热门文章

  1. lol服务器显示未知错误,电脑中玩LOL游戏出现未知错误提示的解决方法
  2. 访问 IIS 元数据库失败(转)
  3. 如何使用latex表示微分结果
  4. git与Coding仓库代码创建
  5. WIN7 安装VS2005 错误1935
  6. 为什么在优化算法中使用指数加权平均
  7. 【案例教程】地球科学数据(ERA5、雪深、积雪覆盖、海温、植被指数、土地利用)处理实践
  8. 30天自制操作系统 - 取代软盘,用U盘写入引导扇区
  9. 聊一聊基础的CPU寄存器~
  10. 固态硬盘中的SLC、MLC和TLC