9大主题卷积神经网络(CNN)的PyTorch实现
![](https://filescdn.proginn.com/e4f013b2a241b5e3ad6fd693d141576a/a2c38483df6cfafab0c974f91f0b2459.webp)
极市导读
从R-CNN到YOLO v3再到M2Det,近年来的目标检测新模型层出不穷,性能也越来越好。本文介绍了它们的PyTorch实现,目前Github已开源,非常实用。>>就在明天,极市直播:极市直播丨张志鹏:Ocean/Ocean+: 实时目标跟踪分割算法,小代价,大增益|ECCV2020
![](https://filescdn.proginn.com/f6ddaf526d4eba8242ac81b6786e6640/1e78facedcb519e831e043bceba8eb38.webp)
1 典型网络(Classical network)
![](https://filescdn.proginn.com/2afa55cd060958265f4e2d9e55ccf626/f82bd95180a1dc51be381f34c393f97e.webp)
![](https://filescdn.proginn.com/06d8f1d0938f87396240d0c32974bf0c/7b58dd3afeb9589ef67e65be8221b996.webp)
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)
![](https://filescdn.proginn.com/62e77dd6c486b77404436a87144b0aea/6dd9b731eb8875bee07121da925d1e08.webp)
![](https://filescdn.proginn.com/e184d64d1cb871e3ced32e585ae84e71/c53f874f045ba88d14e666bc2294eafb.webp)
![](https://filescdn.proginn.com/c1e9b78f0fbf4addfc8e9161732f8828/9ae29ce1f50237334c49629e084b5d49.webp)
![](https://filescdn.proginn.com/3b29687c84ee034fd8943e696981bcc1/b590df5471f8ff0884918ae036cf7523.webp)
![](https://filescdn.proginn.com/e0ea4e9ff16458d7bcc958b6d6290976/18080a781170168b83bddff37e9cb3e2.webp)
![](https://filescdn.proginn.com/2e572977ee8796ea2fd6516369f3919d/4e6ecbde70c999df5fb74fb33a98f5f9.webp)
![](https://filescdn.proginn.com/88295832e3a95bdb53c0a761856dffa6/8442ac8426de0e67cab9f940a414bd9a.webp)
![](https://filescdn.proginn.com/d57814b823ac40481b038af719480ba7/9a95164c91e1a2e01c8853e70f529609.webp)
![](https://filescdn.proginn.com/3fa70569fd0d5bfec76cb3ae60aa7d38/cb37aa7a6dcc5823691a16d909a1a86f.webp)
![](https://filescdn.proginn.com/71c91398f034f25ba42200c79eda9280/bf8482a1639fd80e3c1e37fe351bcddc.webp)
7 人体姿态识别网络(HumanPoseEstimation)
![](https://filescdn.proginn.com/a5ca3786b2f6c0075d053dd9fd06400c/da73febe6f47d361f255e89c97c932b4.webp)
8 注意力机制网络
![](https://filescdn.proginn.com/48771a450914be094cbfff8db42dd690/7d90dbc52ab02f9ecf70480b2ad29ebb.webp)
9 人像分割网络(PortraitSegmentation)
推荐阅读
通道注意力超强改进,轻量模块ECANet来了!即插即用,显著提高CNN性能|已开源 凭什么相信你,我的CNN模型?关于CNN模型可解释性的思考 深度学习准「研究僧」预习资料:图灵奖得主Yann LeCun《深度学习(Pytorch)》春季课程
![](https://filescdn.proginn.com/5f26be4ce8b9dfe200dd2001b2dc5f56/de4cdfe17a62ca42684ce93c1cd4d318.webp)
评论