sigmoid 输出结果0到1,单调递增,多用于多分类的输出
softmax 输出结果0到1,单调递增,多用于单分类的输出 (多个输出的和为1)
激活函数
tanh:存在梯度消失问题,所以很少用
relu:缺点:1.没有负值. 2.特征屏蔽太多,导致模型无法学习到有效特征 部分采用Leaky ReLU
Swish:在深层模型上的效果优于 ReLU
其他见下面网站(尤其是对梯度消失和爆炸的处理):
激活函数(ReLU, Swish, Maxout) - 康行天下 - 博客园
优化函数
SGD 随机梯度下降,通常要设weight_decay,可带动量
Adam 目前大多用这个
CosineAnnealingLR 余弦退火 防止进入局部最优
ReduceLROnPlateau 学习率自动下降
损失函数
0,1二分类:BCELoss
单分类:MSELoss 均方差 (pytorch上介绍MSEloss用作回归问题,NLLLoss用于分类问题)
多分类:CrossEntropyLoss (交叉熵)是把以上Softmax–Log–NLLLoss合并成一步
连续信息: CTCLoss
归一化层
输入层也要根据经验数据进行归一化,如统计的大量图像的均值和标准差分别为[0.485, 0.456, 0.406], [0.229, 0.224, 0.225]
BatchNorm2d:会加速batch训练的速度
池化层
MaxPool2d :常用语中间层,效果比avgpool2d好
AdaptiveAvgPool2d : 常用语最后的FC层之前做Global Pooling
数据增强
data_transforms = {
'train' : transforms.Compose([transfoims. RandomRotation(45), #-45到45度之间随机旋转
transforms.CenterCrop (224), #从中心开始裁剪
transforms.RandomHorizontalFiip(p=0. 5), #以0.5概率,随机水平翻转
transfonns.RandomVerticalFiip(p=0. 5), #以0.5概率,随机垂直翻转
transforms.ColorJitter(brightness=0.2, contrast=0.1, saturation=0.1, hue=0.1), #参数为亮度、对比度、饱和度、色相
transforms.RandomGrayscale (p=0.025), #以0.025概率转换成灰度, 3通道就是R=G=B
transforms.ToTensor(),
transforms.Normalize([0.483, 0.456, 0.406], [0.229, 0.224, 0.225]) #均值,标准差
]),
'valid' : transforms.Compose([transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
]),
}
卷积后feature map大小公式
感受野
featuremap上的点能够感受到输入层范围的变化。距离输入层越近感受野越小。应用:GoogLeNet的使用不同大小的卷积核,来获取不同范围的感受野。前景图像有大有小,所以需要不同的感受野,ResNet残差网络可能也有部分考虑。FasterRCNN利用感受野确定原图与卷积后图片的矩形框的位置
迁移学习
在样本量少或训练时间短时,通常用现成的网络和对应的网络参数,对部分参数的训练进行冻结,来加快训练速度的方法
一般步骤
网络结构
图像
常用骨干网络:
VGG:多层小的卷积核代替大的卷积,参数量降低。
ResNet:残差网络,至少不比上一次差。在物体分类中效果很好
SENet:增加注意力机制,可应用到其他网络中,来提高效果
MobileNet:空间可分离(二维矩阵改为两个一维矩阵相乘) 深度可分离(一次卷积改为生成层的卷积和1x1卷积)
EffNet:
Faster RCNN:两阶段的目标检测算法,包括阶段一的Region proposal以及阶段二的bounding box回归和分类。
Mask RCNN:沿用了Faster RCNN的思想,特征提取采用ResNet-FPN的架构,另外多加了一个Mask预测分支(即ResNet-FPN+Fast RCNN+Mask)。对每个RoI预测了对应的二值掩膜(binary mask)。所谓二进制mask,就是当像素属于目标的所有位置上时标识为1,其它位置标识为 0。可用于语义分割和实例分割
FPN:Feature Pyramid Networks 基于Faster RCNN,将每个大小的特征图和上采样后的特征图融合,然后进行多尺度目标检测,包括自下而上,自上而下和横向连接三个部分,将各个层级的特征进行融合,使其同时具有强语义信息和强空间信息。是一种通用架构,可以结合各种骨架网络使用。 1.1.2 FPN结构详解_哔哩哔哩_bilibili
YOLO:多个网络优点的结合体,目前有稳定的V5版本和相应的训练参数。最终输出的特征图为7*7*30,理解为图片长宽7*7等分。30=((4+1)*2+20),两个Bbox位置及置信度,还有20个分类打分
SSD:(Single Shot MultiBox Detector)结合FasterRCNN的Anchor机制和YOLO的回归思想。其核心是在不同尺度的特征图上采用卷积核来预测一系列Default Bounding Boxes的类别、坐标偏移
Swin-Transformer:与以往基于anchor的position propose不同,直接使用transformer生成。将图片分割成4*4大小的多个patch。论文中将7*7个patch做为一个window(计算self-atterntion的基本单元)。使用patch merging解决多尺度问题,相对位置作为transformer的position,基于移动窗口的自注意力使图片相连的两个窗口之间有了交互,从而具有全局建模的能力
DETR:基于transfermer的物体检测,整个训练过程中未传入位置信息,而是训练得到。transfermer的object query获取预测的bbox位置,代码 在预测和结果真实结果的匹配中使用了匈牙利算法
detectron2是facebook AI research(FAIR)重构detectron的深度学习框架,是2020年最火的深度学习框架(另外还有mmdetection,simpledet,目标检测三大开源神器:Detectron2/mmDetection/SimpleDet - 知乎 (zhihu.com))。detectron2从基于caffe重构为完全基于pytorch,集成了先进的目标检测和语义分割算法,并有一大批预训练好的模型,即插即用十分方便
常用数据集:ImageNet classification, COCO region detection,ADE20k semantic segmentation
图片模型一般结构:
NLP
nlp中很少用BatchNormalization,而用LayerNormalization(因为输入长度不同,会有padding)
RNN:循环神经网路,即一个序列当前的输出与前面的输出也有关。具有记忆功能。W,U,V在每个时刻都是相等的(权重共享),隐藏状态可以理解为: S=f(现有的输入+过去记忆总结)
LSTM:在RNN基础上引入了输入门、遗忘门、输出门,解决RNN的长记忆问题。GRU相似,只有两个门。缺点同RNN不能并行计算
word2vec:词向量(通常50~300维向量) embedding ,通过大量的语料库的学习(CBOM或skip-gram),生成词向量,相同性质的词的向量具有相似性,则可以通过 欧式距离或cos等 做更多操作
transformer:引入注意力机制(QKV), QK的点乘体现了Q向量与K向量的相似性。 多头注意力机制会将feature映射到不同空间, 残差和LayerNormalization解决训练问题。包含Encoder和Decoder两部分,Encoder-Decoder结构中 ,Encoder 输出K,V 、 Decoder 生成Q(作为输入部分)。NLP中是对句子中的每个单词进行embedding,CV中是对整幅图像分为许多大小相同的patch,然后对patch进行embedding。 BERT
推荐系统
CV和NLP的结合。通过向量间的欧式距离或cos,推荐相似的东西
模型裁剪策略-FPGM
模型裁剪指的是通过去除网络中冗余的通道(channel)、滤波器(filter)、神经元(neuron)等,来得到一个更轻量的网络,同时尽可能保证模型精度。
相比于裁剪通道或者特征图的方法,裁剪滤波器的方法可以得到更加规则的模型,因此减少内存消耗,加速模型推理过程。
之前的裁剪滤波器的方法大多基于范数进行裁剪,即,认为范数较小的滤波器重要程度较小,但是这种方法要求存在的滤波器的最小范数应该趋近于0,否则我们难以去除。
针对上面的问题,基于几何中心点的裁剪算法(Filter Pruning via Geometric Median, FPGM)被提出。FPGM将卷积层中的每个滤波器都作为欧几里德空间中的一个点,它引入了几何中位数这样一个概念,即与所有采样点距离之和最小的点。如果一个滤波器的接近这个几何中位数,那我们可以认为这个滤波器的信息和其他滤波器重合,可以去掉。