代码练习需要使用谷歌的 Colab,它是一个 Jupyter 笔记本环境,已经默认安装好 pytorch,不需要进行任何设置就可以使用,并且完全在云端运行。使用方法可以参考 Rogan 的博客:https://www.cnblogs.com/lfri/p/10471852.html 国内目前无法访问 colab,可以安装 Ghelper: http://googlehelper.net/
1 图像处理基本练习
这部分内容包括:理解图像类型,进行一些基本的图像分割操作。代码在一个 JupyterNotebook 里面,地址为:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/01_Image_Processing.ipynb
2 pytorch 基础练习
基础练习部分包括 pytorch 基础操作,链接:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/02_Pytorch_Basic.ipynb
3 螺旋数据分类
备注:详细说明可参考 https://atcold.github.io/pytorch-Deep-Learning/zh/week02/02-3/ 中英文字幕的视频讲解在B站:https://www.bilibili.com/video/BV1gV411o7AD?p=4
4 回归分析
代码链接:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/04_Regression.ipynb
备注: 详细说明可参考 https://atcold.github.io/pytorch-Deep-Learning/zh/week02/02-3/ 中英文字幕的视频讲解在B站:https://www.bilibili.com/video/BV1gV411o7AD?p=4
5 Pytorch逐行实现ResNet
B站链接:https://www.bilibili.com/video/BV1o7411f7UM
主要内容包括:残差学习的基本原理、恒等映射和Shotcut、使用 pytorch 实现 ResNet152。
6 MNIST 数据集分类
构建简单的CNN对 mnist 数据集进行分类。同时,还会在实验中学习池化与卷积操作的基本作用。
链接:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/05_01_ConvNet.ipynb
要求: 把代码输入 colab,在线运行观察效果
7 CIFAR10 数据集分类
使用 CNN 对 CIFAR10 数据集进行分类
链接:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/05_02_CNN_CIFAR10.ipynb
要求: 把代码输入 colab,在线运行观察效果
8 使用 VGG16 对 CIFAR10 分类
链接:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/05_03_VGG_CIFAR10.ipynb
要求: 把代码输入 colab,在线运行观察效果
9 使用VGG模型迁移学习进行猫狗大战图像分类比赛
主要内容包括: 迁移学习、图像分类、VGG模型
notebook链接:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/05_04_Transfer_VGG_for_dogs_vs_cats.ipynb
这部分为 Kaggle 于 2013 年举办的猫狗大战竞赛,使用在 ImageNet 上预训练的 VGG 网络进行测试。因为原网络的分类结果是1000类,所以这里进行迁移学习,对原网络进行 fine-tune (即固定前面若干层,作为特征提取器,只重新训练最后两层)。
仔细研读AI研习社猫狗大战赛题的要求:https://god.yanxishe.com/41 (目前比赛已经结束,但仍可做为练习赛每天提交测试结果)
下载比赛的测试集(包含2000张图片),利用fine-tune的VGG模型进行测试,按照比赛规定的格式输出,上传结果评测(练习赛每天仅可评测5次)。
10 代码实现MobileNet V1 分类网络
简要阅读谷歌2017年的论文《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》,同时,阅读知乎文章https://zhuanlan.zhihu.com/p/80041030,体会 Depthwise 卷积 和 Pointwise 卷积。同时,阅读代码:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/MobileNetV1_CIFAR10.ipynb
11 代码实现MobileNet V2 分类网络
简要阅读谷歌在CVPR2018上的论文《MobileNetV2: Inverted Residuals and Linear Bottlenecks》,体会第二个版本的改进。阅读代码:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/MobileNetV2_CIFAR10.ipynb
12 代码实现 HybridSN 高光谱分类网络
阅读论文《HybridSN: Exploring 3-D–2-DCNN Feature Hierarchy for Hyperspectral Image Classification》,思考3D卷积和2D卷积的区别。阅读代码:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/HybridSN_GRSL2020.ipynb
13 在HybridSN中添加SENet注意力模块
阅读论文CVPR2018的论文《Squeeze-and-Excitation Networks》,国内自动驾驶创业公司 Momenta 在 ImageNet 2017 挑战赛中夺冠,网络架构为 SENet,论文作者为 Momenta 高级研发工程师胡杰。该网络通过学习的方式获取每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征。
代码实现:把SENet模块添加到 HybridSN 后面两个2D卷积中,观察分类的性能是否会继续提升。代码链接:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/HybridSN_GRSL2020%EF%BC%88add%20SENet%EF%BC%89.py
14 代码实现生成式对抗网络
代码:https://github.com/LilWingXYZ/Deep-Learning-Pytorch-Code-Practice/blob/main/08_GAN_double_moon.ipynb