百科问答小站 logo
百科问答小站 font logo



在CV/NLP/DL领域中,有哪些修改一行代码或者几行代码提升性能的算法? 第1页

  

user avatar   chen-jia-yu-65-36 网友的相关建议: 
      

前面两位高赞的回答的很好了,我就补充一下自己知道的。尽量避开优化器、激活函数、数据增强等改进。。

Deep Learning: Cyclic LR、Flooding

Image classification: ResNet、GN、Label Smoothing、ShuffleNet

Object Detection: Soft-NMS、Focal Loss、GIOU、OHEM

Instance Segmentation: PointRend

Domain Adaptation: BNM

GAN: Wasserstein GAN

Deep Learning

Standard LR -> Cyclic LR

SNAPSHOT ENSEMBLES: TRAIN 1, GET M FOR FREE

每隔一段时间重启学习率,这样在单位时间内能收敛到多个局部最小值,可以得到很多个模型做集成。

       #CYCLE=8000, LR_INIT=0.1, LR_MIN=0.001 scheduler = lambda x: ((LR_INIT-LR_MIN)/2)*(np.cos(PI*(np.mod(x-1,CYCLE)/(CYCLE)))+1)+LR_MIN     

Without Flooding -> With Flooding

Do 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     

Image classification

VGGNet -> ResNet

Deep Residual Learning for Image Recognition

ResNet相比于VGGNet多了一个skip connect,网络优化变的更加容易

                H(x) = F(x) + x             

BN -> GN

Group Normalization

在小batch size下BN掉点严重,而GN更加鲁棒,性能稳定。

       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 Smoothing

Bag of Tricks for Image Classification with Convolutional Neural Networks

label smoothing将hard label转变成soft label,使网络优化更加平滑。

       targets = (1 - label_smooth) * targets + label_smooth / num_classes     

MobileNet -> ShuffleNet

ShuffleNet: 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)     

Object Detection

NMS -> Soft-NMS

Improving Object Detection With One Line of Code

Soft-NMS将重叠率大于设定阈值的框分类置信度降低,而不是直接置为0,可以增加召回率。

       #以线性降低分类置信度为例 if iou > threshold:     weight = 1 - iou     

CE Loss -> Focal Loss

Focal Loss for Dense Object Detection

Focal loss对CE loss增加了一个调制系数来降低容易样本的权重值,使得训练过程更加关注困难样本。

       loss = -np.log(p) # 原始交叉熵损失, p是模型预测的真实类别的概率, loss = (1-p)**GAMMA * loss # GAMMA是调制系数     

IOU -> GIOU

Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression

GIOU loss避免了IOU loss中两个bbox不重合时Loss为0的情况,解决了IOU loss对物体大小敏感的问题。

       #area_C闭包面积,add_area并集面积 end_area = (area_C - add_area)/area_C    #闭包区域中不属于两个框的区域占闭包区域的比重 giou = iou - end_area     

Hard Negative Mining -> OHEM

Training Region-based Object Detectors with Online Hard Example Mining

OHEM通过选择损失较大的候选ROI进行梯度更新解决类别不平衡问题。

       #只对难样本产生的loss更新 index = torch.argsort(loss.sum(1))[int(num * ohem_rate):] loss = loss[index, :]     

Instance Segmentation

Mask R-CNN -> PointRend

PointRend: Image Segmentation as Rendering

每次从粗粒度预测出来的mask中选择TopN个最不确定的位置进行细粒度预测,以非常的少的计算代价下获得巨大的性能提升。

       points = sampling_points(out, x.shape[-1] // 16, self.k, self.beta) coarse = point_sample(out, points, align_corners=False) fine = point_sample(res2, points, align_corners=False) feature_representation = torch.cat([coarse, fine], dim=1)     

Domain Adaptation

EntMin -> BNM

Towards Discriminability and Diversity: Batch Nuclear-norm Maximization under Label Insufficient Situations

类别预测的判别性与多样性同时指向矩阵的核范数,可以通过最大化矩阵核范数(BNM)来提升预测的性能。

       L_BNM = -torch.norm(X,'nuc')     

GAN

GAN -> Wasserstein GAN

Wasserstein GAN

WGAN引入了Wasserstein距离,既解决了GAN训练不稳定的问题,也提供了一个可靠的训练进程指标,而且该指标确实与生成样本的质量高度相关。

       Wasserstein GAN相比GAN只改了四点: 判别器最后一层去掉sigmoid 生成器和判别器的loss不取对数 每次更新把判别器参数的绝对值按阈值截断 使用RMSProp或者SGD优化器     


想到其他有意思的再更新(或者大家下方评论给paper链接)

欢迎加入Smarter交流群,添加微信「cjy094617」,备注「学校-方向」即可


user avatar   zheng-hua-bin 网友的相关建议: 
      

女王:求求题主放过我,我可不敢有什么政绩。。。


user avatar   albert-yang-147 网友的相关建议: 
      

前面的答案靠谱,说一个电视台对政治的影响力:

作为右派大本营,默多克旗下的fox可以说对共和党选战都有不少影响,默多克看来不喜欢罗姆尼,所以Fox news对罗姆尼的支持可谓不痛不痒,默多克更欣赏的共和党人是现任新泽西的州长大人,他曾经数度想邀请州长大人出山,不过未果。

Fox 上的态度大概代表了共和党基本盘,就是所谓广大红脖子保守派,所以看来温和的罗姆尼难以得到这些人坚定支持(太文质彬彬,不够hard或者土气),看看共党头号狗头军师卡尔洛夫之流的人,他们才是共党能选赢的保证。




  

相关话题

  为什么CV能做到让一幅人脸图动了笑了,而NLP的text-style-transfer进展貌似一般? 
  如何解决测试中充斥着大量训练集中没见过的样本类型模型将其识别成非我族类仍然保持测试集的高精度? 
  深度学习和强化学习之间的差别有多大? 
  上学和读书有什么区别? 
  你所在的研究领域里,有哪些工作的结果虽然不是造假,但是是精挑细选出来的? 
  如何比较Keras, TensorLayer, TFLearn ? 
  为什么说深度学习没有理论基础? 
  二次型的意义是什么?有什么应用? 
  AI 都学会看论文了,科研工作者会被淘汰么? 
  CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别? 

前一个讨论
什么是狄利克雷分布?狄利克雷过程又是什么?
下一个讨论
中方建议健康码国际互认,如果能实现,具有怎样的意义?落实中可能会遇到哪些困难?





© 2025-01-24 - tinynew.org. All Rights Reserved.
© 2025-01-24 - tinynew.org. 保留所有权利