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

我是按照【语义分割与MMSegmentation】 https://www.bilibili.com/video/BV1qN411z7hz/?share_source=copy_web&vd_source=e6512529dd3ff573c1205bd41d938fec里面的步骤来跑的。

我的标签只有两个类别

0:background

255: liver

注意以下几点:

1.在/root/autodl-tmp/mmsegmentation/mmseg/datasets/transforms/loading.py中添加第118行代码,经过调试发现读取label数据的时候,对于单通道数据,像素值要和类别的id
相等。比如我的数’background’,‘building’在单通道的label数据中要像素值分别要为‘background’=0,‘building’= 1,因为我的数据是background’=0,‘building’= 255,所以我修改了源代码将标签中为255的像素值改成了1。

2f5f1c4459994227abac0151f02d88dd.png

2.遇到的评价指标为0或者100%的问题 

修改LOSS函数应该可以解决此问题,修改/root/autodl-tmp/mmsegmentation/configs/_base_/models/upernet_swin.py中第46,59行代码,将函数改成’DiceLoss‘函数。

### 使用 MMClassification 和 SegFormer 对自定义数据集进行训练 #### 准备工作环境 为了确保能够顺利使用 MMSegmentation 框架并集成 SegFormer 模型,建议先安装最新版本的 MMSegmentation 库[^1]。 ```bash pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10/index.html pip install mmsegmentation ``` #### 数据集准备 对于自定义数据集的支持,MMSegmentation 提供了详细的指南来帮助用户处理不同格式的数据集。通常情况下,需要将图像文件和对应的标签存储在一个特定结构下的目录中,并创建相应的元数据文件列表[^4]。 假设有一个名为 `my_dataset` 的新数据集,则应按照如下方式组织: ``` my_dataset/ ├── img_dir │ ├── train │ └── val └── ann_dir ├── train └── val ``` 其中 `img_dir` 存放图片而 `ann_dir` 放置标注信息(如 PNG 文件)。接着编写 Python 脚本生成训练集与验证集路径列表。 #### 修改配置文件 基于现有的 UperNet Swin Transformer 配置模板 (`upernet_swin.py`) 创建一个新的配置文件用于指定 SegFormer 架构以及调整超参数设置。此过程涉及更改 backbone 类型为 SegFormer 并适配输入尺寸等细节。 ```python _base_ = [ '../_base_/models/segformer_mit-b0.py', '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py' ] model = dict( pretrained='pretrained_weights_path_here', decode_head=dict(num_classes=NUM_CLASSES)) # NUM_CLASSES 是指目标类别数量 ``` 注意替换 `'pretrained_weights_path_here'` 为你本地预训练权重的位置,并根据实际情况修改分类数目 `num_classes`。 #### 训练模型 完成上述准备工作之后就可以启动训练流程了。通过命令行工具可以直接调用训练脚本来执行整个过程。 ```bash python tools/train.py configs/my_custom_config.py ``` 这里 `configs/my_custom_config.py` 即之前编辑好的配置文件路径。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值