cnn stride and padding_9大主题卷积神经网络(CNN)的PyTorch实现

↑ 点击 蓝字  关注极市平台 4781f64392d3db19916cf2f302fc93b4.gif 作者丨红色石头 来源丨AI有道

极市导读

 

从R-CNN到YOLO v3再到M2Det,近年来的目标检测新模型层出不穷,性能也越来越好。本文介绍了它们的PyTorch实现,目前Github已开源,非常实用。>>就在明天,极市直播:极市直播丨张志鹏:Ocean/Ocean+: 实时目标跟踪分割算法,小代价,大增益|ECCV2020

大家还记得这张图吗? 41f0e4a2e817f98b2666d7d50bb91df1.png 纵观 2013 年到 2020 年的52个目标检测模型,从最早的 R-CNN、OverFeat 到后来的 SSD、YOLO v3 再到去年的 M2Det,新模型层出不穷,性能也越来越好。 之前介绍了一份非常不错的资源,聚焦于源码和论文,还有对于各种卷积神经网络模型的实现,Github地址如下: https://github.com/hoya012/deep_learning_object_detection 而本文将介绍一个新的Github资源——它们的 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。 4dbc57c286ac120f041831e7a425b499.png 以 AlexNet 网络为例,AlexNet 是 2012 年 ImageNet 竞赛冠军获得者 Hinton 和他的学生 Alex Krizhevsky 设计的。AlexNet 中包含了几个比较新的技术点,也首次在 CNN 中成功应用了 ReLU、Dropout 和 LRN 等 Trick。同时 AlexNet 也使用了 GPU 进行运算加速。 d567ea550b6c155e334af389ad6334d6.png AlexNet 网络结构的 PyTorch 实现方式如下:
import torchimport 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//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)

轻量级网络(Lightweight)

轻量级网络包括:GhostNet、MobileNets、MobileNetV2、MobileNetV3、ShuffleNet、ShuffleNet V2、SqueezeNet Xception MixNet GhostNet。 48bf6e445295ccb2f6c1fbdd69c9d2e8.png 以 GhostNet 为例,同样精度,速度和计算量均少于此前 SOTA 算法。GhostNet 的核心是 Ghost 模块,与普通卷积神经网络相比,在不更改输出特征图大小的情况下,其所需的参数总数和计算复杂度均已降低,而且即插即用。 d96d2976dda43556b50c485623a7764f.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。 ced6b8b3343a52e2c0cf6c3ab68e7387.png be08730792b245da0eee1eb4756e62e9.png aaed642d0d3f2f6c6577de74f94b4e7a.png 以 YOLO 系列为例,YOLO(You Only Look Once)是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。目前 YOLOv3 应用比较多。 7a91ed7ba55419e1e100731e74a729e2.png YOLOV3 网络结构的 PyTorch 实现方式如下: https://github.com/shanglianlm0525/PyTorch-Networks/blob/master/ObjectDetection/YOLOv3.py 4 语义分割网络(SemanticSegmentation) 语义分割网络包括:FCN、Fast-SCNN、LEDNet、LRNNet、FisheyeMODNet。 bdaaf4879777d9e7d6d3a79aaa6a5f6d.png 以 FCN 为例,FCN 诞生于 2014 的语义分割模型先驱,主要贡献为在语义分割问题中推广使用端对端卷积神经网络,使用反卷积进行上采样。FCN 模型非常简单,里面全部是由卷积构成的,所以被称为全卷积网络,同时由于全卷积的特殊形式,因此可以接受任意大小的输入。 2c473a0b36715e7f39c4928af4ea6648.png FCN 网络结构的 PyTorch 实现方式如下: https://github.com/shanglianlm0525/PyTorch-Networks/blob/master/SemanticSegmentation/FCN.py 5 实例分割网络(InstanceSegmentation) 实例分割网络包括:PolarMask。 5e68dede0bb44f1cb2beb56254658db3.png 6 人脸检测和识别网络(commit VarGFaceNet) 人脸检测和识别网络包括:FaceBoxes、LFFD、VarGFaceNet。 22f60af9a6f92e4166bdb383b0947bae.png

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

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

8 注意力机制网络

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

9 人像分割网络(PortraitSegmentation)

人像分割网络包括:SINet。 综上,该 GitHub 开源项目展示了近些年来主流的 9 大类卷积神经网络,总共包含了几十种具体的网络结构。其中每个网络结构都有 PyTorch 实现方式。还是很不错的。 最后再放上 GitHub 开源地址: https://github.com/shanglianlm0525/PyTorch-Networks

推荐阅读

  • 通道注意力超强改进,轻量模块ECANet来了!即插即用,显著提高CNN性能|已开源
  • 凭什么相信你,我的CNN模型?关于CNN模型可解释性的思考
  • 深度学习准「研究僧」预习资料:图灵奖得主Yann LeCun《深度学习(Pytorch)》春季课程
ab8b2253637fdcbfeb5fe318f1fb7cae.png 添加极市小助手微信(ID : cvmart2),备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳),即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群:每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~ 8bcb34853d0f3e9a0925d00e1dca47d3.png △长按添加极市小助手 7e34488f8dad159566412c8ea54411b6.png △长按关注极市平台,获取 最新CV干货 觉得有用麻烦给个在看啦~   ab7cc8f49cc9beba97971c890ce4a8cb.gif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值