#包结构更改
本节包含您对 MMSeg 0.x 和 1.x 之间的变化感到好奇的内容。
MMSegmentation 0.x |
MMSegmentation 1.x |
mmseg.api |
mmseg.api |
- mmseg.core |
+ mmseg.engine |
mmseg.datasets |
mmseg.datasets |
mmseg.models |
mmseg.models |
- mmseg.ops |
+ mmseg.structure |
mmseg.utils |
mmseg.utils |
|
+ mmseg.evaluation |
|
+ mmseg.registry |
## 已删除的包
### `mmseg.core`
在 OpenMMLab 2.0 中,`core` 包已被删除。`core` 的 `hooks` 和 `optimizers` 被移动到了 `mmseg.engine` 中,而 `core` 中的 `evaluation` 目前是 mmseg.evaluation。
## `mmseg.ops`
`ops` 包包含 `encoding` 和 `wrappers`,它们被移到了 `mmseg.models.utils` 中。
## 增加的包
### `mmseg.engine`
OpenMMLab 2.0 增加了一个新的深度学习训练基础库 MMEngine。它是所有 OpenMMLab 代码库的训练引擎。
mmseg 的 `engine` 包是一些用于语义分割任务的定制模块,如 `SegVisualizationHook` 用于可视化分割掩膜。
### `mmseg.structure`
在 OpenMMLab 2.0 中,我们为计算机视觉任务设计了数据结构,在 mmseg 中,我们在 `structure` 包中实现了 `SegDataSample`。
### `mmseg.evaluation`
我们将所有评估指标都移动到了 `mmseg.evaluation` 中。
### `mmseg.registry`
我们将 MMSegmentation 中所有类型模块的注册实现移动到 `mmseg.registry` 中。
## 修改的包
### `mmseg.apis`
OpenMMLab 2.0 尝试支持计算机视觉的多任务统一接口,并发布了更强的 [`Runner`](https://github.com/open-mmlab/mmengine/blob/main/docs/zh_cn/design/runner.md),因此 MMSeg 1.x 删除了 `train.py` 和 `test.py` 中的模块,并将 `init_segmentor` 重命名为 `init_model`,将 `inference_segmentor` 重命名为 `inference_model`。
以下是 `mmseg.apis` 的更改:
| 函数 | 变化 |
| :-------------------: | :--------------------------------------------- |
| `init_segmentor` | 重命名为 `init_model` |
| `inference_segmentor` | 重命名为 `inference_model` |
| `show_result_pyplot` | 基于 `SegLocalVisualizer` 实现 |
| `train_model` | 删除,使用 `runner.train` 训练。 |
| `multi_gpu_test` | 删除,使用 `runner.test` 测试。 |
| `single_gpu_test` | 删除,使用 `runner.test` 测试。 |
| `set_random_seed` | 删除,使用 `mmengine.runner.set_random_seed`。 |
| `init_random_seed` | 删除,使用 `mmengine.dist.sync_random_seed`。 |
### `mmseg.datasets`
OpenMMLab 2.0 将 `BaseDataset` 定义为数据集的函数和接口,MMSegmentation 1.x 也遵循此协议,并定义了从 `BaseDataset` 继承的 `BaseSegDataset`。MMCV 2.x 收集多种任务的通用数据转换,例如分类、检测、分割,因此 MMSegmentation 1.x 使用这些数据转换并将其从 mmseg.dataset 中删除。
| 包/模块 | 更改 |
| :-------------------: | :----------------------------------------------------------------------------------- |
| `mmseg.pipelines` | 移动到 `mmcv.transforms` 中 |
| `mmseg.sampler` | 移动到 `mmengine.dataset.sampler` 中 |
| `CustomDataset` | 重命名为 `BaseSegDataset` 并从 MMEngine 中的 `BaseDataset` 继承 |
| `DefaultFormatBundle` | 替换为 `PackSegInputs` |
| `LoadImageFromFile` | 移动到 `mmcv.transforms.LoadImageFromFile` 中 |
| `LoadAnnotations` | 移动到 `mmcv.transforms.LoadAnnotations` 中 |
| `Resize` | 移动到 `mmcv.transforms` 中并拆分为 `Resize`,`RandomResize` 和 `RandomChoiceResize` |
| `RandomFlip` | 移动到 `mmcv.transforms.RandomFlip` 中 |
| `Pad` | 移动到 `mmcv.transforms.Pad` 中 |
| `Normalize` | 移动到 `mmcv.transforms.Normalize` 中 |
| `Compose` | 移动到 `mmcv.transforms.Compose` 中 |
| `ImageToTensor` | 移动到 `mmcv.transforms.ImageToTensor` 中 |
### `mmseg.models`
`models` 没有太大变化,只是从以前的 `mmseg.ops` 中添加了 `encoding` 和 `wrappers`