Face++ 论文解读:一种新的行人重识别度量学习方法 | PaperDaily #20

简介:

Triplet loss 是一种非常常用的度量学习方法,Quadruplet loss 和 Triplet hard batch loss(TriHard loss)是它的两个改进版本,而 MSML 是吸收了 Quadruplet loss 和 TriHard loss 两个优点的综合体

实验证明 MSML 能够在 person ReID 的公开数据集上取得很好的结果。 这个方法不止可以应用于 person ReID,而是一种通用的度量学习方法,进一步可以延伸到图像检索等相关的各个领域

如果你对本文工作感兴趣,点击底部的阅读原文即可查看原论文。

关于作者:罗浩,浙江大学博士研究生,研究方向为计算机视觉和深度学习,现为旷视科技(Face++)research intern。

■ 论文 | Margin Sample Mining Loss: A Deep Learning Based Method for Person Re-identification

■ 链接 | https://www.paperweekly.site/papers/1069

■ 作者 | LUOHAO

1. 摘要

Person re-identification (ReID) is an important task in computer vision. Recently, deep learning with a metric learning loss has become a common framework for ReID. In this paper, we propose a new metric learning loss with hard sample mining called margin smaple mining loss (MSML) which can achieve better accuracy compared with other metric learning losses, such as triplet loss. In experiments, our proposed methods outperforms most of the state-ofthe-art algorithms on Market1501, MARS, CUHK03 and CUHK-SYSU.

行人重识别是一个计算机视觉领域非常重要的一个任务。基于度量学习方法的深度学习技术如今成为了 ReID 的主流方法。在本论文中,我们提出了一种新的引入难样本采样的度量学习方法,这种方法叫做 MSML。实验表明,我们提出的方法击败了目前大多数的方法,在 Market1501,MARS,CUHK03 和 CUHK-SYSU 数据集上取得了 state-of-the-arts 的结果。

2. 方法

Triplet loss 是一种非常常用的度量学习方法,而 Quadruplet loss 和 TriHard loss 是它的两个改进版本。Quadruplet loss 相对于 Triplet loss 考虑了正负样本对之间的绝对距离,而 TriHard loss 则是引入了 hard sample mining 的思想,MSML 则吸收了这两个优点。 度量学习的目标是学习一个函数?tp=webp&wxfrom=5&wx_lazy=1使得?tp=webp&wxfrom=5&wx_lazy=1空间上语义相似度反映在?tp=webp&wxfrom=5&wx_lazy=1空间的距离上。 通常我们需要定义一个距离度量函数?tp=webp&wxfrom=5&wx_lazy=1来表示嵌入空间(Embedding space)的距离,而这个距离也用来重识别行人图片。在国内外研究现状里面介绍的三元组损失、四元组损失和 TriHard 损失都是典型度量学习方法。给定一个三元组 {a,p,n},三元组损失表示为:

78ae5db708afe38b39581f934afd28c8c151c10a

三元组损失只考虑了正负样本对之间的相对距离。为了引入正负样本对之间的绝对距离,四元组损失加入一张负样本组成了四元组 {a,p,n1,n2},而四元组损失也定义为:

a3757a2a511dddac802471d50842843278311adb

假如我们忽视参数 αβ 的影响,我们可以用一种更加通用的形式表示四元组损失:

1b6a20a49190c6c4ae852a7907af35d1b73bd934

其中 mn 是一对负样本对,ma 既可以是一对正样本对也可以是一对负样本对。但是直接使用 Lq′ 并不能取得很好的结果,因为随着数据量的上升,可能四元组组合数量急剧上升。绝大部分样本对都是比较简单的,这限制了模型的性能。

为了解决这个问题,我们采用了 TriHard 损失使用的难样本采样思想。TriHard 损失是在一个 batch 里面计算三元组损失对于 batch 中的每一张图片 a,我们可以挑选一个最难的正样本和一个最难的负样本和 a 组成一个三元组。我们定义和 a 为相同 ID 的图片集为 A,剩下不同 ID 的图片图片集为B,则 TriHard 损失表示为:

38895725725628fbd476c256304ec6247581d6f0

而 TriHard 损失同样只考虑了正负样本对之间的相对距离,而没有考虑它们之间的绝对距离。于是我们把这种难样本采样的思想引入到 Lq′,可以得到:

0b23879c9f205af67cc68c911a9cbd2640591c94

其中 a,p,m,n 均是 batch 中的图片,a,p 是 batch 中最不像的正样本对,m,n 是batch 中最像的负样本对,a,m 皆可以是正样本对也可以是负样本对。

