深度学习中经典网络结构图和代码
PyTorch-Networks: 包含了分类、检测以及姿态估计等网络的pytorch代码
caffe-model-zoo: AlexNet、VGGNet、GooLeNet、ResNet等网络含预训练权重
caffe-model: 不同网络的性能对比,仅含网络结构,不含权重
DWConv depthwise conv
如在上图中一张10x10像素、三通道彩色输入图片(shape为3x10x10), Depthwise Convolution首先经过第一次逐通道卷积运算(shape为3x3x3), 然后再进行逐点卷积(shape 为3x1x1x16), 那么总的参数量为27+48 =75, 相比于常规卷积(3x3x3x16) 减少了83%的参数量
CNN模型之ShuffleNetInverted residual block
Inverted residual block来源于Mobilenet, 传统的残差模块, 先用1x1卷积将输入的feature map的维度降低, 然后进行3x3的卷积操作, 最后再用1x1的卷积将维度变大. 而倒置残差模块先用1x1卷积将输入的feature map维度变大, 然后用3x3 depthwise convolution方式做卷积运算, 最后使用1x1的卷积运算将其维度缩小. 注意, 在Mobilenet V2中, 1x1卷积运算后, 不再使用ReLU6激活函数, 而是使用线性激活函数, 以保留更多特征信息, 保证模型的表达能力
CNN模型之ShuffleNet
基本单元
channel shuffle实现:假定将输入层分为g组,总通道数为n,首先你将通道那个维度拆分为 (g,n) 两个维度,然后将这两个维度转置变成 (n,g) ,最后重新reshape成一个维度。仅需要简单的维度操作和转置就可以实现均匀的shuffle
def shuffle_channels(x, groups):"""shuffle channels of a 4-D Tensor"""batch_size, channels, height, width = x.size()assert channels % groups == 0channels_per_group = channels // groups# split into groupsx = x.view(batch_size, groups, channels_per_group,height, width)# transpose 1, 2 axisx = x.transpose(1, 2).contiguous()# reshape into orignalx = x.view(batch_size, channels, height, width)return x
ShuffleNetV2:轻量级CNN网络中的桂冠
- 同等通道大小最小化内存访问量
- 过量使用组卷积会增加MAC
- 网络碎片化会降低并行度
- 不能忽略元素级操作
指导准则总结如下
- 1x1卷积进行平衡输入和输出的通道大小;
- 组卷积要谨慎使用,注意分组数;
- 避免网络的碎片化;
- 减少元素级运算。
CNN模型之SqueezeNet
最后一届ImageNet冠军模型:SENet
SENet网络的创新点在于关注channel之间的关系,希望模型可以自动学习到不同channel特征的重要程度. SE模块首先对卷积得到的特征图进行Squeeze操作,得到channel级的全局特征,然后对全局特征进行Excitation操作,学习各个channel间的关系,也得到不同channel的权重,最后乘以原来的特征图得到最终特征。本质上,SE模块是在channel维度上做attention或者gating操作,这种注意力机制让模型可以更加关注信息量最大的channel特征,而抑制那些不重要的channel特征。另外一点是SE模块是通用的,这意味着其可以嵌入到现有的网络架构中
class SELayer(nn.Module):def __init__(self, channel, reduction=16):super(SELayer, self).__init__()self.avg_pool = nn.AdaptiveAvgPool2d(1)self.fc = nn.Sequential(nn.Linear(channel, channel // reduction, bias=False),nn.ReLU(inplace=True),nn.Linear(channel // reduction, channel, bias=False),nn.Sigmoid())def forward(self, x):b, c, _, _ = x.size()y = self.avg_pool(x).view(b, c)y = self.fc(y).view(b, c, 1, 1)return x * y.expand_as(x)
mobilenet-v3_小菜鸟的AI之路
在bottlenet结构中加入了SE结构,并且放在了depthwise filter之后. 因为SE结构会消耗一定的时间,所以作者在含有SE的结构中,将expansion layer的channel变为原来的1/4,这样作者发现,即提高了精度,同时还没有增加时间消耗。并且SE结构放在了depthwise之后。
在mobilenetv2中,在avg pooling之前,存在一个1x1的卷积层,目的是提高特征图的维度,更有利于结构的预测,但是这其实带来了一定的计算量了,所以这里作者修改了,将其放在avg pooling的后面,首先利用avg pooling将特征图大小由7x7降到了1x1,降到1x1后,然后再利用1x1提高维度,这样就减少了7x7=49倍的计算量。并且为了进一步的降低计算量,作者直接去掉了前面纺锤型卷积的3x3以及1x1卷积,进一步减少了计算量,就变成了如下图第二行所示的结构,作者将其中的3x3以及1x1去掉后,精度并没有得到损失。这里降低了大约15ms的速度
RepVGG算法详解
在VGG网络的Block块中加入了Identity和残差分支,相当于把ResNet网络中的精华应用 到VGG网络中.模型推理阶段,通过Op融合策略将所有的网络层都转换为Conv3*3,便于模型的部署与加速。 网络训练和网络推理阶段使用不同的网络架构,训练阶段更关注精度,推理阶段更关注速度, 是一种提升模型部署速度的方案
首先通过将残差块中的卷积层和BN层进行融合, 将融合后的卷积层转换为Conv3*3,合并残差分支中的Conv3*3
一文读懂EfficientDet
深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解
上图三个蓝色方框内表示Yolov3的三个基本组件:
- CBL:Yolov3网络结构中的最小组件,由Conv+Bn+Leaky_relu激活函数三者组成。
- Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。
- ResX:由一个CBL和X个残差组件构成,是Yolov3中的大组件。每个Res模块前面的CBL都起到下采样的作用,因此经过5次Res模块后,得到的特征图是608->304->152->76->38->19大小。
- 输入端:这里指的创新主要是训练时对输入端的改进,主要包括Mosaic数据增强、cmBN、SAT自对抗训练
- BackBone主干网络:将各种新的方式结合起来,包括:CSPDarknet53、Mish激活函数、Dropblock
- Neck:目标检测网络在BackBone和最后的输出层之间往往会插入一些层,比如Yolov4中的SPP模块、FPN+PAN结构
- Prediction:输出层的锚框机制和Yolov3相同,主要改进的是训练时的损失函数CIOU_Loss,以及预测框筛选的nms变为DIOU_nms
深入浅出Yolo系列之Yolov5核心基础知识完整讲解
(1)输入端:Mosaic数据增强、自适应锚框计算、自适应图片缩放
(2)Backbone:Focus结构,CSP结构
(3)Neck:FPN+PAN结构
(4)Prediction:GIOU_Loss
深入浅出Yolo系列之Yolox核心基础完整讲解
1. 输入端:Strong augmentation数据增强
2. BackBone主干网络:主干网络没有什么变化,还是Darknet53。
3. Neck:没有什么变化,Yolov3 baseline的Neck层还是FPN结构。
4. Prediction:Decoupled Head、End-to-End YOLO、Anchor-free、Multi positives
一文读懂HRNet
backbone分成4个stage,每个stage分成蓝色框和橙色框两部分。其中蓝色框部分是每个stage的基本结构,由多个branch组成,HRNet中stage1蓝色框使用的是BottleNeck,stage2&3&4蓝色框使用的是BasicBlock。其中橙色框部分是每个stage的过渡结构,HRNet中stage1橙色框是一个TransitionLayer,stage2&3橙色框是一个FuseLayer和一个TransitionLayer的叠加,stage4橙色框是一个FuseLayer
深度学习中经典网络结构图和代码相关推荐
- 详解深度学习之经典网络:AlexNet(2012) 并利用该网络架构实现人脸识别
@[TOC](详解深度学习之经典网络:AlexNet(2012) 并利用该网络架构实现人脸识别**) 近来闲来无事,翻出了搁置已久的轻薄版电脑,望着积满灰尘的显示屏,觉得有愧于老师的尊尊教导,心中叹息 ...
- 详解深度学习之经典网络架构(十):九大框架汇总
目录 0.概览 1.个人心得 2.总结 本文是对本人前面讲的的一些经典框架的汇总. 纯手打,如果有不足之处,可以在评论区里留言. 0.概览 (1)详解深度学习之经典网络架构(一):LeNet (2)详 ...
- 深度学习之经典网络架构AlexNet(二)
一.简介 AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的.也是在那年之后,更多的更深的神经网路被提出,比如优秀的vgg,Google ...
- vgg16卷积层的计算量_深度学习_经典网络_VGG16和ResNet152哪个参数量更多
首先,我们我们知道深度学习中网络的计算量代表时间复杂度,参数量代表空间复杂度. 从ResNet的论文中可知(ResNet论文可在这个文章中的第六部分找到)152层的残差网络在时间复杂度上和VGG16是 ...
- 深度学习中的网络表征学习的算法目标简介
https://www.toutiao.com/a6639983875458073095/ 2018-12-28 18:08:39 深度学习网络表征学习算法的目标是获得网络的低维稠密表示.对于大规模网 ...
- 李沐动手学深度学习V2-全卷积网络FCN和代码实现
一.全卷积网络FCN 1. 介绍 语义分割是对图像中的每个像素分类,全卷积网络(fully convolutional network,FCN)采用卷积神经网络实现了从图像像素到像素类别的变换 ,与前 ...
- 深度学习中的网络设计技术(一) ——理论概述
一.网络设计 (1) 网路设计要点 网络设计考虑重点:1. 精度 2.容量 3. 效率 精度:网络预测样本的精度(TP / (TP +FP)) 容量:容纳数据量的多少,神经元越多,容量越大. 效率:网 ...
- 10.深度学习之经典网络-1
10.1 卷积神经网络(LeNet) 一个早期用来识别手写数字图像的卷积神经网络:LeNet . LeNet-5展示了通过梯度下降训练卷积神经网络可以达到手写数字识别在当时最先进的结果. 10.1.1 ...
- 深度学习中GPU的作用
英伟达推出的"霸王条款":GeForce产品禁止用于深度学习. 英伟达的禁令 众所周知,英伟达是显卡界的老大,2017年英伟达的GPU芯片在全球市场的占有率为70%左右,无论是人工 ...
最新文章
- Linux操作系统(二:shell脚本)
- 学习Java--JDK的下载安装和配置
- Android Http请求框架二:xUtils 框架网络请求
- oracle之控制用户权限和练习
- 【剑指offer】面试题63:股票的最大利润(Java)
- jq之$(“*“)隐藏所有元素
- 在线打假!“鲁迅说过的话”检索系统上线 网友太热情系统一度崩溃
- Kotlin入门(23)适配器的进阶表达
- 软件详细设计说明书_软件测试的基本理论 笔记
- python版本时间_python 获取文件版本号和修改时间
- java生成pdf表格_java生成pdf文件 --- Table
- TechParty Mini+4 logging
- 技嘉服务器主板按f1才能进系统,电脑开机要按F1或F2才能进入系统的解决方法
- 【小程序自动化Minium】二、元素定位-Page接口中的 get_element() 与 get_elements()
- 查询,珍爱网ID,百合网ID,世纪佳缘ID,有缘网ID
- 微软收购以色列触控笔技术
- ESP UART 介绍
- 孟郎诗词网3.0版本问题总结
- 步进电机在音乐喷泉中的应用解决方案
- 工作中常用的JS函数整理分享(欢迎大家补充)