一、MMClassification介绍
![](https://i-blog.csdnimg.cn/blog_migrate/77db4dcc43abc688784112ae42494a24.png)
MMClassification是由openmmlab基于pytorch开发的可用于分类任务的神经网络框架,可以通过修改配置文件来快速实现模型预测、自定义数据集、设计数据处理流程、自定义优化策略和模型参数等功能。其主要框架如上图所示。
1.openmmlab环境搭建基础——mim
![](https://i-blog.csdnimg.cn/blog_migrate/f0424c0231f053d27ff0d9343aa73ec5.png)
openmmlab开发了类似pip的工具mim,提供了统一的命令行接口。
![](https://i-blog.csdnimg.cn/blog_migrate/da3600cdca7e7fa2a66606d6ae874733.png)
具体使用说明,可以参见:https://github.com/open-mmlab/mim
2.openmmlab项目中的重要概念——配置文件
在openmmlab项目中,所有的项目都涵盖在一个配置文件中,配置文件定义了完整的训练过程,并且可以在运行时将配置文件里的参数自动转换成pytorch指令。
具体包括内容如下:
![](https://i-blog.csdnimg.cn/blog_migrate/fece33837d36c5314baf4d665505c1ce.png)
运作方式如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/e7af5ca8b6a76ff961d8ca6e9d009156.png)
二、配置文件修改举例
- 网络模型结构
![](https://i-blog.csdnimg.cn/blog_migrate/695db9e10dbf5b8d0c7031d8772e022d.png)
搭建如图所示的分类网络,通过ResNet50网络生成特征图,在对其进行全局平均池化降维,将降维后的特征向量输入到全连接层,再引入softmax激活函数进行压缩,最终输出分类概率。
- 分类模型构建
![](https://i-blog.csdnimg.cn/blog_migrate/736f61abba32dbf5948b9e685f67a649.png)
- 数据集构建
在pipeline部分可以加入图像预处理部分内容,对其进行初步处理。例如旋转、尺寸变换、归一化等。
![](https://i-blog.csdnimg.cn/blog_migrate/d609ee9894912fe29daff7795bf770c2.png)
- 定义数据加载流水线
在pipeline部分可以对训练集和测试集分别加入图像预处理部分内容,对其进行初步处理。例如旋转、尺寸变换、归一化等。
![](https://i-blog.csdnimg.cn/blog_migrate/aec49c8bac897c31526d6942435713ee.png)
- 配置学习策略
此处需注意,在多卡GPU上进行训练时,应对学习率lr和batch size同步进行放缩。
![](https://i-blog.csdnimg.cn/blog_migrate/ae0305e434fc896b5e191c0de15e0473.png)
- 更多的预训练模型库
可参见官方文档:https://mmclassification.readthedocs.io/en/latest/modelzoo_statistics.html
会更新较新的分类模型、多个方向均有实现。
通过修改配置文件的方式,可以快速对模型性能进行评估和使用模型在数据集上进行预测。