数据集处理文件部分
首先是这个文件,训练集的处理
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感到困惑:明明这个长得也像苹果,为什么却算是背景?苹果到底长什么样?
同时,一般数据集会在论文中提到:由于没有标记所有的目标,所以采用了什么什么算法来减少背景对分割的影响。
在这种情况下就需要关闭背景。
如果不关闭,可能就会造成这种情况:
(准确度极低,效果极差,就像是数据集有问题一样)
看看这数据,肉眼做分割都不一定能那么低。
我不缺定这种问题/解决方法是否是灰度图独有的,请自行尝试