代码讲解系列-CV(二)——卷积神经网络
文章目录
- 一、系列大纲
- 二、卷积神经网络(图像分类为例)
- 2.1 pytorch简介
- 训练框架
- 张量
- 自动微分
- 动态计算图
- 更深入学习
- 2.2 数据输入和增强
- Dataset—— torch.utils.data.Dataset
- DataLoader——torch.utils.data.Dataloader
- 数据增强
- 2.3 CNN设计与训练
- nn.Module
- 卷积层
- 池化层和归一化层
- 模块
- 训练
- 2.4 指标评估和可视化
- 指标评估
- Tensorboard
- Timm库
一、系列大纲
第1讲CV基础框架
·环境配置
anaconda,cuda
IDE:vscode,pycharm
·linux常用命令,Git管理
·Coding流程与常用工具
第2讲卷积神经网络
pytorch入门
·数据输入和数据增强
CNN网络设计与模型训练
·指标评估和可视化
Timm库的使用
第3讲Transformer系列
ViT结构解析
使用ViT进行图像分类
·注意力的可视化
第4讲目标检测初探
·标注检测数据
·数据解析与输入
YOLOV8的使用
·指标评估
第5讲语义分割基础
·数据的标注与解析
·U-Net网络设计
网络输出与指标
第6讲视觉生成模型
·生成原理简介
·Stable Diffusion代码框架
·AP-adapter介绍
第7讲前沿论文复现
Readme与环境配置
模型的增删改查
代码Debug方法
第8讲模型的修改与设计
自定义输入数据
为模型添加Refine模块
为模型添加注意力
二、卷积神经网络(图像分类为例)
2.1 pytorch简介
训练框架
张量
对运算符进行重载,主要是形状变换
cat就是结合,split就是拆分
自动微分
动态计算图
更深入学习
熟悉API:
- 数据输入(Dataset和Dataloader)
- 模型搭建和训练(nn.Module)
- 损失函数和反向传播
- 模型保存
进阶功能:
- 并行训练,混合精度训练
- 冻结参数,复杂训练模式
- 自定义前向和反向算子
- 梯度裁剪
新特性:
Torch.Compile()
FlashAttention
https://space.bilibili.com/478674499
2.2 数据输入和增强
Dataset—— torch.utils.data.Dataset
init就是把所有的数据都加载进来
getitem就是逐个读出
DataLoader——torch.utils.data.Dataloader
数据增强
2.3 CNN设计与训练
nn.Module
init把组件和模块定义好
forward就是调用模型的时候使用的
卷积层
2维卷积为例
输入和输出通道、尺寸、步长、填充、偏置(如果后面有归一化层,需要打开)、分组卷积。
池化层和归一化层
归一化中(BatchNorm2d用的最多)
模块
了解层之后,组成模块
一个列表一个字典,两个方式。这几个方法之间可以相互嵌套
列表:
字典最灵活,而且可读性很好
训练
优化器:决定优化方向
parameters就是参数的意思
train_loop就是训练循环
优化器清零、loss反向传播、更新参数
2.4 指标评估和可视化
指标评估
每个batch的loss进行相加、再除以长度(data_size)
Tensorboard
嗯,就是显示