文章目录

  • 1. 摘要
  • 2. 基础知识
    • BN层(Batch Normalization)
  • 3. 方法
    • 3.1 CBN
    • 3.2 CBN在ReID的应用
  • 4. 效果
  • 5. 实现细节

1. 摘要

所解决的问题:行人重识别一大难点就是难以处理多摄像头下特征的差异问题。
创新点:提出基于摄像头的BN层(Camera-based Batch Normalization), 通过计算每一个摄像头下图像的均值和方差来分别对各个摄像头下的图像特征进行标准化,从而消除不同摄像头下的域差异。

2. 基础知识

BN层(Batch Normalization)

  • 机器学习基本假设:独立同分布假设,就是假设训练数据和测试数据是满足相同分布的。
  • 神经网络学习本质: 学习数据的分布。
    如果不是独立同分布会造成:

    • 训练数据与测试数据的分布不同,那么网络的性能和泛化能力也大大降低。
    • 不同batch之间的分布不同,那么网络就要在每次迭代的时候去学习以适应不同的分布,这样将会大大降低网络的训练速度,所以需要transform时进行Normalization预处理

BN层:就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。

内部相关性变换:在网络的前向传播过程中,每一层输出的分布在不断地改变。如果分布不能固定下来,网络就在不停地去学习变换的分布,所以网络训练缓慢。且难以收敛。
通过BN层,将每一层的输出固定下来,从而避免相关性变换问题,从而也解决了sigmoid函数的梯度消失和梯度爆炸情况(BN放在sigmoid前,将数据拉到非饱和区,提高梯度大小加快收敛)

如果都通过BN,那么不就跟把非线性函数替换成线性函数效果相同了?这意味着什么?
BN为了保证非线性的获得,对变换后的满足均值为0方差为1分部的x又进行了scale加上shift操作(y=scale*x+shift),每个神经元增加了两个参数scale和shift参数,这两个参数是通过训练学习到的,意思是通过scale和shift把这个值从标准正态分布左移或者右移一点并长胖一点或者变瘦一点,每个实例挪动的程度不一样,这样等价于非线性函数的值从正中心周围的线性区往非线性区动了动。
核心思想应该是想找到一个线性和非线性的较好平衡点,既能享受非线性的较强表达能力的好处,又避免太靠非线性区两头使得网络收敛速度太慢。

训练过程BN层
由于在训练过程中无法获得全局的均值和方差(计算量太大等原因),所以只求一个batch的均值和方差,用其进行标准化操作。


测试/推理过程BN层
在推理过程中,使用training过程中得到的全局统计量(running mean和running var)。每次做Mini-Batch训练时,都会有那个Mini-Batch里m个训练实例获得的均值和方差,全局统计量就是把每个Mini-Batch的均值和方差统计量记住,然后对这些均值和方差求其对应的数学期望即可得出全局统计量。

3. 方法

3.1 CBN

如2中提到的,机器学习基本假设是数据独立同分布,深度学习作为机器学习的子类,自然也不例外。
在ReID任务中,不同摄像头下,不同数据集之间都存在着域间差异,但可以通过CBN来将特征分布统一。
作者做实验发现经过CBN标准化之后,特征都趋近于同一个分布。

xmc代表摄像头c下的图像,uc为摄像头c下的均值,σc为摄像头c下的方差。

在训练过程中,我们将拆解每个batch,并为每个涉及的相机计算与相机相关的均值和方差。 仅带有一个采样图像的相机将被忽略。
在测试阶段,抛弃在训练阶段计算的所有均值和方差,并对所有testcamera采样一部分图片,计算其均值方差作为最终该testcamera的BN参数。

3.2 CBN在ReID的应用


只需要简单把BN层换成CBN层。

4. 效果

有监督

5. 实现细节

首先:我们避免自定义BatchNorm层。 否则,前向传播过程将需要其他输入来标识摄像机ID。 鉴于nn.Sequential模块已在PyTorch中广泛使用,自定义的BatchNorm层将导致网络定义发生重大变化。 相反,我们转向使用官方的BatchNorm层。 在培训过程中,我们可以简单地使用官方的BatchNorm实施,并使用同一台摄像机的图像向网络提供数据。 在此阶段,收集的r​​unning_mean和running_var被直接忽略,因为它们在测试阶段将始终被覆盖。 因此,可以将BN参数动量设置为任何值。 对于测试过程,我们将BatchNorm层的默认定义从以下更改:

nn.BatchNorm2d(planes, momentum=0.1)
to
nn.BatchNorm2d(planes, momentum=None)

设为None是为了不使用train过程时积累的mean和var。
测试阶段: 给定特定摄像机的几个采样的小batch(随机采样一小部分,计算均值和方差作为这个摄像头的整体统计数据),我们只需将网络设置为“train”模式并前向传播所有这些Batch。前向传播后,每个BatchNorm层中的running_mean和running_var就是该确切摄像机的统计信息。 然后,我们只需将网络设置为评估模式并处理来自此特定摄像机的所有图像。

  • 注释:BN层有两套统计数据 一套是batch mean/var(batch的) 一套是running mean/var(全局的)。

