9 大主题卷积神经网络(CNN)的 PyTorch 实现
Datawhale干货
作者:红色石头,北京大学,Datawhale伙伴
大家还记得这张图吗?
之前,红色石头发文介绍过一份很不错的资源:
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
9 大主题卷积神经网络(CNN)的 PyTorch 实现相关推荐
- 【深度学习】9 大主题卷积神经网络(CNN)的 PyTorch 实现
大家还记得这张图吗? 之前,红色石头发文介绍过一份很不错的资源: 52 个深度学习目标检测模型汇总,论文.源码一应俱全! 深度系统介绍了 52 个目标检测模型,纵观 2013 年到 2020 年,从最 ...
- 7大类卷积神经网络(CNN)创新综述
点击上方"视学算法","星标"或"置顶" 关键时刻,第一时间送达 本文转载自:机器之心 参与:王淑婷.姜悦 作者:Asifullah ...
- 【 卷积神经网络CNN 数学原理分析与源码详解 深度学习 Pytorch笔记 B站刘二大人(9/10)】
卷积神经网络CNN 数学原理分析与源码详解 深度学习 Pytorch笔记 B站刘二大人(9/10) 本章主要进行卷积神经网络的相关数学原理和pytorch的对应模块进行推导分析 代码也是通过demo实 ...
- 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】
卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...
- 搭建CNN卷积神经网络(用pytorch搭建)
手撕卷积神经网络-CNN 卷积:提取特征 池化:压缩特征 heigh X weigh X depth 长度 宽度.深度(也就是特征图个数) 例如输入32x32x3 hxwxc 卷积就是取某个小区域进行 ...
- 【从线性回归到 卷积神经网络CNN 循环神经网络RNN Pytorch 学习笔记 目录整合 源码解读 B站刘二大人 绪论(0/10)】
深度学习 Pytorch 学习笔记 目录整合 数学推导与源码详解 B站刘二大人 目录传送门: 线性模型 Linear-Model 数学原理分析以及源码详解 深度学习 Pytorch笔记 B站刘二大人( ...
- 基于FPGA的一维卷积神经网络CNN的实现(一)框架
理论建立与效果展示 环境:Vivado2019.2. Part:xcku040-ffva1156-2-i,内嵌DSP个数 1920个,BRAM 600个也就是21.1Mb. 说明:通过识别加高斯白噪声 ...
- 深度学习:应用于机器视觉领域的卷积神经网络(CNN)简介
1 背景介绍 深度学习是近几年的热门研究话题.深度学习受到神经学的启示,模拟人脑的认知与表达过程,通过低层信号到高层特征的函数映射,来建立学习数据内部隐含关系的逻辑层次模型.深度学习相比于一般的浅层模 ...
- 机器学习之卷积神经网络--CNN介绍
卷积神经网络–CNN 1. 卷积神经网络介绍 卷积神经网络(Convolutional Neural Networks,CNN)是一种包 含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之 ...
最新文章
- dp,px,pt,sp 的区别 以及dp 和 px 互转
- 公司虚拟化平台VMware vCenter Server无法连接故障排查解决
- 一个 Java 对象到底有多大?
- 街电与搜电网络营销外包合并,怪兽充电终上市共享充电市场将迎来新变化
- 动态规划-换钱最少货币数
- Python高级网络编程系列之第一篇
- Java基础:IO流之File类
- sqlmap绕过过滤的tamper脚本分类汇总
- 【巷子】---vue基于mint-ui三级联动---【vue】
- springboot-web开发
- LeetCode-best time to buy and sell stock 1 数组
- 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...
- [CV招聘]中科院空间应用工程与技术中心2019年校园招聘
- TIFF图像文件格式解析
- 谷歌浏览器打开阅读清单
- mysql where 小于_MySQL-过滤数据(WHERE语句)
- 纯干货!一款APP从设计稿到切图过程全方位揭秘(转)
- 《大象:thinking in uml 》(第二版) 3章 UML核心元素 4-7节 边界、业务实体、包、分析类
- 路由器信号总是无法与手机连接服务器,手机搜不到路由器信号_手机无法搜到路由器信号怎么办?-192路由网...
- 二叉查找树的平衡(DSW)
热门文章
- Direct2D开发:Direct2D 和 GDI 互操作性概述
- ASP.NET将原始图片按照指定尺寸等比例缩放显示图片
- mysql远程访问,修改root密码
- sql server 2014预览版发布
- windows线程同步-原子操作-Interlocked系列函数(用户模式)
- Task02:青少年软件编程(Scratch)等级考试模拟卷(一级)
- 【怎样写代码】小技巧 -- 关于方法中修饰形参的关键词
- Matlab数据的可视化 -- 三维表面图
- 首个深度强化学习AI,能控制核聚变,成功登上《Nature》
- Java 领域 offer 收割:程序员黄金 5 年进阶心得!