IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 行人重识别之Implicit Sample Extension for Unsupervised Person Re-Identification -> 正文阅读

[人工智能]行人重识别之Implicit Sample Extension for Unsupervised Person Re-Identification

Implicit Sample Extension for Unsupervised Person Re-Identification

cvpr2022
Xinyu Zhang1*, Dongdong Li3,1?, Zhigang Wang1, Jian Wang1, Errui Ding1,
Javen Qinfeng Shi2, Zhaoxiang Zhang3,4, Jingdong Wang1?
1Baidu VIS, China 2The University of Adelaide, Australia 3Institute of Automation, CAS & UCAS, China
4 Centre for Artificial Intelligence and Robotics, HKISI CAS, China
通过生成信息分簇、合蔟
本文是基于Cluster-Contrast,进行了部分策略微调。

0.背景

0.0Cluster-Contrast

无监督reid的pipeline, 大致可以分成三个部分。
第一个部分就是特征提取,在每一个epoch开始的时候,通过网络将训练数据集中图片的特征都提取出来。
第二部分是聚类,通过传统的聚类方法如DBScan, KNN通过特征把图片聚成不同的类别,每个类别给一个标签,就是用来训练的伪标签。一开始的伪标签是很不准的,在训练的过程中,随着网络的精度越来越高,伪标签也会越来越接近真实标签。
第三部分就是图片特征的存储和更新,在网络训练的过程中,随着网络参数的变化,图片的特征也需要进行对应的更新。在训练的时候,我们因为有了伪标签,就能够通过类似于softmax的分类函数来对网络进行训练。因为伪标签在每次聚类的时候都会发生变化,所以无监督reid用的是non-parametric softmax loss。Cluster-Contrast用的是moco用的里面的InfoNCE loss( Noise Contrastive Estimation)来进行训练。
请添加图片描述

0.0.1损失

NCE 的核心思想就是通过学习数据分布样本和噪声分布样本之间的区别,从而发现数据中的一些特性,NCE强大之处真的不只是能够解决巨大词表Softmax的运算量的问题

在这里插入图片描述
感觉像是有条件的对数损失函数
在这里插入图片描述
换成了对比损失形式,分子表示正样本对,分母是负样本对。然后利用 InfoNCE 的优化过程,就可以做到使正样本对之间的互信息最大,使负样本对之间的互信息最小这件事情了
在这里插入图片描述

0.0.2图片特征的存储和更新

本文认为:图片特征的存储和更新对于网络的训练影响很大,如
一个行人重识别数据集中,不同的人拥有的图片数量是不一样的,如果按照训练的图片来更新feature的话,拥有大量图片的人的feature将会滞后更新,从而有害网络优化。所以ClusterContrast的核心思想就是,我们不再是从图片的层面上去更新特征和计算loss, 而是从人的维度去更新和计算loss。无论一个人有多少张图片,对于网络训练来说,他们都是一视同仁的,都是用同一个速度去更新特征。在无监督reid中,每个人都被聚类成一个cluster。
相同颜色的图片是属于同一个人的,对于一个人,不管他有多少张图片,只会从里面选一张图片的feature存起来。选择和之前存起来的feature最不相似的feature效果最好,这样能够让网络去挖掘一些难样本。也是启发式算法。
在这里插入图片描述

主流方法: 当前大部分无监督的行人重识别是先使用聚类产生伪标签进行训练。
存在问题:聚类或将相同的身份分成两个或多个子集群;有时会将不同的真实身份混合在一起。
请添加图片描述
注:不同的形状代表不同的地面真实身份,而不同的颜色代表不同的伪标签

1.摘要

基于上述问题,作者假设现有数据分布中可能缺少一些基础信息,这些信息对于产生理想的聚类结果很重要。为了发现这些信息,提出了一种隐式样本扩展(Implicit Sample Extension,ISE)方法来生成我们所说的围绕集群边界的支持样本。开发了一种渐进线性插值(progressive linear interpolation,PLI)策略来指导支持样本生成的方向和程度:1)从实际样本到其k -最近簇的方向,2)从k -最近簇混合上下文信息的程度。还基于其提出了一个新的loss。

2.相关工作

2.0无监督的REID

目前无监督的REID主要分为两类:第一种是无监督域适应(UDA)方法,这种方法还需要稍微标注一点数据。
另一种就是纯粹无监督学习(USL),本位主要就是研究USL。

2.1其他分簇机制

BUC[20]提出了一种自下而上的聚类方案,将单个样本逐渐合并到更大的集群中。MMCL[30]提出了一种多标签分类机制来构建单个图像之间的关系。SpCL[14]采用自步调学习,逐步生成更可靠的集群。CycAs[33]和tsl[36]都使用tracklet信息来更准确地预测伪标签。SoftSim[21]直接使用基于相似性的软标签训练Re-ID模型。

2.2Gan的生成信息机制

