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 实现相关推荐

  1. 【深度学习】9 大主题卷积神经网络(CNN)的 PyTorch 实现

    大家还记得这张图吗? 之前,红色石头发文介绍过一份很不错的资源: 52 个深度学习目标检测模型汇总,论文.源码一应俱全! 深度系统介绍了 52 个目标检测模型,纵观 2013 年到 2020 年,从最 ...

  2. 7大类卷积神经网络(CNN)创新综述

    点击上方"视学算法","星标"或"置顶" 关键时刻,第一时间送达 本文转载自:机器之心    参与:王淑婷.姜悦 作者:Asifullah ...

  3. 【 卷积神经网络CNN 数学原理分析与源码详解 深度学习 Pytorch笔记 B站刘二大人(9/10)】

    卷积神经网络CNN 数学原理分析与源码详解 深度学习 Pytorch笔记 B站刘二大人(9/10) 本章主要进行卷积神经网络的相关数学原理和pytorch的对应模块进行推导分析 代码也是通过demo实 ...

  4. 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】

    卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...

  5. 搭建CNN卷积神经网络(用pytorch搭建)

    手撕卷积神经网络-CNN 卷积:提取特征 池化:压缩特征 heigh X weigh X depth 长度 宽度.深度(也就是特征图个数) 例如输入32x32x3 hxwxc 卷积就是取某个小区域进行 ...

  6. 【从线性回归到 卷积神经网络CNN 循环神经网络RNN Pytorch 学习笔记 目录整合 源码解读 B站刘二大人 绪论(0/10)】

    深度学习 Pytorch 学习笔记 目录整合 数学推导与源码详解 B站刘二大人 目录传送门: 线性模型 Linear-Model 数学原理分析以及源码详解 深度学习 Pytorch笔记 B站刘二大人( ...

  7. 基于FPGA的一维卷积神经网络CNN的实现(一)框架

    理论建立与效果展示 环境:Vivado2019.2. Part:xcku040-ffva1156-2-i,内嵌DSP个数 1920个,BRAM 600个也就是21.1Mb. 说明:通过识别加高斯白噪声 ...

  8. 深度学习:应用于机器视觉领域的卷积神经网络(CNN)简介

    1 背景介绍 深度学习是近几年的热门研究话题.深度学习受到神经学的启示,模拟人脑的认知与表达过程,通过低层信号到高层特征的函数映射,来建立学习数据内部隐含关系的逻辑层次模型.深度学习相比于一般的浅层模 ...

  9. 机器学习之卷积神经网络--CNN介绍

    卷积神经网络–CNN 1. 卷积神经网络介绍 卷积神经网络(Convolutional Neural Networks,CNN)是一种包 含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之 ...

最新文章

  1. dp,px,pt,sp 的区别 以及dp 和 px 互转
  2. 公司虚拟化平台VMware vCenter Server无法连接故障排查解决
  3. 一个 Java 对象到底有多大?
  4. 街电与搜电网络营销外包合并,怪兽充电终上市共享充电市场将迎来新变化
  5. 动态规划-换钱最少货币数
  6. Python高级网络编程系列之第一篇
  7. Java基础:IO流之File类
  8. sqlmap绕过过滤的tamper脚本分类汇总
  9. 【巷子】---vue基于mint-ui三级联动---【vue】
  10. springboot-web开发
  11. LeetCode-best time to buy and sell stock 1 数组
  12. 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...
  13. [CV招聘]中科院空间应用工程与技术中心2019年校园招聘
  14. TIFF图像文件格式解析
  15. 谷歌浏览器打开阅读清单
  16. mysql where 小于_MySQL-过滤数据(WHERE语句)
  17. 纯干货!一款APP从设计稿到切图过程全方位揭秘(转)
  18. 《大象:thinking in uml 》(第二版) 3章 UML核心元素 4-7节 边界、业务实体、包、分析类
  19. 路由器信号总是无法与手机连接服务器,手机搜不到路由器信号_手机无法搜到路由器信号怎么办?-192路由网...
  20. 二叉查找树的平衡(DSW)

热门文章

  1. Direct2D开发:Direct2D 和 GDI 互操作性概述
  2. ASP.NET将原始图片按照指定尺寸等比例缩放显示图片
  3. mysql远程访问,修改root密码
  4. sql server 2014预览版发布
  5. windows线程同步-原子操作-Interlocked系列函数(用户模式)
  6. Task02:青少年软件编程(Scratch)等级考试模拟卷(一级)
  7. 【怎样写代码】小技巧 -- 关于方法中修饰形参的关键词
  8. Matlab数据的可视化 -- 三维表面图
  9. 首个深度强化学习AI,能控制核聚变,成功登上《Nature》
  10. Java 领域 offer 收割:程序员黄金 5 年进阶心得!