opennmmlab实战营二期-mmpretrain理论课(四)
opennmmlab实战营二期-mmpretrain理论课(四)
今早抽空花点时间学习了mmpretrain理论课视频,mmpretrain也是本次实战营我所感兴趣的一个算法库,因为之前的mmcls被合并到mmpretrain算法库来,所以想对mmpretrain有一个全新的认识。理论课视频地址:点我:视频地址
本次课程主要分为介绍、经典主干网络、子监督学习、多模态算法四部分,具体内容见下:
mmpretrain算法库介绍
算法库与任务组成
-
介绍:mmpretrain算法库是一个全新升级的预训练开源算法框架,旨在提供各种预训练主干网络,并支持了不同的预训练策略。mmpretrain是mmcls和mmselfsup合并而来的,具有丰富的预训练模型。
-
mmpretrain的强大功能:
- 丰富的模型:主干网络(VGG、ResNet、DesnseNet、MobileNet、ShuffleNet、Vit、SwinTransformer...)、自监督学习(MoCo v1/v2/v3、SimCLR、MAE...)、多模态学习(CLIP、BLIP...)
- 丰富的数据集支持:MNIST/CIFAR、ImageNet、COCO、ScienceQA、自定义数据集...
- 代码的易用性:大量预配置文件、模型、推理api、模型训练工具、模型参数计算、cam可解释分析、可视化工具、mmdeploy部署...
- 训练技巧与策略:优化器与学习率策略、数据增强策略
-
mmpretrain支持多种任务:支持API和模型,包含以下任务:图像分类(image cls)、图像描述(image caption)、视觉定位(visual grounding)、视觉问答(visual question answering)、检索,如下图:
-
mmpretrain的环境搭建:
- mmpretrain算法库依托于openmmlab的软件栈,如图:
- 安装步骤:
基础安装:
多模态依赖:conda acreate -n open-mmlab python=3.8 pytorch==1.10.1 torchvision==0.12.2 cudatoolkit=11.3 -c pytorch -y conda activate open-mmlab pip install openmim git clone https://github.com/openmmlab/mmpretrain.git cd mmpretrain mim install -e .
可使用mim配置mmcv、mmengine、mmpretrainmim install -e ".[multimodal]"
-
配置文件
配置文件涉及模型结构(几层、通道数)、数据(数据集划分、路径、批大小、数据增强)、训练优化(学习率、epoch、学习率策略)、运行(gpu)、辅助功能(训练日志、保存checkpoint)
框架概览
-
mmpretrain的代码框架如下:
-
数据流介绍,如图:
训练:数据——>数据读取、增强——>模型输入——>计算loss——>反向传播
预测:数据——>数据读取、增强——>模型输入——>模型输出预测结果 -
配置文件的运作方式,如图:
经典主干网络
- 早期深度学习发现只要加深网络层数,效果会更好,于是就出现了alexnet、vgg、googlenet,但网络层数增加到一定数量后,正确率反倒开始下降(物极必反)。
- 为什么呢???
- 猜想:虽深层网络有潜力达到更高的精度、但常规的优化算法难以找到这个更优的模型。
- 于是便有了残差:让新增加的层拟合浅层网络与深层网络之间的差异。
resnet
-
残差思路便出现了resnet,resnet0在加深网络的基础上,也保证了精度。
-
resnet中有两种残差块:basic block(resnet18、34)、bottleneck block(resnet50、101、152:
-
并介绍了resnet-34网络结构,点我
-
resnet的影响:深度学习邻域影响力最大、使用最广泛的模型结构之一,在其他任务中也会被广泛使用。
vision transformer
- 介绍:
附:Vision Transformer 超详细解读 (原理分析+代码解读) (一) - 注意力机制:
- 介绍:
- 为什么需要注意力机制???
- 因为它会接受一整个sequence,它会考虑整体的,然后得到一个vector,最后输出。
- 注意力机制运作:
- multi-head self-attention(多头自注意力):
- 附:李宏毅-注意力机制
- 介绍:
自监督学习
模型训练依靠的数据,但是有标注的数据少,于是想要依靠数据且不需要依赖人工标注来进行模型的训练,这就是自监督学习,无需标注的数据让神经网路进行学习。
早期基于各种代理任务,如image colorization、sloving jisaw puzzles
19、20年基于对比学习(SimCLR)
之后基于掩码学习(MAE)
SimCLR
MAE
多模态算法
CLIP
CLIP全称:Contrastive Language-Image Pre-training,根据字面意思,就是对比文本-图像预训练模型,只需要提供图像类别的文本描述,就能将图像进行分类。
BLIP
简单说下个人感受,前部分mmpretrain介绍还好,后面介绍一些算法还比较浅层、基本没有深究(可能考虑到大众),但是介绍了各种各样的算法,收获颇多,可以了解到以前没有听过的一些算法,开阔视野也挺好!有点期待接下去mmpretrain的代码课!
主页:https://www.cnblogs.com/xielaoban/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利