提升目标检测模型性能的tricks

bag of freebies

BoF(bag of freebies):指那些能够提高精度而不增加推断时间的技术
在这里插入图片描述

pixel-wise调整

pixel-wise调整主要是指图像增强部分,通过提高数据的复杂度来提升模型的鲁棒性。

几何畸变

几何畸变主要包括随机缩放(Random Scaling)、随机裁剪(Random Cropping)、随机翻转(Random Filpping)、随机旋转(Random Rotating)

光照变化

光照变化主要包括调整亮度(brightness)、对比度(contrast)、色调(hue)、饱和度(saturatuion)以及添加噪声(noise)

遮挡

除了正则外,其余的其实是数据增强的方法,只是有点正则的味道。

Random Erase

Random Erase称为随机擦除,随机选择一个区域,采用随机值进行覆盖,所选区域一定在图像内。把物体遮挡一部分也能被正确识别分类,这样就迫使网络利用局部数据进行训练识别,增大了训练难度,一定程度提高模型的泛化能力。
在这里插入图片描述

CutOut

随机选择一个固定大小的正方形区域,像素值全部用0填充即可,但为了避免0填充对训练数据有影响,需要对训练数据进行归一化处理,norm到0,但需要注意的是,随机选择的区域可能不在图像内,也就是说正方形区域可能只有部分处理图像内,因而模拟了任意形状的擦除操作。
在这里插入图片描述

Hide-and-Seek

将图像切分成S*S网络,每个网络使用一定概率进行遮挡,从而模拟出Random Erase和CutOut的效果。
但是遮挡值设置为何值比较关键,如果填0或者255都可能改变训练集的数据分布,作者经过计算,采用整个数据集的均值影响最小。
在这里插入图片描述

Grid Mask

该方法是前三个遮挡方法的改进,因为Random Erase、CutOut和Hide-and-Seek都可能存在一个问题,就是把图像的可判别区域全部删除或者保留,引入噪声并且效果不佳。
在这里插入图片描述
为了解决上述问题,对删除信息和保留信息之间进行权衡,Grid Mask采用结构化drop操作,例如均匀分布地删除正方形区域,并且通过控制密度和size参数,来达到平衡,密度就是正方形个数,size就是正方形大小。
在这里插入图片描述

正则

Dropout

将神经元输出随机置0,只能在FC里使用。

DropConnect

在这里插入图片描述

随机将神经元内的权重置0。
比如原来某一个神经元内的权重为 [ w 1 , w 2 , w 3 ] [w_1,w_2,w_3] [w1,w2,w3],那么原来的输出是 w 1 x 1 + w 2 x 2 + w 3 x 3 w_1x_1+w_2x_2+w_3x_3 w1x1+w2x2+w3x3,假设使用DropConnect后,该神经元内w_2被置0,那么输出变成 w 1 x 1 + 0 ∗ x 2 + w 3 x 3 w_1x_1+0*x_2+w_3x_3 w1x1+0x2+w3x3,而Dropout是直接将这个神经元的输出直接随机置0。
只能在FC中用,

DropBlock

DropBlock是适用于卷积层的正则化方法,它作用的对象的特征图。在DropBlock中,特征在一个个block中,当应用DropBlock时,一个feature map中的连续区域会一起被drop掉。那么模型为了拟合数据网络就不得不往别处看,以寻找新的证据。在这里插入图片描述
(a)原始输入图像
(b)绿色部分表示激活的特征单元,b图表示了随机dropout激活单元,但是这样dropout后,网络还会从drouout掉的激活单元附近学习到同样的信息(相邻信息的感受野具有一定的重叠,导致信息具有一定的相似性)。
©绿色部分表示激活的特征单元,c图表示本文的DropBlock,通过dropout掉一部分相邻的整片的区域(比如头和脚),网络就会去注重学习狗的别的部位的特征,来实现正确分类,从而表现出更好的泛化。

用多张图来进行增强

将多张图片融合一起的数据增强操作

Mixup

将两张图片采用比例混合,label也按照比例混合。在这里插入图片描述
label按照比例混合,例如两张图里的同一块区域里一个label的one-hot是 y 1 = [ 0 , 1 , 0 ] y1=[0,1,0] y1=[0,1,0],另一个label的one-hot是 y 2 = [ 1 , 0 , 0 ] y2=[1,0,0] y2=[1,0,0],加入 λ = 0.2 \lambda=0.2 λ=0.2,则混合后的label的one-hot为 y 3 = 0.2 y 1 + 0.8 y 2 = [ 0.8 , 0.2 , 0 ] y3=0.2y1+0.8y2=[0.8,0.2,0] y3=0.2y1+0.8y2=[0.8,0.2,0]

CutMix

CutMix是CutOut和Mixup的结合,将图片的一部分区域擦除并随机填充训练集中的其他数据区域像素值。
在这里插入图片描述

Mosaic数据增强

Mosaic数据增强是CutMix的拓展,CutMix是混合两张图,Mosaic数据增强是混合了四张具有不同语义信息的图片,可以让检测器检测出超乎常规语境的目标,增强鲁棒性,并减少对大的mini-batch的依赖。
在这里插入图片描述

GAN——Style Transfer GAN

