1、什么是Faster R-CNN




2、pytorch-gpu环境配置(跳过)
3、Faster R-CNN整体结构介绍

Faster-RCNN可以采用多种的主干特征提取网络,常用的有VGG,Resnet,Xception等等。
Faster-RCNN对输入进来的图片尺寸没有固定,但一般会把输入进来的图片短边固定成600.
4、Resnet50-主干特征提取网络介绍
具体学习见:Resnet50
import math
import torch.nn as nn
from torch.hub import load_state_dict_from_url
class Bottleneck(nn.Module):
expansion = 4 #最后一个卷积层输出通道数相对于输入通道数的倍数
def __init__(self, inplanes, planes, stride=1, downsample=None):
'''
inplanes:输入通道数
planes:卷积层输出的通道数
stride:卷积的步长,默认为1
downsample:是否对输入进行下采样
'''
super(Bottleneck, self).__init__()
#使用1*1卷积核,压缩通道数
self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, stride=stride, bias=False)#二维卷积层
self.bn1 = nn.BatchNorm2d(planes)#二维批归一化层
#使用3*3卷积核,特征提取,padding=1,在输入的周围使用1个零填充,以保持特征图的尺寸
self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=1, padding=1, bias=False)
self.bn2 = nn.BatchNorm2d(planes)
#使用1*1卷积核,扩张通道数
self.conv3 = nn.Conv2d(planes, planes * 4, kernel_size=1, bias=False)
self.bn3 = nn.BatchNorm2d(planes * 4)
self.relu = nn.ReLU(inplace=True)
self.downsample = downsample
self.stride = stride
def forward(self, x):
residual = x#残差
out = self.conv1(x)
out = self.bn1(out)
out = self.relu(out)
out = self.conv2(out)
out = self.bn2(out)
out = self.relu(out)
out = self.conv3(out)
out = self.bn3(out)
if self.downsample is not None:
residual = self.downsample(x)
out += residual
out = self.relu(out)
return out
class ResNet(nn.Module
FasterR-CNN深度学习架构详解与PyTorch实现

本文介绍了FasterR-CNN框架,包括其结构、ResNet50主干特征提取、RPN建议框网络构建、Anchors先验框以及模型在VOC2007数据集上的训练过程。详细讲解了ResNet50模块和预训练权重加载,以及如何使用PyTorch进行实践。
最低0.47元/天 解锁文章
4404

被折叠的 条评论
为什么被折叠?



