MMSegmentation笔记04:准备config配置文件、数据集和pipeline

1. 下载相关文件

  1. ZihaoDataset.py

  2. init.py

  3. ZihaoDataset_pipeline.py

下载的时候参考ipynb文件中的路径,保存的时候要与教程的路径要一致。

2. UNet运行

import os
os.chdir('mmsegmentation')

from mmengine import Config
cfg = Config.fromfile('./configs/unet/unet-s5-d16_fcn_4xb4-160k_cityscapes-512x1024.py')
dataset_cfg = Config.fromfile('./configs/_base_/datasets/ZihaoDataset_pipeline.py')
cfg.merge_from_dict(dataset_cfg)

# 类别个数
NUM_CLASS = 6

cfg.model.data_preprocessor.size = cfg.crop_size
cfg.model.data_preprocessor.test_cfg = dict(size_divisor=128)

# 单卡训练时,需要把 SyncBN 改成 BN
cfg.norm_cfg = dict(type='BN', requires_grad=True) # 只使用GPU时,BN取代SyncBN
cfg.model.backbone.norm_cfg = cfg.norm_cfg
cfg.model.decode_head.norm_cfg = cfg.norm_cfg
cfg.model.auxiliary_head.norm_cfg = cfg.norm_cfg

# 模型 decode/auxiliary 输出头,指定为类别个数
cfg.model.decode_head.num_classes = NUM_CLASS
cfg.model.auxiliary_head.num_classes = NUM_CLASS

# 训练 Batch Size
cfg.train_dataloader.batch_size = 4

# 结果保存目录
cfg.work_dir = './work_dirs/ZihaoDataset-UNet'

# 模型保存与日志记录
cfg.train_cfg.max_iters = 40000 # 训练迭代次数
cfg.train_cfg.val_interval = 500 # 评估模型间隔
cfg.default_hooks.logger.interval = 100 # 日志记录间隔
cfg.default_hooks.checkpoint.interval = 2500 # 模型权重保存间隔
cfg.default_hooks.checkpoint.max_keep_ckpts = 1 # 最多保留几个模型权重
cfg.default_hooks.checkpoint.save_best = 'mIoU' # 保留指标最高的模型权重

# 随机数种子
cfg['randomness'] = dict(seed=0)

# 打印config配置文件查看
print(cfg.pretty_text)

# 保存最终的config配置文件
cfg.dump('Zihao-Configs/ZihaoDataset_UNet_20230712.py')

这里需要改动一些文件路径,因为教程是在云平台运行的,且用的是notebook,我这里是在本地pycharm运行的。

  • cfg = Config.fromfile('./configs/unet/unet-s5-d16_fcn_4xb4-160k_cityscapes-512x1024.py')修改为cfg = Config.fromfile('mmsegmentation/configs/unet/unet-s5-d16_fcn_4xb4-160k_cityscapes-512x1024.py')

  • dataset_cfg = Config.fromfile('./configs/*base*/datasets/ZihaoDataset_pipeline.py')同理。

  • cfg.work_dir = './work_dirs/ZihaoDataset-UNet'修改为cfg.work_dir = 'work_dirs/ZihaoDataset-UNet',同时自己在根目录下新建一个work_dirs文件夹。

  • cfg.dump('Zihao-Configs/ZihaoDataset_UNet_20230712.py')同理,需要自己新建一个Zihao-Configs文件夹。

"""
==========================================
@author: Seaton
@Time: 2023/8/16:16:02
@IDE: PyCharm
@Summary: 准备config配置文件、数据集和pipeline
==========================================
"""

from mmengine import Config


cfg = Config.fromfile('mmsegmentation/configs/unet/unet-s5-d16_fcn_4xb4-160k_cityscapes-512x1024.py')
dataset_cfg = Config.fromfile('mmsegmentation/configs/_base_/datasets/ZihaoDataset_pipeline.py')
cfg.merge_from_dict(dataset_cfg)

# 类别个数
NUM_CLASS = 6

cfg.model.data_preprocessor.size = cfg.crop_size
cfg.model.data_preprocessor.test_cfg = dict(size_divisor=128)

# 单卡训练时,需要把 SyncBN 改成 BN
cfg.norm_cfg = dict(type='BN', requires_grad=True) # 只使用GPU时,BN取代SyncBN
cfg.model.backbone.norm_cfg = cfg.norm_cfg
cfg.model.decode_head.norm_cfg = cfg.norm_cfg
cfg.model.auxiliary_head.norm_cfg = cfg.norm_cfg

# 模型 decode/auxiliary 输出头,指定为类别个数
cfg.model.decode_head.num_classes = NUM_CLASS
cfg.model.auxiliary_head.num_classes = NUM_CLASS

# 训练 Batch Size
cfg.train_dataloader.batch_size = 4

# 结果保存目录
cfg.work_dir = 'mmsegmentation/work_dirs/ZihaoDataset-UNet'

# 模型保存与日志记录
cfg.train_cfg.max_iters = 40000  # 训练迭代次数
cfg.train_cfg.val_interval = 500  # 评估模型间隔
cfg.default_hooks.logger.interval = 100  # 日志记录间隔
cfg.default_hooks.checkpoint.interval = 2500  # 模型权重保存间隔
cfg.default_hooks.checkpoint.max_keep_ckpts = 1  # 最多保留几个模型权重
cfg.default_hooks.checkpoint.save_best = 'mIoU'  # 保留指标最高的模型权重

# 随机数种子
cfg['randomness'] = dict(seed=0)

print(cfg.pretty_text)
# 保存最终的config配置文件
cfg.dump('mmsegmentation/Zihao-Configs/ZihaoDataset_UNet_20230712.py')

至此为止,程序就可以跑通了,可以正常打印config文件的内容和保存ZihaoDataset_UNet_20230712.py文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值