深度学习知识点大杂烩

题记:因本人记性差,所以记录下深度学习各种方面研究进展小结以及其他方面的知识,方便以后复习,温故而知新。现在记录的只是深度学习中九牛一毛的知识点,有待后续的学习和记录。可以加群交流学习:334227548。


目录:

1. fine-tuning 改善效果的tricks

2. 特殊层介绍

3. 深度学习知识点

4. 目标检测小结

5. 学习网站和论坛以及博客



============fine-tuning 改善效果的tricks==============================

一, 数据集方面

1. Data Augmenttation:数据集扩充能提高性能,改善效果,防止过拟合,增加模型的泛化能力

Data Augmenttation具体操作有:horizontally flippingrandom cropsand color jittering...


(其中random cropflip horizontally在caffe中通过指定参数即可,如下图:)



2. 预处理过程:包括去均值(数据集图像均值,比如可以减去ImageNet数据集的mean文件,也可以减去自己数据集的均值文件。);

Python代码参考:https://zhuanlan.zhihu.com/p/22147033


二, 网络结构上

1. 卷积层微调:有的任务,有些网络可以微调其卷积层,改善效果。

2. 修改最后一层(例如:fc8)
(1) 首先修改名字,这样预训练模型赋值的时候这里就会因为名字不匹配从而重新训练,也就达成了我们适应新任务的目的。
(2) 调整学习速率,因为最后一层是重新学习,因此需要有更快的学习速率相比较其他层,因此我们将,weight和bias的学习速率加快10倍。


3. 选取适合的优化参数:比如随机梯度下降(SGD)。

4. 添加一些特殊的层: 比如dropout(当然这个基本现在网络都有这层),防止过拟合。

5. pooling层可以通过实验测试选择上采用、下采样、均值采样等


三, 超参数的修改(Solver文件)

1. 学习率,步长,迭代次数都要适当的减少。

2. 初始学习率,经过迭代训练,当损失函数不再下降时,对学习率进行固定常数衰减(如乘以0.1(gamma)),如此反复贯穿训练始终。

3. 遗忘因子(momentum)= 0.9,这样可以让基于sgd算法的深度学习系统更加稳定,收敛更快。

4. 如果训练发散(损失函数值变得非常大,甚至出现NaN或Inf), 试着减小base_lr,然后重新训练,知道不再发散。


四,海康威视检测权威评测夺冠之道(部分tricks)

(https://zhuanlan.zhihu.com/p/22589208)

1. 训练技巧

a) 平衡采样。很多数据集存在样本不均衡的问题,有些类别特别多,有些类别特别少。训练模型时,从一个图像列表中依次读取样本训练。这样的话,小类样本参与训练的机会就比大类少。训练出来的模型会偏向于大类,即大类性能好,小类性能差。平衡采样策略就是把样本按类别分组,每个类别生成一个样本列表。训练过程中先随机选择1个或几个类别,然后从各个类别所对应的样本列表中随机选择样本。这样可以保证每个类别参与训练的机会比较均衡。在PASCAL VOC数据集上,使用平衡采样性能可以提升约0.7个点。

b) 难例挖掘(OHEM [5])。使用了难例挖掘后,收敛更快,训练更稳定。在ImageNet DET数据集上,性能可以提升1个多点。

c) 多尺度训练。使用多尺度训练的话,可以让参与训练的目标大小分布更加均衡,使模型对目标大小具有一定的鲁棒性。

2.预测技巧

预测阶段,我们用了多尺度预测,水平翻转,和检测框投票。这些策略的具体实现在很多文献中都有描述。这里我们可以分享一下多个检测结果的融合策略。当使用多尺度预测,水平翻转,还有多模型Ensemble时,对于同一张测试图像,我们会得到好几组结果。对于这些结果,最直观的融合方式就是把所有的检测框放在一起,然后用非极大值抑制(NMS)处理一下。但是我们发现另一种方式效果更好,就是把RPN和FRCN分开来做。先对RPN做多尺度、水平翻转、多模型的融合,得到一组固定的Proposal之后,再对FRCN进行多尺度、水平翻转、多模型的融合。RPN的融合用NMS更好,FRCN的融合用对Proposal的置信度和Bounding Box位置取平均值的方式更好。



============ 特殊层介绍 =============================
一 LRN: local response normalization(局部响应归一层)

LRN 把所有的变量都具有相似的方差,可以使监督学习算法快,即会增加性能。 局部响应归一化层完成一种“临近抑制”操作,对局部输入区域进行归一化。

该层需要参数有:

norm_region: 选择对相邻通道间归一化还是通道内空间区域归一化,默认为ACROSS_CHANNELS,即通道间归一化;

local_size:两种表示(1)通道间归一化时表示求和的通道数;(2)通道内归一化时表示求和区间的边长;默认值为5;

alpha:缩放因子(详细见后面),默认值为1;

beta:指数项(详细见后面), 默认值为5;


二  Slicing(http://blog.csdn.net/ws_20100/article/details/49184037)

Slice层将一个输入层根据切割指标给定的维度(现在只有num和channel)切割成多个输出层。

  • 例子
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值