原理
mobilenet是一种轻量级网络,主要是想用于实时检测,那么那么它的优点就是训练速度快
采用了深度卷积和逐点卷积,还有对通道数和分辨率加以改变,大幅度减少参数量
Depthwise Conv 深度卷积的核心在 逐点卷积
nn.Conv2d的参数groups,等于1就是普通的卷积,当设置为groups = input_channels,就是深度可分离卷积的depthwise conv
代码实现
# mobilenet是一种轻量级网络,主要是想用于实时检测,那么那么它的优点就是训练速度快
# 深度卷积和逐点卷积,还有对通道数和分辨率加以改变,大幅度减少参数量
# Depthwise Conv 深度卷积的核心在 逐点卷积
# nn.Conv2d的参数groups,等于1就是普通的卷积,
# 当设置为groups = input_channels,就是深度可分离卷积的depthwise conv
import torch
import torch.nn as nn
class MobileNetV1(nn.Module):
def __init__(self, num_classes):
super().__init__() # 此部分参数为论文复现重点
self.conv1 = self._conv_st(3,32,2)
self.conv_dw1 = self._conv_dw(32,64,1)
self.conv_dw2 = self._conv_dw(64,128,2)
self.conv_dw3 = self._conv_dw(128,128,1)
self.co