训练阶段: 我们需要重新排列batch。 通过由任意采样器采样的batch张量,我们将该张量中的图像张量按照相应的摄像机ID,然后将它们重新组织为张量列表。 这是通过我们定制的trainer函数来实现的。 然后,通过我们自定义的DataParallel依次转发这些张量(可以理解为多线程,第i个线程对应一个batch内第i摄像头的BN,每个BN数据相互独立),然后组装所有输出,然后以与传统DataParallel相同的方式将它们馈送到损失函数。

Rethinking the Distribution Gap of Person Re-identi cation with Camera-based Batch Normalization论文笔记相关推荐

  1. 论文笔记:Visual Domain Adaptation with Manifold Embedded Distribution Alignment

    论文:Visual Domain Adaptation with Manifold Embedded Distribution Alignment 地址:https://arxiv.org/abs/1 ...

  2. 【论文笔记】Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspectivewith Transformers

    声明 不定期更新自己精度论文,通俗易懂,初级小白也可以理解 涉及范围:深度学习方向,包括 CV.NLP.Data Fusion.Digital Twin 论文题目: Rethinking Semant ...

  3. 论文笔记:Dive into Ambiguity: Latent Distribution Mining and Pairwise Uncertainty Estimation for FER

    Dive into Ambiguity: Latent Distribution Mining and Pairwise Uncertainty Estimation for Facial Expre ...

  4. 【论文笔记】Rethinking and Improving Relative Position Encoding for Vision Transformer

    论文 论文题目:Rethinking and Improving Relative Position Encoding for Vision Transformer 接收:ICCV 2021 论文地址 ...

  5. [深度学习论文笔记][Face Recognition] DeepFace: Closing the Gap to Human-Level Performance in Face Verificati

    Taigman, Yaniv, et al. "Deepface: Closing the gap to human-level performance in face verificati ...

  6. 【论文笔记】(VC)《Combining Progressive Rethinking and Collaborative Learning: ... for In-Loop filtering》

    <Combining Progressive Rethinking and Collaborative Learning: A Deep Framework for In-Loop Filter ...

  7. 【论文笔记】SimpleTrack: Understanding and Rethinking 3D Multi-object Tracking

    文献来源 Pang Z , Li Z , Wang N . SimpleTrack: Understanding and Rethinking 3D Multi-object Tracking[J]. ...

  8. 论文笔记:TMI2021 Semantic-Oriented Labeled-to-Unlabeled Distribution Translation for Image Segmentation

    开源 1.Introduction 逐像素分类并忽略了不同图像中像素的语义相关性,导致特征分布模糊. 此外,像素级注释数据在医学领域很少见,稀缺的注释数据通常表现出相对于期望值的偏差分布,阻碍了监督学 ...

  9. 论文笔记:Mind the Gap An Experimental Evaluation of Imputation ofMissing Values Techniques in TimeSeries

    pVLDB 2020 1 abstract & intro 这篇论文横向比较了12种 time-series imputation的方法.作者声称这是第一篇深入讨论这些模型的准确度.效率和参数 ...

最新文章

  1. Codeforces Round #515 (Div. 3)【未完结】
  2. springcloud 实战 feign使用中遇到的相关问题
  3. 三种CSS样式的引用方式
  4. Dom4j操作XML
  5. PHP IE中下载附件问题
  6. 【蓝桥官网试题 - 算法提高】change(思维)
  7. linux下后台启动springboot项目
  8. MapReduce: map读取文件的过程
  9. Typora主题定制及常用配置的设置方法
  10. L3-002. 堆栈-PAT团体程序设计天梯赛GPLT(树状数组)
  11. 框架详解_Selenium3框架详解
  12. IDEA画Use Case(用例图)
  13. 要怎么在计算机里清除桌面内存,告诉你电脑内存怎么清理
  14. 计算机系统数据备份与恢复,系统数据备份和恢复制度
  15. 提高DevExpress winform 控件加载速度
  16. “为什么要选择Startups?”--GitCafe邀您回顾第一期企业联合招聘
  17. 阿里国际站用户增长技术探索与实践
  18. Android项目猜纸牌游戏之一 界面设计和资源文件的设计
  19. mysql8设置局域网访问
  20. linux的chmod与chown

热门文章

  1. python-转存文件
  2. 移动端禁止缩放meta标签
  3. PPT嵌入字体的方法
  4. jQuery实现简单抽奖大转盘
  5. 如何成为一个更好的人
  6. 婚礼邀请函 - 微信小程序+服务端
  7. Visual Studio中Website和Web Application Project的区别
  8. 在遭到勒索软件攻击时_勒索软件海啸在这里不要成为受害者
  9. mysql开发cms_GitHub - johnsonzhu/yzmcms: YzmCMS是由袁志蒙独自开发的一款基于PHP+Mysql架构的轻量级开源内容管理系统。...
  10. 又土又木到不土不木,《土力学原理十记》笔记