概括而言 ,TriHard 损失是针对 batch 中的每一张图片都挑选了一个三元组,而 MSML 损失只挑选出最难的一个正样本对和最难的一个负样本对计算损失。所以,MSML 是比 TriHard 更难的一种难样本采样。

此外,?tp=webp&wxfrom=5&wx_lazy=1可以看作是正样本对距离的上界,?tp=webp&wxfrom=5&wx_lazy=1看作是负样本对的下界。MSML 是为了把正负样本对的边界给推开,因此命名为边界样本挖掘损失。

MSML 只用了两对样本对计算损失,看上去浪费了很多训练数据。但是这两对样本对是根据整个 batch 的结果挑选出来了,所以 batch 中的其他图片也间接影响了最终的损失。并且随着训练周期的增加,几乎所有的数据都会参与损失的计算。

总的概括,MSML 是同时兼顾相对距离和绝对距离并引入了难样本采样思想的度量学习方法。

89768899059500109b3f4d736507289cc08650b8

如果用一张图概括这几个 loss 之间的关系的话,可以表示为下图。

fa8cd23fbc9cb4fdb2a26eb9c218bfa801775a46

3. 结果

论文里在 Market1501,MARS,CUHK03 和 CUHK-SYSU 数据集都进行了对比实验,为了减少实验数量,并没有在每个数据集上都做一次实验,而是用所有数据集的训练集训练一个模型。

为了增加结果的可信度,使用了 Resnet50、inception-v2、Resnet-Xecption 三个在 ImageNet 上 pre-trained 的网络作为 base model,和 classification、Triplet loss、Quadruplet loss、TriHard loss 四个损失函数进行了对比。结果如下表,可以看出 MSML 的结果还是很不错的。

252ac6ece39b56f27ddefb962e66f5d0a347e163

简评

MSML 是一种新的度量学习方法,吸收了目前已有的一些度量学习方法的优点,能过进一步提升模型的泛化能力。本文在行人重识别问题上发表了这个损失函数,但是这是一个在图像检索领域可以通用的度量学习方法。


原文发布时间为:2017-11-28

本文作者:罗浩

本文来自云栖社区合作伙伴“PaperWeekly”,了解相关信息可以关注“PaperWeekly”微信公众号

相关文章
|
2月前
|
机器学习/深度学习 算法 计算机视觉
基于深度学习的停车位关键点检测系统(代码+原理)
基于深度学习的停车位关键点检测系统(代码+原理)
125 0
|
2月前
|
机器学习/深度学习 监控 算法
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
127 1
|
3月前
|
机器学习/深度学习 数据可视化 PyTorch
零基础入门语义分割-地表建筑物识别 Task5 模型训练与验证-学习笔记
零基础入门语义分割-地表建筑物识别 Task5 模型训练与验证-学习笔记
387 2
|
3月前
|
PyTorch 算法框架/工具 计算机视觉
零基础入门语义分割-地表建筑物识别 Task4 评价函数与损失函数 -学习笔记
零基础入门语义分割-地表建筑物识别 Task4 评价函数与损失函数 -学习笔记
32 0
|
2月前
|
计算机视觉 异构计算 Python
YOLOv8改进 | 进阶实战篇 | 利用YOLOv8进行视频划定区域目标统计计数
YOLOv8改进 | 进阶实战篇 | 利用YOLOv8进行视频划定区域目标统计计数
76 0
|
3月前
|
机器学习/深度学习 PyTorch 数据处理
零基础入门语义分割-地表建筑物识别 Task2 数据扩增-学习笔记
零基础入门语义分割-地表建筑物识别 Task2 数据扩增-学习笔记
37 1
|
8月前
|
机器学习/深度学习 编解码 算法
检测并消除瑕疵,DeSRA让真实场景超分中的GAN更加完美
检测并消除瑕疵,DeSRA让真实场景超分中的GAN更加完美
294 0
|
8月前
|
JSON 算法 数据格式
优化cv2.findContours()函数提取的目标边界点,使语义分割进行远监督辅助标注
可以看到cv2.findContours()函数可以将目标的所有边界点都进行导出来,但是他的点存在一个问题,太过密集,如果我们想将语义分割的结果重新导出成labelme格式的json文件进行修正时,这就会存在点太密集没有办法进行修改,这里展示一个示例:没有对导出的结果进行修正,在labelme中的效果图。
84 0
|
11月前
|
机器学习/深度学习 编解码 自动驾驶
联合训练2D-3D多任务学习 | 深度估计、检测、分割、3D检测通吃
联合训练2D-3D多任务学习 | 深度估计、检测、分割、3D检测通吃
253 0
|
11月前
|
机器学习/深度学习 计算机视觉 Python
实时交通标志检测和分类(附代码)
实时交通标志检测和分类(附代码)
135 0