torch.topk(input,k,dim=None,largest=True,sorted=True,out=None)
# 功能:找出前k大的数据,及其索引序号
- input 张量
- k 决定选取k个值
- dim 索引维度
返回:
Tensor 前k大的值
LongTensor 前k大的值所在的位置
功能:在图像的上下左右以及中心裁剪出尺寸为size的5张图片,TenCrop对这5张图片进行水平或者垂直镜像获得10张图片
torchvision.utils.make_grid
# 功能 制作网格图像
- tensor:图像数据 BCHW形式
- nrow:行数(列数自动计算)
- padding:图像间距
- normalize:是否将像素标准化
- range:标准化范围
- scale_each:是否单张图维度标准化
- pad_value:padding的像素值
Multi-crop测试
多模型融合
特点:1*1卷积 GAP输出
增加两个辅助损失,缓解梯度消失(中间层特征具有分类能力) 增加loss回传 充当正则约束,迫使中间层特征也能具备分类能力
每8个epoch下降4% 人民币玩家。800个epochs 才下降不到100倍
稀疏矩阵优点是:可分解成密集矩阵计算起来加快收敛速度
输入数据分布变化,导致的模型训练困难,对深度神经网络影响极大
白化: 0均值、1标准差实现白化
提出BN层 加快模型收敛,比v1快10倍
存在问题 使神经元输出值在sigmoid线性区,削弱了网络的表达能力
解决办法 y = Rx+P。增加了可学习参数R和P 增加线性化变化,提升网络表达能力 同时提供恒等映射的可能
Batch Normalization 批标准化
存在问题 mini-batch的统计信息充当总体是不准确的
解决办法 采用指数滑动平均
BN注意事项:
0均值,1标准差的数据分布可以加速网络的训练
推理时,BN相当于线性变换,即缩放加平移,进一步的可以将BN层融合到卷积层中
bias作用被抵消,因此不需要bias,并且线性变换中的beta可充当bias
卷积层的BN层,不仅考虑batch维度,还考虑空间维度,以feature map维度进行求取均值、方差
通过大量实验得出的结论:
卷积分解(1) 大卷积核分解为小卷积核堆叠 (VGG中7X7和3个3X3)
卷积分解(2)分解为非对称卷积 1个nXn卷积分解为1*n卷积核nX1卷积堆叠
注意事项:非对称卷积再后半段使用效果才好,特别是特征图分辨率在12-20之间,本文的分辨率为17X17的时候使用非对称卷积分解
传统池化方法存在信息表征瓶颈问题,即特征图信息变少了
传统的One-hot编码存在问题 过度自信 导致过拟合
提出标签平滑 把One-hot中概率为1的那一项进行衰减,避免过度自信,衰减的那一部分confience平均分到每一个类别中
在目标检测中广泛应用
本文方案:
将第一个卷积层步长2改为1 用于151X151的图像
将第一个卷积层步长2改为1 移除第一个池化层 用于79X79
将当下优秀的技术结合到Inception系列中,获得更优模型,其借鉴新技术的思想值得学习,即A+B=AB的思路
为了让模型训练稳定,在残差模块中对残差进行数值大小的缩放,通常乘以0.1-0.3之间的一个数。
当超过1000个卷积核时,会出现死神经元
在最后的平均池化层之前会出现值为0的现象
这个现象用小学习率和BN都没办法避免
STNet :Spatial-transform Net 空间变换网络,用于增强CNN对图像的空间变换的鲁棒性。STNet通过spatital transformer将形变的、位置偏离的图像变换到图像中间,使得网络对空间变换更鲁棒
Attention
CBAM 提出两阶段的注意力机制,一个针对通道维度,一个针对空间维度,从这也可以看出,注意力机制可分不同维度进行
注意力机制方式可理解为,设计一些网络层输出“权重”值,利用权重值与特征图进行计算,实现特征图的变换,使模型加强关注的区域的特征值。
本文并没有提出一个完整的网络模型,仅提出即插即用的网络模块-SE Module
每一个Residual Block后嵌入SE Block
分组卷积用更少的参数得到相同的特征图
Feature map:CXHXW kernel size:KXK output channel:N
Conv:CXKXKXN group conv:C/G X KXKXN
分组卷积的好处:让网络学习到不同的特征,获得更丰富的信息
解决高方差采用更大的数据
数据足够时,ResNeXt比ResNet有更强的学习能力
稠密连接:在一个Block中,每一层的输入来自于它前面所有层的特征图,每一层的输出均会直接连接到它后面所有层的输入
优点:
将BN层、ReLu层和3X3卷积层组成一组操作对特征进行提取
池化层用于降低特征图分辨率,DenseNet将特征图分辨率下降操作称为transition layer由BN 1X1卷积 2X2池化构成
Dense block内部要求特征图分辨率保持一致
稠密连接的方式,使得特征图通道数睡着网络层的不断增多,因此要控制特征图数量,引入Growth rate超参数k来衡量dense block中特征图的多少
瓶颈层来降低特征图通道数,减少后续卷积的计算量,当采用了以下形式进行特征提取,则网络会称为DenseNet-B
为进一步使DenseNet紧凑,在transition layer处采用较少的卷积核进行特征提取,从而压缩特征图通道数,压缩率用seta表示,典型值使0.5
当采用了Compression时,模型称为DenseNet-C 当同时采用Bottleneck layers和Compression称为DenseNet-BC,通常用的DenseNet指DenseNet-BC
整体可分三大块,分别是头部卷积、Dense Block堆叠,全链接输出分类概率