以SegFormer和Cityscapes为例记录MMSegmentation测试和训练

1. MMSegmentation安装

参考我上一篇文章:ubuntu编译安装mmcv 1.6.2和mmsegmentation 0.28.0

2. 数据集Cityscapes准备

参考:https://github.com/open-mmlab/mmsegmentation/blob/master/docs/zh_cn/dataset_prepare.md

  1. 下载Cityscapes前三个部分,即gtFine_trainvaltest.zip (241MB)
    gtCoarse.zip (1.3GB)leftImg8bit_trainvaltest.zip (11GB)
    在这里插入图片描述
  2. 组织数据集如下图:
    在这里插入图片描述

mmsegmentation
├── mmseg
├── tools
├── configs
├── data
│ ├── cityscapes
│ │ ├── leftImg8bit
│ │ │ ├── train
│ │ │ ├── val
│ │ ├── gtFine
│ │ │ ├── train
│ │ │ ├── val
│ │ ├── gtCoarse
│ │ │ ├── train
│ │ │ ├── train_extra
│ │ │ ├── val

3. 测试SegFormer
  1. checkpoints下载:
    https://github.com/open-mmlab/mmsegmentation/tree/master/configs/segformer
  2. 测试
# 单卡GPU 测试
python ./tools/test.py configs/segformer/segformer_mit-b0_8x1_1024x1024_160k_cityscapes.py ./checkpoints/segformer_mit-b0_8x1_1024x1024_160k_cityscapes_20211208_101857-e7f88502.pth --eval cityscapes --show
# 多卡GPU 测试
./tools/dist_test.sh configs/segformer/segformer_mit-b0_8x1_1024x1024_160k_cityscapes.py ./checkpoints/segformer_mit-b0_8x1_1024x1024_160k_cityscapes_20211208_101857-e7f88502.pth 1 --eval cityscapes --show

*注: 多卡GPU测试中1为GPU数目

  1. 输出:
    在这里插入图片描述
4. 训练SegFormer
python tools/train.py configs/segformer/segformer_mit-b5_8x1_1024x1024_160k_cityscapes.py

