前言
这篇内容主要参考了B站的一个Up主的视频~~
- 视频链接 https://www.bilibili.com/video/BV1i7411T7ZN
- up主的github:https://github.com/WZMIAOMIAO/deep-learning-for-image-processing
VGG
论文地址
VGG 在2014年由牛津大学著名研究组 VGG(Visual Geometry Group) 提出,斩获该年 ImageNet 竞赛中 Localization Task(定位任务)第一名和 Classification Task(分类任务)第二名。
主要创新点:通过堆叠多个小卷积核来代替大卷积核,以此来减少参数。 论文提到,两个3x3的卷积核可以代替一个5x5的卷积核,三个3x3的卷积核可以代替一个7x7的卷积核。
看下图方便理解~
感受野的计算公式为:F(i)=(F(i+1)−1)×Stride +Ksize (VGG网络中Stride默认为1)
- F(i) 为第 i 层感受野
- Stride 为第 ii 层的步距
- Ksize 为 卷积核 或 池化核 尺寸
算一下感受野~
Feature map: F=1
Conv3x3(3): F=(1−1)×1+3=3
Conv3x3(2): F=(3−1)×1+3=5
Conv3x3(1): F=(5−1)×1+3=7
再比较一下参数~
对于一个7x7的卷积核需要:7x7xCxC = 49 C^2
三个3x3的卷积核需要:3x3xCxC + 3x3xCxC + 3x3xCxC = 27 C^2
网络实现
import torch
import torch.nn as nn
import torch.functional as F
#数字代表卷积核个数,M表示池化层,和表格对应
cfgs = {
'vgg11': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'], # 模型A
'vgg13':</