图像生成是丰富有限数据的常用策略。Mixup[42]和cutmix[40]直接融合两个图像或图像补丁作为数据增强。Viewmaker[27]通过添加学习到的扰动产生不同的视图。SPGAN[11]提出了一个保留相似性的GAN,用于两个域之间的样式转移。DGNet++[51]对人物图像的结构和外观进行分解,并拒绝融合以重建新的人物图像。Chen等人[5]使用3D网格来合成一个人图像的更多视图,从而学习视图不变特征。与这些工作不同的是,ISE是无参数的,在嵌入空间内隐式地生成样本,而不是在图像像素空间内显式地生成样本。因此,支持样本可以很容易地用于损失函数,而无需任何特征提取过程。

本文注重通过弥补确实信息来解决将簇分化开来和将簇整合来,来提高性能。

3.工作流程

3.1 通过聚类来生成伪标签

字符表示:
X = {x1, x2,…, xN}表示一个未标记的Re-ID数据集,xi是第i个图像,N是总图像数;
fθ(x)是从模型中提取的特征。
目前最近的基于聚类的REID是通过K-means[22](基于距离的聚类方法)或DBSCAN[12](基于密度的聚类方法)得到一个带伪标签的数据集:X ’ = {(x1, y1), (x2, y2),…, (xN ', yN ')},离群点(没预测出伪标签的点)就忽略了。有了伪标签之后就可以把此次训练当成有监督的训练了,标签也要做成词袋。
DBSCAN:半径eps和密度阈值Minpts
在这里插入图片描述
在这里插入图片描述

作者总结了一个损失函数笼统的形式:请添加图片描述
m_m 代表的是词库里第m条条目
m_+ 再经过f后还是在词袋里的,所以之前的预处理工作生成词袋的很重要
sim计算余弦相似度:sim(u, v) =u_Tv/ ||u|| ||v||
τ=温度超参
反向传播方式:
请添加图片描述
在REID领域有很多不同的更新方式,有像BDG那种要把所有信息都输入进去才更新权重的,也有像SDG那种基于mini-batch的,本文作者使用的是基于mini-batch,在REID领域叫做cluster - contrast,基线也是cluster - contrast。

3.2前进的线性插值Progressive Linear Interpolation(PLI)

请添加图片描述
?f控制方向,λ控制程度,是样本扩展过程中的两个重要因素
欧拉
在这里插入图片描述
牛顿
在这里插入图片描述
牛顿和欧拉相似就是迭代,区别是梯度(收敛计算方式不同,一个是该点或者是下一个点的导数,考虑的是局部最大值;一个是基于欧拉展开,考虑了全局极值)

3.3方向

相邻的蔟间更有可能产生分类错误的样本,作者的目标是在两个相似的蔟中生成支持样本。
具体步骤:通过余弦相似度,为f进行k近邻;
支持样本的方向是由k个紧邻的f的质心c确定的。请添加图片描述

c是蔟的质心,c*是距离最近的质心。这样的支持样本有着丰富的上下文信息,今次每个相邻蔟的质心都决定一个方向因子,作者也为每个蔟都生成一个支持样本,故f有k个支持样本。

3.4程度

程度决定了支持样本中应该包含多少相邻簇的信息。过大的λ使支持样本与原始簇相距甚远,误导模型训练。过小的λ相反会产生几乎无用的支持样本,因为它们与原始样本相似。因此,我们对λ进行渐进式更新,以便随着训练的进行逐步包含更多的上下文信息。
请添加图片描述
λ_0代表初始化程度,t/T代表当前和总迭代数的比值。上述公式初始会使支持样本靠近原始样本,以免在特征不好的时候引入过量的噪声。随着训练的进行鲁棒性越来越高。

3.5损失函数

在产生大量数据之后,作者把这些支持样本都当成正样本,所以要换一下损失InfoNCE(Noise Contrastive Estimation,噪声对比估计):
请添加图片描述

τ代表温度超参数,c代表质心

作者还提出了一个更拟合原始样本的损失函数:

请添加图片描述
c b c^b cb是一个mini-batch的聚类数。 f + f^+ f+是正支持样本的个数

最终损失函数的形式是:
请添加图片描述
β为损失重量

4.实验

数据集:使用market-1501和msmt178
评估方式:CMC和mAP
骨干网络是resnet50,于imagenet预训练
输入256*128,batch256,
使用DBSCAN生成伪标签
请添加图片描述
除了真实的样本外,作者绘制了生成的支持样本(中空的形状),以更好地展示ISE的有效性。不同的形状和颜色分别代表gt真实身份和伪标签

5.展望

1.使用其他生成伪标签的算法:卡尔曼滤波
2.更换距离(kmeans)计算函数:
在这里插入图片描述
在这里插入图片描述

参考:
ClusterContrast:https://zhuanlan.zhihu.com/p/368633180

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:42:53  更:2022-04-30 08:46:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:24:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码