大家还记得这张图吗?

深度系统曾介绍了 52 个目标检测模型,回顾从 2013 年到 2020 年的发展历程,从早期的 R-CNN 和 OVeRFeat,到后来的 SSD、YOLO v3,再到去年的 M2Det,新模型层出不穷,性能不断提升!
前文聚焦于源码和论文,本文则将探讨各种卷积神经网络模型在 PyTorch 中的实现,内容十分实用!
这项资源已在 GitHub 上开源,链接如下:
接下来,我们总结一下该系列卷积神经网络的实现,涵盖了 9 大主题,目录如下:
1. 典型网络
2. 轻量级网络
3. 目标检测网络
4. 语义分割网络
5. 实例分割网络
6. 人脸检测和识别网络
7. 人体姿态识别网络
8. 注意力机制网络
9. 人像分割网络
接下来逐一详细介绍:
1. 典型网络(Classical network)
典型的卷积神经网络包括:AlexNet、VGG、ResNet、InceptionV1、InceptionV2、InceptionV3、InceptionV4、Inception-ResNet。

以 AlexNet 为例,它是 2012 年 ImageNet 竞赛的冠军,由 Hinton 和他的学生 Alex Krizhevsky 设计。AlexNet 引入了多个新技术,首次在 CNN 中成功应用了 ReLU、Dropout 和 LRN 等技巧。此外,AlexNet 还利用 GPU 加速计算。

AlexNet 网络结构在 PyTorch 中的实现如下:
2. 轻量级网络(Lightweight)
轻量级网络涵盖:GhostNet、MobileNets、MobileNetV2、MobileNetV3、ShuffleNet、ShuffleNet V2、SqueezeNet、Xception、MixNet。

以 GhostNet 为例,它在保持相同精度的同时,速度和计算量均优于之前的 SOTA 算法。GhostNet 的核心是 Ghost 模块,与传统卷积神经网络相比,参数总数和计算复杂度得到显著降低,同时具有即插即用的特性。

GhostNet 网络结构在 PyTorch 中的实现如下:
3. 目标检测网络(Object Detection)
目标检测网络包括:SSD、YOLO、YOLOv2、YOLOv3、FCOS、FPN、RetinaNet、Objects as Points、FSAF、CenterNet。



以 YOLO 系列为例,YOLO(You Only Look Once)是一种基于深度神经网络的对象识别与定位算法,其最大特点是运行速度极快,适用于实时系统。目前,YOLOv3 的应用较为广泛。

YOLOv3 网络结构在 PyTorch 中的实现如下:
4. 语义分割网络(Semantic Segmentation)
语义分割网络包括:FCN、Fast-SCNN、LEDNet、LRNNet、FisheyeMODNet。

以 FCN 为例,FCN 是 2014 年语义分割模型的先驱,主要贡献在于推动了端对端卷积神经网络在语义分割任务中的应用,并使用反卷积进行上采样。FCN 模型非常简单,完全由卷积层构成,因此被称为全卷积网络,且可以接收任意大小的输入。

FCN 网络结构在 PyTorch 中的实现如下:
5. 实例分割网络(Instance Segmentation)
实例分割网络包括:PolarMask。
6. 人脸检测和识别网络(Face Detection and Recognition)
人脸检测和识别网络包括:FACEBoxes、LFFD、VaRGFACENet。
7. 人体姿态识别网络(Human Pose Estimation)
人体姿态识别网络包括:Stacked Hourglass、Simple Baselines、LPN。
8. 注意力机制网络(Attention Mechanism)
注意力机制网络包括:SE Net、scSE、NL Net、GCNet、CBAM。
9. 人像分割网络(Portrait Segmentation)
人像分割网络包括:SINet。
综上所述,该 GitHub 开源项目展示了近年来主流的 9 大类卷积神经网络,涵盖了数十种具体的网络结构,并提供了每个结构的 PyTorch 实现方式,十分出色。
