mmsegmentation学习笔记
前言
文件总体结构
mmsegmentation
├── LICENSE
├── README.md
├── configs //配置文件,针对每个网络的一写用户参数设置,比如数据集选用,transform操作配置清单,网络结构的配置清单等等。(只是配置清单,没有实现代码)
├── data //数据集
├── demo
├── docker
├── docs
├── mmseg //分割的核心文件,包括数据集class模板,网络的结构的class模板(包括backbone,编码器,解码器),损失函数,训练,测试的api实现等等
├── mmsegmentation.egg-info
├── pytest.ini
├── requirements
├── requirements.txt
├── resources
├── setup.cfg
├── setup.py
├── tests //测试工具,用于单独测试各个模块是否正常工作
├── tools //用户工具箱
configs文件夹
configs
├── _base_ //这里存的是更细节的配置信息:包括数据集配置,模型的参数配置,学习率等等
├── ann //这里存的都是些完整的高定制化配置,用什么数据集,用什么网络,用什么学习率策略,是_base_的组装
├── ccnet
├── danet
├── deeplabv3
├── deeplabv3plus
├── encnet
├── fcn
├── fp16
├── gcnet
├── hrnet
├── nonlocal_net
├── ocrnet
├── psanet
├── pspnet
└── upernet
示例:/media/Program/CV/Project/SKMT/mmsegmentation/configs/pspnet/pspnet_r50-d8_512x512_20k_voc12aug.py
_base_ = [
'../_base_/models/pspnet_r50-d8.py',
'../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py',
'../_base_/schedules/schedule_20k.py'
]
model = dict(
decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21))
其中,重点在于__base__文件夹:
_base_
├── datasets //数据集的配置,包括路径啊,类别啊,预处理的pipeline等等
│ ├── US.py
│ ├── ade20k.py
│ ├── cityscapes.py
│ ├── cityscapes_769x769.py
│ ├── custom_skmt.py
│ ├── pascal_voc12.py
│ └── pascal_voc12_aug.py
├── default_runtime.py
├── file_tree.md
├── models //配置选用编码器,解码器,loss_decode等等
│ ├── ann_r50-d8.py
│ ├──。。。。。 //省略一下
└── schedules
├── schedule_160k.py
├── schedule_20k.py
├── schedule_40k.py
└── schedule_80k.py
mmcv文件夹
mmcv
├── CONTRIBUTING.md
├── Dockerfile
├── Jenkinsfile
├── LICENSE
├── MANIFEST.in
├── README.md
├── build
│ ├── lib.linux-x86_64-3.7
│ └── temp.linux-x86_64-3.7
├── docs
│ ├── Makefile
│ ├── ...
├── examples
│ ├── config_cifar10.py
│ ├── dist_train_cifar10.sh
│ ├── resnet_cifar.py
│ └── train_cifar10.py
├── mmcv
│ ├── __init__.py
│ ├── __pycache__
│ ├── _ext.cpython-37m-x86_64-linux-gnu.so
│ ├── _flow_warp_ext.cpython-37m-x86_64-linux-gnu.so
│ ├── arraymisc
│ ├── cnn
│ ├── fileio
│ ├── image
│ ├── model_zoo
│ ├── onnx
│ ├── ops
│ ├── parallel
│ ├── runner
│ ├── utils
│ ├── version.py
│ ├── video
│ └── visualization
├── mmcv_full.egg-info
├── requirements.txt
├── setup.cfg
├── setup.py
└── tests
├── data
├── test_arraymisc.py
├── test_cnn
├── test_config.py
├── test_fileclient.py
├── test_fileio.py
├── test_fp16.py
├── test_image
├── test_load_model_zoo.py
├── test_logging.py
├── test_misc.py
├── test_ops
├── test_optimizer.py
├── test_parallel.py
├── test_path.py
├── test_progressbar.py
├── test_registry.py
├── test_runner
├── test_timer.py
├── test_video
└── test_visualization.py
这是open-mmlab做的一个python库,可以直接进行安装,是用于计算机视觉研究的基础python库,实际上这里的文件都是针对open-mmlab的众多框架的底层框架库,除了一些底层io,cnn,迭代器等等以外,open-mmlab都遵从了相同的程序的pipeline:
==============================================================================
这不得不提到对于一个python的执行顺序:
python在开始执行的时候扫描整个工程,针对每一个类型的模块(这里指的是数据集,backbone,Loss等)都利用Registry对象储存起来,形成一个列表,下面举个例子:
在registry.py里我构建了一个简化版的Registry类,这个类的核心就是register_module方法,这是一个装饰器,用于获取class对象(注意,这里的对象指的是class本身,而不是class的实例,python的所有元素都是对象)。
class Registry:
"""A registry to map strings to classes.
Args:
name (str): Registry name.
"""
def __init__(self, name):
self._name = name
self

深入剖析mmsegmentation项目结构,涵盖配置文件、数据集、模型构建、训练流程等关键环节,揭示其高效图像分割背后的实现机制。
最低0.47元/天 解锁文章
6629

被折叠的 条评论
为什么被折叠?



