这节课的内容是认识一下MMPreTrain,相比上周的MMPose和MMDetection好像没有那么直观,理论更多。下面简单总结一下有关MMPreTrain吧。
MMPreTrain算法库介绍
MMPreTrain是一个全新升级的预训练开源算法框架,提供各种强大的预训练主干网络,支持了不同的预训练策略。合并了MMClassification和MMSelfSup,有利于用户对不同模型进行筛选。
算法库与任务组成
MMPreTrain依托于Openmmlab软件栈,基于Pytorch有MMEngine,MMCV等,搭建了MMPreTrain算法库。包含了丰富的模型,数据集支持,训练技巧与策略,易用性。
包含丰富的相关任务,例如图像分类,图像描述,视觉问答,视觉定位,检索,并且提供了相应的推理接口方便调用。
深度学习模型训练涉及模型结构、数据、训练优化、运行时辅助功能。
框架概览
代码框架如图所示
数据流
经典主干网络
经过实验会发现模型层数增加到一定程度后,分类正确率不增反降。由此引出了残差学习。
ResNet(残差网络)
残差建模:让新增加的层拟合浅层网络和深层网络之间的差异更容易学习,梯度可以直接回传到浅层网络监督浅层网络的学习,没有引入额外参入,让参数更有效贡献到最终的模型中。
整个残差网络的结构共有5级,每级包含若干残差模块,不同残差模块有个数不同的ResNet残差结构,每级输出分辨率减半,通道倍增,最后通过全局平均池化压缩空间维度,再加一个全连接层产生相关类别的概率。
残差网络应用广泛,不论是各类视觉Transformer或者时ConvNeXt这类卷积神经网络,亦或是GPT及各类大语言模型中都会看到。
Vision Transformer
图片token化,获得Patch向量后加上对应的位置编码信息,再送到多层Transformer Encoder进行计算。
图片之外加入额外的token,用于query其他patch的特征并接一个全连接层,给出最后分类,获得分类概率。
注意力模块复杂度为大尺寸的4次方。
Vision Transformer中最重要的是注意力机制,实现层次化特征,后层特征是空间领域内的前层特征的加权求和,权重越大,对应位置的特征就越重要。
自监督学习
例如给灰度图着色,打乱patch再排序过程等。
SimCLR
一个基本假设:如果模型能很好地提取图片内容的本质,那么无论图片经过什么样的数据增强操作,提取出来的特征都应该极为相似。
MAE
一个基本假设:模型只有理解图片内容,掌握图片的上下文信息,才能恢复出图片中被随机遮挡的内容
多模态算法
CLIP
BLIP
对三种loss进行了结合,以此构建新的Vision Language Pre-training框架,并且可以完成图文检索、图像描述生成,视觉问答等任务。
其他多模态算法:BLIP-2、Flamingo、Kosmos-1、LLaVA。