原理
VGG网络结构:输入为224×224大小的RGB图像,首先经过两个3×3的卷积层 → 一个最大下采样层 → 两个3×3的卷积层 → 一个最大下采样层 → 三个3×3的卷积层 → 一个最大下采样层 → 三个3×3的卷积层 → 一个最大下采样层 → 三个3×3的卷积层 → 一个最大下采样层 → 三个全连接层 → soft-max处理得到概率分布
网络中的亮点:通过堆叠多个3×3的卷积核来替代大尺度卷积核(减少所需参数),可以拥有相同的感受野
论文中提到,可以通过:堆叠两个3×3的卷积核替代5×5的卷积核,堆叠三个3×3的卷积核替代7×7的卷积核
代码实现
# VGGNet Visual Geometry Group
import torch.nn as nn
import torch
# official pretrain weights
model_urls = {
'vgg11': 'https://download.pytorch.org/models/vgg11-bbd30ac9.pth',
'vgg13': 'https://download.pytorch.org/models/vgg13-c768596a.pth',
'vgg16': 'https://download.pytorch.org/models/vgg16-397923af.pth',
'vgg19': 'https://download.pytorch.org/models/vgg19-dcbb9e9d.pth'
}
class VGG(nn.Module):
def __init__(self, features, num_classes=1000, init_w