9 大主题卷积神经网络(CNN)的 PyTorch 实现

简介: 9 大主题卷积神经网络(CNN)的 PyTorch 实现

image.png


之前,红色石头发文介绍过一份很不错的资源:


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。


image.png

以 AlexNet 网络为例,AlexNet 是 2012 年 ImageNet 竞赛冠军获得者 Hinton 和他的学生 Alex Krizhevsky 设计的。AlexNet 中包含了几个比较新的技术点,也首次在 CNN 中成功应用了 ReLU、Dropout 和 LRN 等 Trick。同时 AlexNet 也使用了 GPU 进行运算加速。


image.png

AlexNet 网络结构的 PyTorch 实现方式如下:

import torch
import torch.nn as nn
def 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//2
        self.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。


2.jpg


以 GhostNet 为例,同样精度,速度和计算量均少于此前 SOTA 算法。GhostNet 的核心是 Ghost 模块,与普通卷积神经网络相比,在不更改输出特征图大小的情况下,其所需的参数总数和计算复杂度均已降低,而且即插即用。


image.png

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。


image.pngimage.pngimage.png

以 YOLO 系列为例,YOLO(You Only Look Once)是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。目前 YOLOv3 应用比较多。


image.png


YOLOV3 网络结构的 PyTorch 实现方式如下:


https://github.com/shanglianlm0525/PyTorch-Networks/blob/master/ObjectDetection/YOLOv3.py


4. 语义分割网络(SemanticSegmentation)


语义分割网络包括:FCN、Fast-SCNN、LEDNet、LRNNet、FisheyeMODNet。


image.png

以 FCN 为例,FCN 诞生于 2014 的语义分割模型先驱,主要贡献为在语义分割问题中推广使用端对端卷积神经网络,使用反卷积进行上采样。FCN 模型非常简单,里面全部是由卷积构成的,所以被称为全卷积网络,同时由于全卷积的特殊形式,因此可以接受任意大小的输入。


image.png


FCN 网络结构的 PyTorch 实现方式如下:


https://github.com/shanglianlm0525/PyTorch-Networks/blob/master/SemanticSegmentation/FCN.py


5. 实例分割网络(InstanceSegmentation)


实例分割网络包括:PolarMask。


image.png


6. 人脸检测和识别网络(commit VarGFaceNet)


人脸检测和识别网络包括:FaceBoxes、LFFD、VarGFaceNet。


image.png


7. 人体姿态识别网络(HumanPoseEstimation)


人体姿态识别网络包括:Stacked Hourglass、Networks Simple Baselines、LPN。


image.png


8. 注意力机制网络


注意力机制网络包括:SE Net、scSE、NL Net、GCNet、CBAM。


image.png


9. 人像分割网络(PortraitSegmentation)


人像分割网络包括:SINet。


综上,该 GitHub 开源项目展示了近些年来主流的 9 大类卷积神经网络,总共包含了几十种具体的网络结构。其中每个网络结构都有 PyTorch 实现方式。还是很不错的。


最后再放上 GitHub 开源地址:


https://github.com/shanglianlm0525/PyTorch-Networks




相关文章
|
10天前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
186 11
|
28天前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
|
21天前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
|
21天前
|
机器学习/深度学习 传感器 数据采集
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
130 0
|
24天前
|
机器学习/深度学习 传感器 数据采集
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本内容展示了一种基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测方法。通过 MATLAB2022a 实现,完整程序运行无水印,核心代码附详细中文注释及操作视频。算法利用 PSO 优化 TCN 的超参数(如卷积核大小、层数等),提升非线性时间序列预测性能。TCN 结构包含因果卷积层与残差连接,结合 LSTM 构建混合模型,经多次迭代选择最优超参数,最终实现更准确可靠的预测效果,适用于金融、气象等领域。
|
2月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
174 7
|
4月前
|
机器学习/深度学习 人工智能 算法
深度解析:基于卷积神经网络的宠物识别
宠物识别技术随着饲养规模扩大而兴起,传统手段存在局限性,基于卷积神经网络的宠物识别技术应运而生。快瞳AI通过优化MobileNet-SSD架构、多尺度特征融合及动态网络剪枝等技术,实现高效精准识别。其在智能家居、宠物医疗和防走失领域展现广泛应用前景,为宠物管理带来智能化解决方案,推动行业迈向新高度。
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
基于Pytorch 在昇腾上实现GCN图神经网络
本文详细讲解了如何在昇腾平台上使用PyTorch实现图神经网络(GCN)对Cora数据集进行分类训练。内容涵盖GCN背景、模型特点、网络架构剖析及实战分析。GCN通过聚合邻居节点信息实现“卷积”操作,适用于非欧氏结构数据。文章以两层GCN模型为例,结合Cora数据集(2708篇科学出版物,1433个特征,7种类别),展示了从数据加载到模型训练的完整流程。实验在NPU上运行,设置200个epoch,最终测试准确率达0.8040,内存占用约167M。
基于Pytorch 在昇腾上实现GCN图神经网络
|
4月前
|
机器学习/深度学习 算法 PyTorch
Perforated Backpropagation:神经网络优化的创新技术及PyTorch使用指南
深度学习近年来在多个领域取得了显著进展,但其核心组件——人工神经元和反向传播算法自提出以来鲜有根本性突破。穿孔反向传播(Perforated Backpropagation)技术通过引入“树突”机制,模仿生物神经元的计算能力,实现了对传统神经元的增强。该技术利用基于协方差的损失函数训练树突节点,使其能够识别神经元分类中的异常模式,从而提升整体网络性能。实验表明,该方法不仅可提高模型精度(如BERT模型准确率提升3%-17%),还能实现高效模型压缩(参数减少44%而无性能损失)。这一革新为深度学习的基础构建模块带来了新的可能性,尤其适用于边缘设备和大规模模型优化场景。
165 16
Perforated Backpropagation:神经网络优化的创新技术及PyTorch使用指南

热门文章

最新文章