默认会生成work_dir存放训练过程中的log和checkpoints:
在这里插入图片描述
输出:
在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: mmsegmentation是一个基于PyTorch的图像分割工具包,可以用于训练测试各种图像分割模型。Cityscapes是一个用于城市场景分割的数据集,包含了各种不同的城市场景图像和对应的标注。使用mmsegmentation可以很方便地训练Cityscapes数据集上的图像分割模型,以实现对城市场景的自动分割和识别。 ### 回答2: mmsegmentation是一种基于PyTorch的图像分割工具,支持多种主流的语义分割模型。对于训练Cityscapes,我们可以利用mmsegmentation提供的预训练模型或者自定义的模型进行训练。 首先要准备好Cityscapes数据集,该数据集包含了30个城市街景的图像,每个图像大小为1024x2048像素,手动标注了19类不同的语义目标。如果需要训练自定义模型,则需要在Cityscapes训练集上进行训练,并在验证集上进行验证,以获得最佳性能。 接下来,我们需要在mmsegmentation中配置数据集和模型。首先指定数据集路径,用CityscapesDataset类加载Cityscapes训练集和验证集。使用BaseSampler类和BatchSampler类来对数据进行采样和批量处理。然后,定义模型的结构和超参数,建立配置文件config.py。可以选择使用ResNet、VGG等预训练模型,或者自定义模型进行训练。此外,还需设置优化器和学习率、损失函数等。 在配置好数据集和模型之后,我们可以运行训练脚本train.py。具体来说,我们可以使用DistributedDataParallel类把模型分布式地训练到多个设备上,以加快训练速度。我们可以使用多个GPU或者多台服务器来加快训练速度。在训练过程中,我们可以通过打印损失值和验证集精度等指标来监控模型的训练情况。 训练完后,我们可以使用训练集和验证集来测试模型的性能。可以使用预测函数predict.py在测试集上进行测试,并可视化结果。在测试过程中,我们可以使用Dice系数、IoU等指标来评估模型的性能。 在训练Cityscapes时,我们还可以使用数据增强技术来提高模型的鲁棒性和泛化性能。如,我们可以使用随机翻转、随机旋转、随机缩放、随机裁剪等技术来增加数据集的多样性。这样可以提高模型的泛化能力,避免过拟合问题。 ### 回答3: mmsegmentation是一个基于PyTorch的高效、灵活和易用的语义分割工具箱。它是一个开源的项目,可以用于各种语义分割应用,如道路识别、人像分割等。 在mmsegmentation中,我们可以使用不同的模型进行训练和预测。本文将重点介绍如何使用mmsegmentation训练Cityscapes数据集。 Cityscapes是一个常用的城市街景数据集。它包含5000张高分辨率的图像,其中每个图像都有一张包含20个类别的标签图。城市街景数据集对城市道路、建筑物、行人、车辆、自行车等物体进行了标注,是进行道路识别、汽车自动驾驶等方面的研究的重要数据集之一。 使用mmsegmentation训练Cityscapes数据集需要以下几个步骤: 1.安装mmsegmentation 安装mmsegmentation时需要根据自己的GPU选择所需的安装包。如果没有GPU可以选择CPU版本的安装包。 pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.7.0/index.html git clone https://github.com/open-mmlab/mmsegmentation.git cd mmsegmentation pip install -e . 2.数据准备 首先需要下载Cityscapes数据集。下载完成后,需要将数据集包括图像和标签放在同一个目录下,并将路径配置在配置文件中。 Markdown格式的配置文件样信息如下: # model settings model = dict( type='EncoderDecoder', pretrained='torchvision://resnet50', backbone=dict( type='ResNet', depth=50, num_stages=4, out_indices=(0, 1, 2, 3), frozen_stages=1, norm_cfg=dict(type='BN', requires_grad=True), norm_eval=True, style='pytorch'), decode_head=dict( type='PSPHead', in_channels=2048, in_index=3, channels=512, dropout_ratio=0.1, num_classes=19, use_aux=False, auxiliary_head=dict( type='FCNHead', in_channels=1024, in_index=2, channels=256, num_convs=1, concat_input=False, dropout_ratio=0.1, num_classes=19, norm_cfg=dict(type='BN', requires_grad=True), align_corners=False)), auxiliary_head=dict( type='FCNHead', in_channels=1024, in_index=2, channels=256, num_convs=1, concat_input=False, dropout_ratio=0.1, num_classes=19, norm_cfg=dict(type='BN', requires_grad=True), align_corners=False), # model training and testing settings train_cfg=dict(), test_cfg=dict(mode='whole')) # dataset settings dataset_type = 'CityscapesDataset' data_root = 'data/cityscapes/' # the data folder img_norm_cfg = dict( mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) train_pipeline = [ dict(type='LoadImageFromFile'), dict(type='LoadAnnotations', reduce_zero_label=False), dict(type='Resize', img_scale=(2048, 1024), ratio_range=(0.5, 2.0)), dict(type='RandomFlip', prob=0.5), dict(type='PhotoMetricDistortion'), dict( type='Normalize', mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225], to_rgb=False), dict(type='Pad', size=(2048, 1024), pad_val=0, seg_pad_val=255), dict(type='DefaultFormatBundle'), dict(type='Collect', keys=['img', 'gt_semantic_seg']), ] test_pipeline = [ dict(type='LoadImageFromFile'), dict( type='MultiScaleFlipAug', img_scale=(2048, 1024), flip=False, transforms=[ dict(type='Resize', keep_ratio=True), dict( type='RandomFlip', prob=0.5, direction='horizontal'), dict( type='Normalize', mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225], to_rgb=False), dict( type='ImageToTensor', keys=['img']), dict( type='Collect', keys=['img']), ]) ] data = dict( samples_per_gpu=2, workers_per_gpu=2, train=dict( type=dataset_type, data_root=data_root, img_dir='train_images', ann_dir='train_labels', pipeline=train_pipeline), val=dict( type=dataset_type, data_root=data_root, img_dir='val_images', ann_dir='val_labels', pipeline=test_pipeline), test=dict( type=dataset_type, data_root=data_root, img_dir='val_images', ann_dir='val_labels', pipeline=test_pipeline)) # optimizer optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) optimizer_config = dict() # learning policy lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) total_epochs = 12 3.训练模型 准备好数据之后,即可训练模型。使用以下命令开始训练: python tools/train.py configs/pspnet/pspnet_r50-d8_512x1024_40k_cityscapes.py 其中,configs/pspnet/pspnet_r50-d8_512x1024_40k_cityscapes.py是模型设置文件。 4.测试模型 在训练结束之后,我们可以使用以下命令来测试模型: python tools/test.py configs/pspnet/pspnet_r50-d8_512x1024_40k_cityscapes.py work_dirs/pspnet_r50-d8_512x1024_40k_cityscapes/latest.pth --eval mIoU 其中,work_dirs/pspnet_r50-d8_512x1024_40k_cityscapes/latest.pth是训练好的模型参数文件。 综上,使用mmsegmentation训练Cityscapes数据集包括数据准备、训练模型和测试模型三个步骤。通过mmsegmentation的高效性、灵活性和易用性,可以便捷地进行语义分割任务的研究和开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值