mmcv基本用法
目标检测的Swin Transformer是基于mmdetection的,而mmdetection是一个基于 PyTorch 的目标检测开源工具箱,它是 OpenMMLab 项目的一部分。
OpenMMLab 的其他项目
- MMCV: OpenMMLab 计算机视觉基础库
- MMClassification: OpenMMLab 图像分类工具箱
- MMDetection: OpenMMLab 目标检测工具箱
- MMDetection3D: OpenMMLab 新一代通用 3D 目标检测平台
- MMSegmentation: OpenMMLab 语义分割工具箱
- MMAction2: OpenMMLab 新一代视频理解工具箱
- MMTracking: OpenMMLab 一体化视频目标感知平台
- MMPose: OpenMMLab 姿态估计工具箱
- MMEditing: OpenMMLab 图像视频编辑工具箱
- MMOCR: OpenMMLab 全流程文字检测识别理解工具包
- MMGeneration: OpenMMLab 图片视频生成模型工具箱
MMCV是基础库,涉及了诸多基础操作。在mmdection和Swin TransformerOD 中都会用到,因此记录一下MMCV的基本用法。本文只列出了部分功能,全部功能的说明可以从下面的网址查到
Video - mmcv 1.3.3 documentation
图像处理
MMCV对图像的操作包括:图像的读取、写入、显示、色彩空间转换、更改尺寸、旋转、翻转、剪切、填充。MMCV和opencv的指令非常相似,部分指令如下
|
|
视频处理
|
|
文件IO
MMCV原生支持json、yaml和pickle三种格式的文件加载。也可以自己拓展加载格式。
|
|
可以将文件中的数据读成列表或字典,假设a.txt中的数据是
|
|
假设a.txt中的数据是
|
|
CNN层构建
在进行实验时,可能需要尝试使用同一类型的不同层,但又不想总是修改代码。MMCV提供了层构建方法,该方法可以根据字典来构建层,从而可以用configs加载,也可以通过命令行参数指定这些层。
例如:
|
|
build_conv_layer
: 支持类型有:Conv1d, Conv2d, Conv3d, Conv (alias for Conv2d).build_norm_layer
:支持类型有: BN1d, BN2d, BN3d, BN (alias for BN2d), SyncBN, GN, LN, IN1d, IN2d, IN3d, IN (alias for IN2d).build_activation_layer
: 支持类型有: ReLU, LeakyReLU, PReLU, RReLU, ReLU6, ELU, Sigmoid, Tanh, GELU.build_upsample_layer
: 支持类型有: nearest, bilinear, deconv, pixel_shuffle.build_padding_layer
: 支持类型有: zero, reflect, replicate.
MMCV还支持使用自定义层和操作来拓展层构建方法。
首先编写并注册自己的模块。
|
|
然后将自己的模块MyUpsample导入到某个地方(例如__init__.py中)再使用。
|
|
MMCV还提供常见的模块捆绑包,以方便网络搭建。 ConvModule是卷积层、标准化层、和激活层的捆绑包
|
|
MMCV还封装了一些权重初始化方法,例如
|
|
类似的还包括
constant_init
xavier_init
normal_init
uniform_init
kaiming_init
caffe2_xavier_init
bias_init_with_prob
除了Torchvision预训练模型外,MMCV还提供以下CNN的预训练模型,
- VGG Caffe
- ResNet Caffe
- ResNeXt
- ResNet with Group Normalization
- ResNet with Group Normalization and Weight Standardization
- HRNetV2
- Res2Net
- RegNet
MMCV中的模型路径放在JSON文件中,open-mmlab.json默认在~/.cache/mmcv下,或者如果有MMCV_HOME环境变量的话,在MMCV_HOME下。MMCV_HOME的优先级更高。