目录
前言
这个是按照B站up主的教程学习这方面知识的时候自己做的的笔记和总结,可能有点乱,主要是按照我自己的记录习惯
参考内容来自:
- up主的b站链接:霹雳吧啦Wz视频专辑-霹雳吧啦Wz视频合集-哔哩哔哩视频
- up主将代码和ppt都放在了github:https://github.com/WZMIAOMIAO
- up主的csdn博客:深度学习在图像处理中的应用(tensorflow2.4以及pytorch1.10实现)_太阳花的小绿豆的博客-CSDN博客_深度学习图像处理需要哪些软件
GoogLeNet网络详解
Inception结构
辅助分类器
使用pytorch搭建 GoogLeNet
项目目录如下:
|-GoogLeNet
|-class_indices.json
|-model.py
|-predict.py
|-train.py
model.py
import torch.nn as nn
import torch
import torch.nn.functional as F
# 定义4:GoogLeNet网络
class GoogLeNet(nn.Module): # 继承父类nn.Module
def __init__(self, num_classes=1000, aux_logits=True, init_weights=False): # aux_logits=True是否使用辅助分类器
super(GoogLeNet, self).__init__()
self.aux_logits = aux_logits # 将是否使用辅助分类器的布尔变量传入类当中
self.conv1 = BasicConv2d(3, 64, kernel_size=7, stride=2, padding=3) # 卷积核个数64
# 这里为了将特征矩阵缩减为原来的一半,所以padding是3
# (224-7+2*3)/2 + 1 = 112.5在pytorch中默认向下取整,就是112
self.maxpool1 = nn.MaxPool2d(3, stride=2, ceil_mode=True) # ceil_mode为True,向上取整
self.conv2 = BasicConv2d(64, 64, kernel_size=1)
self.conv3 = BasicConv2d(64, 192, kernel_size=3, padding=1)
self.maxpool2 = nn.MaxPool2d(3, stride=2, ceil_mode=True)
self.inception3a = Inception(192, 64, 96, 128, 16, 32, 32)
self.inception3b = Inception(256, 128, 128, 192, 32, 96, 64)
self.maxpool3 = nn.MaxPool2d(3, stride=2, ceil_mode=True)
self.inception4a = Inception(480, 192, 96, 208, 16, 48, 64)
self.inception4b = Inception(512, 160, 112, 224, 24, 64, 64)
self.inception4c = Inception(512, 128, 128, 256, 24, 64, 64)
self.inception4d = Inception(512, 112, 144, 288, 32, 64, 64)
self.inception4e = Inception(528, 256, 160, 320, 32, 128, 128)
self.maxpool4 = nn.MaxPool2d(3, stride=2, ceil_mode=True)
self.inception5a = Inception(832, 256, 160, 320, 32, 128, 128)
self.inception5b = Inception(83