Bag of freebies
采用一些方法使模型有更高的准确度但是不增加模型的复杂度和模型的推理代价
-
PS:数据增强应该在图像标准化(normalization)之前完成;
-
Library:
-
数据增强 [awesome data augmentation]
-
Photometric distortion (色泽扭曲)
-
亮度、对比度、色调、饱和度、噪声
-
Geometric distortion (几何扭曲)
- 随机缩放、剪切、翻转、旋转
-
模拟遮挡 (information dropping) (focus model to learn less discriminative object part)
-
random erase [AAAl 2020] [arxiv] [github] [blog]
-
在原图 / 目标区域中随机选择一个矩形区域,使用随机数填充
-
提高模型的鲁棒性
-
涉及三个参数:1. erasing probability §; 2. erasing area ratio (sl and sh);(决定了模拟的遮挡程度) 3. erasing aspect ratio;
-
论文中给出的参数建议:
-
IRE, ORE, I+ORE
-
-
CutOut [arxiv] [github] [blog]
-
论文中作者尝试遮挡训练所得激活图中的高激活部分(most discriminative)(adversarial erasing method),但实际效果和随机选择区域遮挡相近;
-
随机选择一个固定大小的正方形区域,然后采用全0填充
-
如果选择的区域越界,仅保留区域内的部分,变相地实现了任意面积的遮挡;但是RE保障了选择的必然是规则矩形
-
RE和CutOut的效果需要在实际任务中尝试,可以二者兼而有之
-
-
hide-and-seek [arxiv] [github]
-
将原图划分为若干份(grids of size s * s),然后对划分的每一份依概率进行隐藏**(采用整个数据集的均值来填充,也就是在标准化后这部分为0,code中是以0表示)**,可以模拟出RE和CutOut的效果;
-
对于video而言,以一定帧数为单位划分并以一定概率隐藏;
-
-
GridMask [arxiv] [github] [blog]
-
Key: 避免连续区域的过度删除和保留
- ~~控制被删除区域的密度和大小主要靠上面r, d, x, y四个参数控制,其中r是保留区域比率,在论文中是一个固定值。d决定了删除区域的大小,在论文中是一个区间的random值。x, y是删除区域的边长,在论文中是random(0,d-1)的一个值。~~cifar10中r=0.4。
**(code 此处的random均对于mini-batch内的不同图片而言,同一图片(grid mask)中是相同的)**d表示一个单元的大小,是一个区间内的random值,mini-batch中的每一层均不同;删除部分在该单元内的位置是random的,st_w, st_h表示左上角位置;
(emmmm, 感觉github上的代码有点问题,与文中叙述不太相符)
l = d * self.ratio # grid的删除区域大小 for i in range(0, hh//d): lu = d*i + st_h ld = lu+self.l lu = np.clip(lu, d*i, d*(i+1)) ld = np.clip(ld, d*i, d*(i+1)) for j in range(0, hh//d): ru = d*j + st_w rd = ru+self.l ru = np.clip(ru, d*j, d*(j+1)) rd = np.clip(rd, d*j, d*(j+1)) mask[lu:ld:, ru:rd] *= 0
-
使用GridMask的策略主要有两种,作者通过实验发现,第二种更有效(code使用策略2):
1.设置一个恒定的概率p,这样我们就有机会对每个输入图像应用gridmask
2.使gridmask的概率随训练时间线性增加,直到达到一个上界P。 -
grid的最小单元一般不要大于最小目标框太多,否则效果可能不理想。
-
-
-
-
Feature map (特征图上进行数据增强) (Regularization method)
- Dropout
- DropConnect
- DropBlock
- Spatial Dropout
- DropPath
-
结合多图像
-
Mix-Up [arxiv] [ICLR 2018]
- Image = 0.9X + 0.1Y, label = [0.9, 0.1]
-
CutMix [arxiv] [github] [ICCV 2019 oral talk]
-
将一部分区域随机填充训练集中的其他数据的区域像素值
-
CutMix和CutOut是填充区域像素值的区别
-
Mixup和CutMix是混合两种样本方式上的区别,mixup是将两张图按比例进行插值来混合样本,cutmix是采用cut部分区域再补丁的形式去混合图像,不会有图像混合后不自然的情形
-
Lambda ~ beta distribution
-
-
Mosaic [blog]
-
将四张图片进行随机剪裁,再拼接到一张图上作为训练数据,吩咐了图片的背景,并且变相得提高了batch size;
-
-
Bilateral bluring
-
[ ]
-
activation function
-
ReLU, leaky-ReLU
-
Parametric-ReLU
-
ReLU6
-
SELU
-
Swish
-
Wish
-
-
Normalization of the network activations
- Batch Normalization
- Cross-gpu Batch Normalization (CGBN or SyncBN)
- Filter Response normalization (FRN)
- Cross-Iteration Batch Normalization (CBN)
-
Skip-connections
- Residual connections
- Weighted residual connections
- Multi-input weighted residual connections
- Cross stage partial connections (CSP)
-
Data imbalance between differnt classes
- hard negative example mining (two-stage)
- online hard example mining (two-stage)
- focal loss (one / two stage) [arxiv]
- label smoothing (used to one-hot representation)
-
Objective function bounding bbox regression
-
IoU loss
-
考虑预测的边界框和 ground truth 间的IoU
-
loss = -ln(IoU) / loss = 1 - IoU
-
-
如果两个框没有相交,则 IoU=0,没有梯度回传,无法进行学习训练且无法度量两个不相交的bbox之间的距离;
-
IoU无法精准地反应两者的重合度;
-
-
-
GIoU (Generalized Intersection over Union) loss [arxiv] [CVPR 2019]
-
先计算两个框的最小闭包区域面积Ac,再计算闭包区域中不属于两个框的区域占闭包区域的比重;
-
GIoU也是一种距离度量,作为损失函数的话,,满足损失函数的基本要求(backpropagated);1. 当两框完全不相交时,预测框会不断向目标框移动;2. 当两框出现覆盖情况时,GIoU退化为IoU;
-
IoU取值[0,1],但GIoU有对称区间,取值范围[-1,1]
-
-
DIoU loss (distance iou) [arxiv] (AAAI2020)[zhihu: DIoU + CIoU]
- CIoU, DIoU在同一文章中提出,该文强调框回归三要素:重合面积,中心点距离,长宽比
- IoU and GIoU
-
- 收敛速度缓慢;2. 回归不准确
- 惩罚项:度量目标框和预测框之间中心点的归一化距离
- b 和 bgt 分别表示预测框和ground truth 的中心点,p(.)表示欧式距离,c 表示覆盖两个边界框的最小矩形的对角线长度
- 特性和优越性
- DIoU直接最小化两框之间的距离,收敛速度更快
- DIoU在两框出现包含情况时,仍可以快速回归,不会像GIoU一样退化为IoU loss;
- 该文提出DIoU应用于NMS (IoU - distance penalization <= theta)
-
-
CIoU loss
- DIoU + 长宽比的一致性(惩罚项)
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9741Ry8y-1596531232099)(https://github.com/ganjf/object-detection/blob/master/picture/IoU%20loss%20exp.png?raw=true)]
- DIoU + 长宽比的一致性(惩罚项)
Bags of specials [blog]
指 plugin module 或后置方法以些许推理代价的增加换取模型准确率的提升。比如扩大感受野,引入注意力机制,或者增加特征融合容量
-
常用的用于增大感受野的结构
-
SPP (spatial pyramid pooling)(SPM)
- 输出一维特征向量,不适用于FCN
-
ASPP
- dilated convolution operation
-
RFB
-
-
注意力机制
- Squeeze-and-Excitation (SE) (channel-wise attention)
- Spatial Attention Module (SAM) (point-wise attention)
- 不影响模型在GPU上的推理速度
-
特征融合
- skip connection
- hyper-column
- FPN
- SFAM
- Use SE module to execute channel-wise level re-weighting on multi-scale concatenated feature maps.
- ASFF
- Use softmax as point-wise level re-weighting and then add feature maps of different scales.
- BiFPN
- Multi-input weighted residual connections to execute scale-wise level re-weighting.
-
Post-processing method’
-
NMS
-
soft NMS
- 解决对象遮挡问题
-
DIoU NMS
- add the information of the center point distance to the BBox screening process on the basis of soft NMS.
-