前言
看了那么多cv模型,我也想把一些创新点或者需要注意的地方记下来,方便自己温习。
本文会不断更新…
CV领域经典backbone模型小抄(1)
卷积操作后大小计算 卷积与转置卷积——pytorch
模型
timm库也实现了很多模型,可以瞅瞅 rwightman/pytorch-image-models/timm/models
前言,之前其实有LeNet(代码:LeNet_WZMIAOMIAO pytorch)和alexNet(代码:torchvision/models/alexnet.py), 不过他们没有预训练的权重,所以后续大伙其实用得少。因此这里我直接从VGG
VGG
模型结构,看着这个模型我们就能写出代码了。
- 论文: Very Deep Convolutional Networks for Large-Scale Image Recognition
- 代码: WZMIAOMIAO/deep-learning-for-image-processing/VGG
该代码配有视频讲解: 使用pytorch搭建VGG网络_pytorch_霹雳吧啦Wz
博客 VGG网络结构详解与模型的搭建_太阳花的小绿豆
加载时其实可以用torchvision.models定义的类
torchvision官方VGG模型代码: torchvision vgg
from torchvision import models
net = models.vgg16()
googleNet
官方的图, 个人觉得改图不够简化,看起来挺费劲,最好学习一下iFormer的画图方式,整体框架由小模块构成,然后具体再展示小模块的网络层,这样更容易理解(纯属个人喜好)。
- 论文: Going Deeper with Convolution, cvpr2015
- 讲解: GoogLeNet网络详解_霹雳吧啦Wz
- 代码: WZMIAOMIAO/deep-learning-for-image-processing/googlenet
resNet
之前自个写过一篇resnet的博客resNet模型论文与实现, 简单复现了resnet,不得不说,resnet相较于googlenet的结构,真的很简单,性能又有一定提升。
- 论文: Deep Residual Learning for Image Recognition cvpr 2016
- 代码: WZMIAOMIAO/deep-learning-for-image-processing/resnet
代码讲解: 使用pytorch搭建ResNet并基于迁移学习训练_霹雳吧啦Wz
其中代码还附带了 ResNeXt 的代码。( ResNeXt是resnet一个改进版本,网络结构视频讲解可见ResNeXt网络结构), resnext论文 Aggregated Residual Transformations for Deep Neural Networks
shuffleNetV2
shuffleNet视频讲解: ShuffleNet v1 v2理论讲解_霹雳吧啦Wz
- 论文:ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
- 代码: WZMIAOMIAO/shuffleNetV2
denseNet
efficentNet
- 模型结构讲解: EfficientNet网络详解_霹雳吧啦Wz
- 论文: EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
- 代码: WZMIAOMIAO/efficientNet, 代码讲解视频: 使用Pytorch搭建EfficientNet网络_霹雳吧啦Wz
RegNet
cvpr 2020 何恺明组的作品, 但是总感觉这个网络在我看的领域里用得不多(也可能是我这个菜鸡鼠目寸光…)
efficientNetV2
2021 CVPR, 相比efficientNet-v1,引入了FusedMBConv模块。
- 论文: EfficientNetV2: Smaller Models and Faster Training
- 代码: WZMIAOMIAO/efficientNetV2
- 视频讲解: EfficientNetV2网络详解_霹雳吧啦Wz
ViT
ICLR 2021
相信这篇 vision transformer的NLP同学看到源码会觉得有点亲切的感觉,出现了self-attention模块。
- 论文: An image is worth 16x16 words: Transformers for image recognition at scale
- 模型讲解: Vision Transformer(vit)网络详解_霹雳吧啦Wz
- 代码: WZMIAOMIAO/ViT
RepVGG
简单结构,也有好性能
- 论文: RepVGG: Making VGG-style ConvNets Great Again
- 代码: DingXiaoH/RepVGG
- 模型结构讲解 RepVGG网络讲解_霹雳吧啦Wz, 有篇推送也是讲这个 RepVGG简介
Swin Transformer
模型结构:
为了快速实现移动窗口机制, 作者非常巧妙了设计了掩码机制来实现这个操作。
几个可选规格的模型架构:
这个也是基于transformer的backbone模型,亮点在于移动窗口注意力机制以及层次结构。
- 论文: Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
- 代码: WZMIAOMIAO/Swin Transformer, 代码讲解 使用Pytorch搭建Swin-Transformer网络_霹雳吧啦Wz
- 模型讲解: Swin-Transformer网络结构详解_霹雳吧啦Wz, 需要对PatchMerging和WindowAttention弄明白, 看代码才不会犯晕
ConvNeXt
模型block对比图
本文主要是有很多训练策略的提出。
- 论文: A ConvNet for the 2020s
- 代码: WZMIAOMIAO/ConvNeXt
- 模型视频讲解: ConvNeXt网络讲解_霹雳吧啦Wz
这篇公众号文章觉得不错 ConvNeXt:手把手教你改模型
MLP-Mixer
没有CNN的全连接构成的模型。
MLP-Mixer: An all-MLP Architecture for Vision
NIPS2021 MLP-Mixer NIPS2021
代码: https://github.com/lucidrains/mlp-mixer-pytorch