论文:ImageNet-trained cnns are biased towards texture; increasing shape bias improves accuracy and robustness
论文发现CNN训练学习到的实际是纹理特征(texture bias)而不是形状特征,这与人类的认知相反,因而通过GAN引入风格化的ImageNet数据集,平衡纹理和形状偏置,提高模型的泛化能力。
在这里插入图片描述
作者使用了6份数据,正常的猫、灰度图、只包含轮廓的、只包含边缘的、只有纹理没有形状的、猫的形状大象的纹理的,由结果可知,对于正常的图片和灰度图,网络识别率都很高,对于只包含轮廓和边缘的,网络识别率较低,对于只包含纹理的,网络识别率也较高。对于猫的形状大象的纹理的图片,网络误识别为大象的概率较高,因而可以推断网络学习的实际是纹理特征。
因而可以通过GAN随机将物体的纹理替换,从而增强网络的学习特征能力。

数据分布不平衡

两阶段

Hard Negative Example Mining

难例挖掘(Hard Negative Example Mining)与非极大值抑制 NMS 一样,都是为了解决目标检测老大难问题(样本不平衡+低召回率)及其带来的副作用。
难负例挖掘(Hard Negative Mining)就是在训练时,尽量多挖掘些难负例(hard negative)加入负样本集,这样会比easy negative组成的负样本集效果更好。(其实就是加入大量背景图像作为负样本,让模型在学习如何分类对象的同时也学习对背景的分类。个人觉得之所以要加入比正样本多得多的大量负样本,是因为背景的复杂性性比正样本要多得多,在目标检测中一般都是粗粒度的检测,正样本的复杂性相对较低,细粒度的另论)

Online Hard Example Mining

OHEM主要思想是,根据输入样本的损失进行筛选,筛选出hard example,表示对分类和检测影响较大的样本,然后将筛选得到的这些样本应用在随机梯度下降中训练。在实际操作中是将原来的一个ROI Network扩充为两个ROI Network,这两个ROI Network共享参数。其中前面一个ROI Network只有前向操作,主要用于计算损失;后面一个ROI Network包括前向和后向操作,以hard example作为输入,计算损失并回传梯度。这种算法的优点在于,对于数据的类别不平衡问题不需要采用设置正负样本比例的方式来解决,且随着数据集的增大,算法的提升更加明显。
注:OHEM是根据负样本的loss(只到计算loss,还不向后更新参数)来选择更新参数的负样本,而难例挖掘是直接输入一大堆负样本,不管它们对网络更新权重的贡献情况。OHEM的优点是不需要输入大量的负样本,训练的时候可以比较快。

单阶段——Focal loss

Focal loss主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘。
交叉熵: C E = − ( y l o g p − ( 1 − y ) l o g ( 1 − p ) ) = { − l o g p , if  y = 1   − l o g ( 1 − p ) , if  y = 0   CE=-(ylogp-(1-y)log(1-p))=\begin{cases} -logp, & \text{if $y=1$ } \\ -log(1-p), & \text{if $y=0$ } \\ \end{cases} CE=(ylogp(1y)log(1p))={ logp,log(1p),if y=if y=
Focal loss:在原有的基础上加了一个因子,其中gamma>0使得减少易分类样本的损失。使得更关注于困难的、错分的样本。
F L = { − ( 1 − p ) γ l o g p , if  y = 1   − p γ l o g ( 1 − p ) , if  y = 0   FL=\begin{cases} -(1-p)^{\gamma}logp, & \text{if $y=1$ } \\ -p^{\gamma}log(1-p), & \text{if $y=0$ } \\ \end{cases} FL={ (1p)γlogp,pγlog(1p),if y=if y=
甚至还可以加入 α \alpha α来平衡正负样本本身的比例不均(添加alpha虽然可以平衡正负样本的重要性,但是无法解决简单与困难样本的问题):
F L = { − α ( 1 − p ) γ l o g p , if  y = 1   − ( 1 − α ) p γ l o g ( 1 − p ) , if  y = 0   FL=\begin{cases} -\alpha(1-p)^{\gamma}logp, & \text{if $y=1$ } \\ -(1-\alpha)p^{\gamma}log(1-p), & \text{if $y=0$ } \\ \end{cases} FL={ α(1p)γlogp,(1α)pγlog(1p),if y=if y=
注:实验发现 γ \gamma γ为2是最优

one-hot类别之间没有关联

Label Smoothing

在交叉熵中,神经网络会促使自身往正确标签和错误标签差值最大的方向学习,在训练数据较少,不足以表征所有的样本特征的情况下,会导致网络过拟合。
label smoothing为了解决上述问题提出了通过soft one-hot来加入噪声(其实也是正则化策略),减少了真实样本标签的类别在计算损失函数时的权重,最终起到抑制过拟合的效果。
在这里插入图片描述
在多分类里的交叉熵loss为:
l o s s = − ∑ i = 1 K p i l o g q i , p i = { 1 , if  i = y   0 , if  i ≠ y   loss=-\sum^K_{i=1}p_ilogq_i, p_i=\begin{cases} 1, & \text{if $i=y$ } \\ 0, & \text{if $i\neq y$ } \\ \end{cases} loss=i=1Kpilogqi,pi={ 1,0,if i=y if i=y 
最优预测概率为:
Z i = { + ∞ , if  i = y   0 , if 

  • 5
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值