MMSegmentation跑自己的数据进行二分类

官方文档:https://mmsegmentation.readthedocs.io/
我的数据是RGB影像为.tif,标签影像为单通道(0-255)的.png影像,背景像素值为0,建筑物像素值为255
制作自己的数据集进行二分类步骤如下:
1、在mmsegmentation\mmseg\datasets文件夹下创建mydataset.py
注意:将reduce_zero_label=False,ignore_index随便设置一个数。这两个变量的作用参看源代码mmsegmentation\mmseg\datasets\custom.py。个人理解reduce_zero_label为Ture就是减少0像素在标签中的数量,因为我们的0为背景,所有设置为False,ignore_index应该指的是忽略像素值为ignore_index所表示的类别

# Copyright (c) OpenMMLab. All rights reserved.
import os.path as osp
from .builder import DATASETS
from .custom import CustomDataset

@DATASETS.register_module()
class MydataDataset(CustomDataset):
    CLASSES = ('background','building')
    PALETTE = [[0,0,0],[255,255,255]]

    def __init__(self, **kwargs):
        super(MydataDataset, self).__init__(
            img_suffix='.tif',
            seg_map_suffix='.png',
            reduce_zero_label=False,
            ignore_index=10,
            classes = ('background','building'),
            palette = [[0,0,0],[255,255,255]],
            **kwargs)
        assert osp.exists(self.img_dir)

mmsegmentation\mmseg\core\evaluation\metrics.py中intersect_and_union函数————reduce_zero_label对于评价指标的影响

    if reduce_zero_label:
        label[label == 0] = 255
        label = label - 1
        label[label == 254] = 255
    mask = (label != ignore_index)
    pred_label = pred_label[mask]
    label = label[mask]

2、在mmsegmentation\mmseg\core\evaluation\class_names.py文件后面添加代码


def mydata_classes():
    """shengteng class names for external use."""
    return [
         'background','building'
    ]


def mydata_palette():
    return [[0,0,0][255,255,255]]

3、在mmseg/datasets/init.py文件中添加自己的数据类别
注意:from .mydataset import MydataDataset一定要添加

from .mydataset import MydataDataset
__all__ = [
    'CustomDataset', 'build_dataloader', 'ConcatDataset', 'RepeatDataset',
    'DATASETS', 'build_dataset', 'PIPELINES', 'CityscapesDataset',
    'PascalVOCDataset', 'ADE20KDataset', 'PascalContextDataset',
    'PascalContextDataset59', 'ChaseDB1Dataset', 'DRIVEDataset', 'HRFDataset',
    'STAREDataset', 'DarkZurichDataset', 'NightDrivingDataset',
    'COCOStuffDataset', 'LoveDADataset', 'MultiImageMixDataset',
    'iSAIDDataset', 'ISPRSDataset', 'PotsdamDataset', 'MydataDataset',
]

4、在mmsegmentation\configs_base_\datasets中创建mydata.py,设置路径、尺寸等相关参数


                
### 使用 mmsegmentation 框架训练自定义数据集 #### 安装 MMSegmentation 和依赖项 为了使用 mmsegmentation 进行模型训练,首先需要安装该库及其必要的依赖项。可以通过以下命令完成环境配置: ```bash pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html git clone https://github.com/open-mmlab/mmsegmentation.git cd mmsegmentation pip install -e . ``` 上述命令会下载并安装最新版本的 mmsegmentation 及其所需组件[^1]。 #### 准备数据集 对于自定义的数据集准备,建议将其转换成 VOC 或 COCO 格式以便于处理。创建一个新的 `data` 文件夹用于存储图像和标注文件。具体结构应如下所示: ``` my_dataset/ ├── images/ │ ├── train/ │ └── val/ └── annotations/ ├── train/ └── val/ ``` 注意,所有的输入图片应当保存为 `.jpg` 格式的文件,而对应的分割掩码则需采用无损压缩的 `.png` 图像格式来表示类别标签[^3]。 #### 配置文件调整 接下来修改配置文件以适应新的数据源路径和其他参数设置。通常情况下,这涉及到编辑预设好的 Python 脚本中的几个关键部分,比如指定新数据目录的位置以及可能更改默认超参等。可以基于官方提供的模板进行定制化调整。 例如,在 SegFormer 的案例中,可能会有类似的配置片段: ```python dataset_type = 'CustomDataset' data_root = 'path/to/my_dataset/' img_norm_cfg = dict( mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) train_pipeline = [ ... ] test_pipeline = [ ... ] data = dict( samples_per_gpu=2, workers_per_gpu=2, train=dict( type='RepeatDataset', times=40000, dataset=dict( type=dataset_type, data_root=data_root, img_dir='images/train', ann_dir='annotations/train', pipeline=train_pipeline)), val=dict( type=dataset_type, data_root=data_root, img_dir='images/val', ann_dir='annotations/val', pipeline=test_pipeline), test=dict( type=dataset_type, data_root=data_root, img_dir='images/val', ann_dir='annotations/val', pipeline=test_pipeline)) ``` 这段代码展示了如何通过设定变量 `data_root` 来指向本地磁盘上的特定位置,并指定了不同阶段使用的图像子集(如训练集、验证集)。同时也要确保正确设置了图像增强管道 (`pipeline`) 参数以满足实际需求[^2]。 #### 开始训练过程 一切就绪之后就可以启动训练流程了。一般而言,只需执行简单的 shell 命令即可触发整个工作流: ```bash python tools/train.py configs/custom_config.py --work-dir work_dirs/custom_experiment ``` 这里假设已经准备好了一个名为 `custom_config.py` 的个性化配置脚本,并且希望将实验结果存放到 `work_dirs/custom_experiment` 下面。随着迭代次数增加,日志信息会被自动记录下来供后续分析之用。
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值