Samar-blog

导航

P5_准备MMSeg语义分割config配置文件

5.1【E】准备config配置文件-数据集和pipeline

1.数据集配置文件
点击查看代码
import os
import requests

# 定义文件路径
file_path = os.path.join("mmseg", "datasets", "ZihaoDataset.py")

# 1. 删除原有文件(如果存在)
if os.path.exists(file_path):
    try:
        os.remove(file_path)
        print(f"已删除原有文件: {file_path}")
    except Exception as e:
        print(f"删除文件失败: {e}")

# 2. 下载新文件并保存
url = "https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20230130-mmseg/watermelon/configs/ZihaoDataset.py"

try:
    # 创建目录(如果不存在)
    os.makedirs(os.path.dirname(file_path), exist_ok=True)
    
    # 发送请求下载文件
    response = requests.get(url, timeout=10)
    response.raise_for_status()  # 检查请求是否成功
    
    # 保存文件
    with open(file_path, "wb") as f:
        f.write(response.content)
    
    print(f"文件下载成功,已保存至: {file_path}")
except Exception as e:
    print(f"文件下载失败: {e}")
2.注册数据集类
点击查看代码
import os
import requests

# 定义 __init__.py 文件路径
init_file_path = os.path.join("mmseg", "datasets", "__init__.py")

# 1. 删除原有文件(如果存在)
if os.path.exists(init_file_path):
    try:
        os.remove(init_file_path)
        print(f"已删除原有文件: {init_file_path}")
    except Exception as e:
        print(f"删除文件失败: {e}")

# 2. 下载新的 __init__.py 并保存
download_url = "https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20230130-mmseg/watermelon/configs/__init__.py"

try:
    # 确保目录存在(若不存在则创建)
    os.makedirs(os.path.dirname(init_file_path), exist_ok=True)
    
    # 发送请求下载文件
    response = requests.get(download_url, timeout=10)
    response.raise_for_status()  # 若请求失败(如404、500)会抛出异常
    
    # 写入文件
    with open(init_file_path, "wb") as f:
        f.write(response.content)
    
    print(f"__init__.py 下载成功,已保存至: {init_file_path}")
except Exception as e:
    print(f"__init__.py 下载失败: {e}")
3.pipeline配置文件
点击查看代码
import os
import requests

# 定义目标文件路径
file_path = os.path.join("configs", "_base_", "datasets", "ZihaoDataset_pipeline.py")

# 1. 删除原有文件
if os.path.exists(file_path):
    try:
        os.remove(file_path)
        print(f"已删除原有文件: {file_path}")
    except Exception as e:
        print(f"删除失败: {e}")

# 2. 下载新文件并保存
url = "https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20230130-mmseg/watermelon/configs/ZihaoDataset_pipeline.py"
try:
    # 确保目标目录存在
    os.makedirs(os.path.dirname(file_path), exist_ok=True)
    # 下载并写入文件
    response = requests.get(url, timeout=10)
    response.raise_for_status()
    with open(file_path, "wb") as f:
        f.write(response.content)
    print(f"文件下载成功,保存至: {file_path}")
except Exception as e:
    print(f"下载失败: {e}")

【标注文件拓展名为png,整数掩码格式须存为png,为无损】

5.2【F1】语义分割算法-UNet

进入MMSegmentation主目录:r'D:\DeepLearning\Learn_SAM\mmsegmentation'

1.载入模型config配置文件
点击查看代码
from mmengine import Config
#内置的config文件:
cfg = Config.fromfile('./configs/unet/unet-s5-d16_fcn_4xb4-160k_cityscapes-512x1024.py') 
#我们自己刚刚定义好的pipeline文件:
dataset_cfg = Config.fromfile('./configs/_base_/datasets/ZihaoDataset_pipeline.py')      
#将以上两个文件融合,相当于两个字典,将两个字典的键和值融合
cfg.merge_from_dict(dataset_cfg)
2.修改config配置文件

(1)根据我们自己的数据集修改类别,西瓜样例类别数为6个

(2)套用jupyter里面模板,作用是将其他数据集的内置的config配置文件,以适应和配套我们自己的数据集

3.查看完整config配置文件

涵盖训练过程中所用到的信息如路径、预处理pipeline,评估指标

4.保存最终的config配置文件

.py格式是一个python的字典,以字典的形式存在

5.3语义分割算法-DeepLabV3+

5.4语义分割算法-PSPNet

5.5语义分割算法-KNet

KNet精度比较高

5.6语义分割算法-Segformer

5.7语义分割算法-Mask2Former

依赖目标检测的

5.8语义分割算法-轻量化Fast-SCNN

模型参数量很小,占用cpu也小

5.9总结

如果用的不是up主的西瓜样例数据集,用的是自己的数据集,需要修改的地方如下:

1.修改自己的数据集的配置文件

在D:\DeepLearning\Learn_SAM\mmsegmentation\mmseg\datasets的xxxDataset.py中定义;

在这个.py文件中要定义好自己的类别classes和对应的RGB配色

P5_定义自己的语义分割数据集

2.修改注册数据集类

在mmseg/datasets的——init——.py中加上刚刚定义的ZihaoDataset数据集类

P5_在mmseg_datasets的init文件中加上刚刚定义的ZihaoDataset数据集类

3.修改pipeline配置文件

在D:\DeepLearning\Learn_SAM\mmsegmentation\configs_base_\datasets的xxxDataset_pipeline.py文件中

修改成我自己数据集的类名和路径:

点击查看代码
# 数据集路径
dataset_type = 'ZihaoDataset' # 数据集类名
data_root = 'Watermelon87_Semantic_Seg_Mask/' # 数据集路径(相对于mmsegmentation主目录)

P5_修改pipeline配置文件

4.修改算法

修改自己的类别个数和自己的pipeline路径

P5_修改自己的类别个数和自己的pipeline路径

posted on 2025-12-03 21:39  风居住的街道DYL  阅读(0)  评论(0)    收藏  举报