对于深度学习模型优化,通常从以下几点进行:

1、数据方面:

    1)数据预处理:比如可以进行重采样;设置图像强度阈值。

    2)数据增广:对于图像来说,可以对图像进行平移、旋转、镜像、添加噪声,改变对比度等方法进行数据扩充。这是一个对图像数据进行扩充的一些库:https://github.com/albumentations-team/albumentations

    3)补充其他相似性数据集

2、模型方面:

     1)可以选择适合的与训练模型

     2)对模型结构进行调整优化。比如可以将普通卷积换成高效的Shuffle model、Mobile Model、ESP Model、Ghost Model。

3、损失函数:选择合适的损失函数用于不同的任务

     1)目标检测:一般采用smooth L1 Loss,Focal Loss

     2)图像分割:一般采用Dice Loss,CE Loss

     3)图像分类:一般采用交叉熵损失(CE)函数

     4)图像降噪:一般采用L2 Loss

4、优化算法

    1)选择合适的学习率与batchsize。对于学习率选择合适的学习率衰减算法,batchsize就看你的显卡能支持多大了。太小的话,最好网络中不要使用BatchNorm。

    2)采用对抗学习

    3)采用随机权重平均策略(SWA),就是你训练过程中可以分为两个阶段进行,这两个阶段的优化器和学习率都不同。只不过SWA阶段的训练是依赖于第一阶段训练的模型的(感觉类似一个教师模型,就是你先训练好一个模型,然后我们重新选择一个优化器和学习率(一般改为初始值的一半)再继续训练)。该方法确实能提点,就是比较费时间。

5、正则化

    1)dropout,其实就是一种对于网络的集成策略。因为你每次随机丢掉的神经元都不一样(也不是丢掉,就是将这个神经元激活值置为0,但是在推理阶段这些神经元可是会参与推理的,并不会丢掉),所以可以达到多个网络的集成效果。但是对于数据量小的情况下训练,不建议使用,因为好不容易学习到的特征给丢了,很可能造成精度下降。

    2)early stop,这个方法一般是应用于模型过拟合的情况下,当模型对于训练集拟合的很好,但是测试集很差。我们不需要他继续学习下去了,因为很可能会把其他噪音学习进去。

6、测试扩充

      我们可以在推理阶段,对每一次预测的值输出时进行一些图像变换(镜像,翻转)等方法,然后再送入推理模型进行预测,利用多次预测的效果,从而提高最终的预测结果。

7、后处理

     这个阶段通常是在推理阶段结束之后进行的,对预测的结果进行后处理,一般可以采用阈值优化,这样会剔除掉一些不想关的噪音。比如对于脑肿瘤来说,他是一个连续的区域,如果存在不连续的区域,那么我们就认为该区域预测错了,剔除它。

原文地址:http://www.cnblogs.com/peixu/p/16909853.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性