【深度学习】9 大主题卷积神经网络(CNN)的 PyTorch 实现
大家还记得这张图吗?
之前,红色石头发文介绍过一份很不错的资源:
52 个深度学习目标检测模型汇总,论文、源码一应俱全!
深度系统介绍了 52 个目标检测模型,纵观 2013 年到 2020 年,从最早的 R-CNN、OverFeat 到后来的 SSD、YOLO v3 再到去年的 M2Det,新模型层出不穷,性能也越来越好!
上文聚焦于源码和论文,对于各种卷积神经网络模型的实现,本文将介绍它们的 PyTorch 实现,非常有用!
这份资源已经开源在了 GitHub 上,链接如下:
https://github.com/shanglianlm0525/PyTorch-Networks
先来个总结介绍,该系列的卷积神经网络实现包含了 9 大主题,目录如下:
1. 典型网络
2. 轻量级网络
3. 目标检测网络
4. 语义分割网络
5. 实例分割网络
6. 人脸检测和识别网络
7. 人体姿态识别网络
8. 注意力机制网络
9. 人像分割网络
下面具体来看一下:
1. 典型网络(Classical network)
典型的卷积神经网络包括:AlexNet、VGG、ResNet、InceptionV1、InceptionV2、InceptionV3、InceptionV4、Inception-ResNet。
以 AlexNet 网络为例,AlexNet 是 2012 年 ImageNet 竞赛冠军获得者 Hinton 和他的学生 Alex Krizhevsky 设计的。AlexNet 中包含了几个比较新的技术点,也首次在 CNN 中成功应用了 ReLU、Dropout 和 LRN 等 Trick。同时 AlexNet 也使用了 GPU 进行运算加速。
AlexNet 网络结构的 PyTorch 实现方式如下:
import torch
import torch.nn as nndef Conv3x3BNReLU(in_channels,out_channels,stride,padding=1):return nn.Sequential(nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=3, stride=stride, padding=1),nn.BatchNorm2d(out_channels),nn.ReLU6(inplace=True))def Conv1x1BNReLU(in_channels,out_channels):return nn.Sequential(nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(out_channels),nn.ReLU6(inplace=True))def ConvBNReLU(in_channels,out_channels,kernel_size,stride,padding=1):return nn.Sequential(nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=stride, padding=padding),nn.BatchNorm2d(out_channels),nn.ReLU6(inplace=True))def ConvBN(in_channels,out_channels,kernel_size,stride,padding=1):return nn.Sequential(nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=stride, padding=padding),nn.BatchNorm2d(out_channels))class ResidualBlock(nn.Module):def __init__(self, in_channels, out_channels):super(ResidualBlock, self).__init__()mid_channels = out_channels//2self.bottleneck = nn.Sequential(ConvBNReLU(in_channels=in_channels, out_channels=mid_channels, kernel_size=1, stride=1),ConvBNReLU(in_channels=mid_channels, out_channels=mid_channels, kernel_size=3, stride=1, padding=1),ConvBNReLU(in_channels=mid_channels, out_channels=out_channels, kernel_size=1, stride=1),)self.shortcut = ConvBNReLU(in_channels=in_channels, out_channels=out_channels, kernel_size=1, stride=1)def forward(self, x):out = self.bottleneck(x)return out+self.shortcut(x)
2.轻量级网络(Lightweight)
轻量级网络包括:GhostNet、MobileNets、MobileNetV2、MobileNetV3、ShuffleNet、ShuffleNet V2、SqueezeNet Xception MixNet GhostNet。
以 GhostNet 为例,同样精度,速度和计算量均少于此前 SOTA 算法。GhostNet 的核心是 Ghost 模块,与普通卷积神经网络相比,在不更改输出特征图大小的情况下,其所需的参数总数和计算复杂度均已降低,而且即插即用。
GhostNet 网络结构的 PyTorch 实现方式如下:
https://github.com/shanglianlm0525/PyTorch-Networks/blob/master/Lightweight/GhostNet.py
3. 目标检测网络(ObjectDetection)
目标检测网络包括:SSD、YOLO、YOLOv2、YOLOv3、FCOS、FPN、RetinaNet Objects as Points、FSAF、CenterNet FoveaBox。
以 YOLO 系列为例,YOLO(You Only Look Once)是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。目前 YOLOv3 应用比较多。
YOLOV3 网络结构的 PyTorch 实现方式如下:
https://github.com/shanglianlm0525/PyTorch-Networks/blob/master/ObjectDetection/YOLOv3.py
4. 语义分割网络(SemanticSegmentation)
语义分割网络包括:FCN、Fast-SCNN、LEDNet、LRNNet、FisheyeMODNet。
以 FCN 为例,FCN 诞生于 2014 的语义分割模型先驱,主要贡献为在语义分割问题中推广使用端对端卷积神经网络,使用反卷积进行上采样。FCN 模型非常简单,里面全部是由卷积构成的,所以被称为全卷积网络,同时由于全卷积的特殊形式,因此可以接受任意大小的输入。
FCN 网络结构的 PyTorch 实现方式如下:
https://github.com/shanglianlm0525/PyTorch-Networks/blob/master/SemanticSegmentation/FCN.py
5. 实例分割网络(InstanceSegmentation)
实例分割网络包括:PolarMask。
6. 人脸检测和识别网络(commit VarGFaceNet)
人脸检测和识别网络包括:FaceBoxes、LFFD、VarGFaceNet。
7. 人体姿态识别网络(HumanPoseEstimation)
人体姿态识别网络包括:Stacked Hourglass、Networks Simple Baselines、LPN。
8. 注意力机制网络
注意力机制网络包括:SE Net、scSE、NL Net、GCNet、CBAM。
9. 人像分割网络(PortraitSegmentation)
人像分割网络包括:SINet。
综上,该 GitHub 开源项目展示了近些年来主流的 9 大类卷积神经网络,总共包含了几十种具体的网络结构。其中每个网络结构都有 PyTorch 实现方式。还是很不错的。
最后再放上 GitHub 开源地址:
https://github.com/shanglianlm0525/PyTorch-Networks
往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑获取一折本站知识星球优惠券,复制链接直接打开:https://t.zsxq.com/662nyZF本站qq群1003271085。加入微信群请扫码进群(如果是博士或者准备读博士请说明):
【深度学习】9 大主题卷积神经网络(CNN)的 PyTorch 实现相关推荐
- 花书+吴恩达深度学习(十一)卷积神经网络 CNN 之池化层
目录 0. 前言 1. 最大池化(max pooling) 2. 平移不变形 3. 其他池化函数 4. 卷积和池化作为一种无限强的先验 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常 ...
- 花书+吴恩达深度学习(十)卷积神经网络 CNN 之卷积层
目录 0. 前言 1. 2D 图像卷积 2. 3D 图像卷积 3. 过滤器(核函数) 4. 过滤器应用于边缘检测 5. padding 填充 6. stride 步长 7. 使用卷积的动机 8. 1乘 ...
- 花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)
目录 0. 前言 1. 单层卷积网络 2. 各参数维度 3. CNN 前向传播反向传播 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 ...
- 【深度学习】深入理解卷积神经网络(CNN)
CNN Author:louwill From:深度学习笔记 本文将为大家介绍一种用途更为广泛.性能更加优越的神经网络结构--卷积神经网络(Convolutional Neural Network, ...
- 水很深的深度学习(四)——卷积神经网络CNN
参考资料: 1.水很深的深度学习-CNN 2.卷积神经网络超详细介绍_呆呆的猫的博客-CSDN博客_卷积神经网络 3.大话卷积神经网络CNN(干货满满)-CSDN博客 卷积神经网络的概念 计算机视觉和 ...
- 深度学习【5】卷积神经网络CNN(2)
文章目录 一.卷积的变种 1.分组卷积 (1).定义 (2).优势 (3).应用场景 2.转置卷积 (1).定义 (2).优势 (3).具体步骤 (4).应用场景 3.空洞卷积 (1).定义 (2). ...
- 学习笔记:深度学习(3)——卷积神经网络(CNN)理论篇
学习时间:2022.04.10~2022.04.12 文章目录 3. 卷积神经网络CNN 3.1 卷积神经网络的概念 3.1.1 什么是CNN? 3.1.2 为什么要用CNN? 3.1.3 人类的视觉 ...
- 深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战
深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战 神经网络(neual networks)是人工智能研究领域的一部分,当前最流行的神经网络 ...
- 深度学习笔记其五:卷积神经网络和PYTORCH
深度学习笔记其五:卷积神经网络和PYTORCH 1. 从全连接层到卷积 1.1 不变性 1.2 多层感知机的限制 1.2.1 平移不变性 1.2.2 局部性 1.3 卷积 1.4 "沃尔多在 ...
- 深度学习实战3-文本卷积神经网络(TextCNN)新闻文本分类
文章目录 一.前期工作 1. 设置GPU 2. 导入预处理词库类 二.导入预处理词库类 三.参数设定 四.创建模型 五.训练模型函数 六.测试模型函数 七.训练模型与预测 今天给大家带来一个简单的中文 ...
最新文章
- Linux 网络管理(1) - 网络配置文件
- Charles(HTTP抓包工具软件)中文版
- 【opencv】26.图像水平边缘和竖直边缘的算子数学分析
- FAT AP和FIT AP 区别 (无线篇)
- 真实的程序员是什么样子的!
- 利用dropbox来Host你的silverlight应用
- Android Studio Template(模板)开发,最后有参考
- 读《Java编程思想第五版》心得体会
- cpda数据分析师证书含金量高吗
- java分割txt文件
- 强制删除文件处理程序
- 图片jpg格式怎么转换
- word表格分开快捷键_Word使用技巧(表格技巧、快捷键)
- 苹果个人开发者账号审核
- 分布式部署OpenDevOps报502错问题解决全过程
- 火狐Android 附加组件,Android版Firefox 85允许AMO安装附加组件
- 【Leetcode】460. LFU Cache
- MarkDown快捷键学习
- 团队项目开发流程总结
- linux 中的 super 命令