Without Flooding -> With FloodingDo We Need Zero Training Loss After Achieving Zero Training Error?Flooding方法:当training loss大于一个阈值时,进行正常的梯度下降;当training loss低于阈值时,会反过来进行梯度上升,让training loss保持在一个阈值附近,让模型持续进行“random walk”,并期望模型能被优化到一个平坦的损失区域,这样发现test loss进行了double decent!
flood = (loss - b).abs() + b
2. Image classification
VGGNet -> ResNetDeep Residual Learning for Image RecognitionResNet相比于VGGNet多了一个skip connect,网络优化变的更加容易
x = x.view(N, G, -1) mean, var = x.mean(-1, keepdim=True), x.var(-1, keepdim=True) x = (x - mean) / (var + self.eps).sqrt() x = x.view(N, C, H, W)
Hard Label -> Label SmoothingBag of Tricks for Image Classification with Convolutional Neural Networkslabel smoothing将hard label转变成soft label,使网络优化更加平滑。
MobileNet -> ShuffleNetShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices将组卷积的输出feature map的通道顺序打乱,增加不同组feature map的信息交互。
channels_per_group = num_channels // groups x = x.view(batch_size, groups, channels_per_group, height, width) x = torch.transpose(x, 1, 2).contiguous() x = x.view(batch_size, -1, height, width)
3. Object Detection
NMS -> Soft-NMSImproving Object Detection With One Line of CodeSoft-NMS将重叠率大于设定阈值的框分类置信度降低,而不是直接置为0,可以增加召回率。
#以线性降低分类置信度为例 if iou > threshold: weight = 1 - iou
CE Loss -> Focal LossFocal Loss for Dense Object DetectionFocal loss对CE loss增加了一个调制系数来降低容易样本的权重值,使得训练过程更加关注困难样本。
loss = -np.log(p) # 原始交叉熵损失, p是模型预测的真实类别的概率, loss = (1-p)**GAMMA * loss # GAMMA是调制系数
IOU -> GIOUGeneralized Intersection over Union: A Metric and A Loss for Bounding Box RegressionGIOU loss避免了IOU loss中两个bbox不重合时Loss为0的情况,解决了IOU loss对物体大小敏感的问题。