mmsegmentation 关于灰度图训练的一些问题

数据集处理文件部分

首先是这个文件,训练集的处理

configs/_base_/datasets/name.py
train_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(type='LoadAnnotations'),
    dict(
        type='RandomResize',
        scale=(2048, 1024),
        ratio_range=(0.5, 2.0),
        keep_ratio=True),
    dict(type='RandomCrop', crop_size=crop_size, cat_max_ratio=0.75),
    dict(type='RandomFlip', prob=0.5),
    dict(type='PackSegInputs')
]

请注意这里是否存在

PhotoMetricDistortion

如果开启了这个,会造成:
1.随机亮度
2.随机对比度(模式 0)
3.将颜色从 BGR 转换为 HSV
4.随机饱和度
5.随机色调
6.将颜色从 HSV 转换为 BGR
7.随机对比度(模式 1)

请结合自己的数据集实际情况来决定是否需要关闭这个

双卡训练部分

双卡训练时,一个是注意要把BN改成SyncBN

此外,在执行双卡训练代码时

bash tools/dist_train.sh configs/pspnet/pspnet.py 2

注意前面的bash,使用sh会报错↓

8: Bad substitution

关于背景是否关闭

这里首先建议看一下这篇文章的相关部分:
https://blog.csdn.net/qq_39967751/article/details/126272578

然后我来详细讲一下
1.该怎么关闭?修改哪些代码?
首先在

mmseg/datasets/yournet.py

这个文件中

    def __init__(self,
                 seg_map_suffix='.png',
                 reduce_zero_label=False, 
                 **kwargs) -> None:

将reduce_zero_label=False改为True

然后从这个文件的上面的METAINFO中,去掉classes中的’background’,和palette中对应的颜色

之后,前往

/configs/你的训练配置文件.py

在这里搜索所有的num_classes
将其修改为上面的classes中现存的类别数量
比如刚才的数据集定义文件中:

'classes':['1', '2', '3', '4', '5', '6', '7', '8', '9'],

num_classes这里就填9

在修改为true之后,mmseg会将你所有的值为0的区域修改为值为255,这样在训练时就会忽略所有的这样的区域

2.为什么需要关闭?

这里需要结合你的数据集的实际情况,比如你的数据集并未将图片中所有需要检测的目标都标记出来
举例:你分割苹果,图里有三个,但是数据集只标了两个,还有一个就会被当成背景,这样就会让mmseg感到困惑:明明这个长得也像苹果,为什么却算是背景?苹果到底长什么样?

同时,一般数据集会在论文中提到:由于没有标记所有的目标,所以采用了什么什么算法来减少背景对分割的影响。
在这种情况下就需要关闭背景。

如果不关闭,可能就会造成这种情况:
(准确度极低,效果极差,就像是数据集有问题一样)
在这里插入图片描述
看看这数据,肉眼做分割都不一定能那么低。

我不缺定这种问题/解决方法是否是灰度图独有的,请自行尝试

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值