1. 类别数量label_nc/ num_class的问题
报错包括:
RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED
等奇怪的错误
参考链接: https://www.computationalimaging.cn/2020/01/image-segmentation-summary-of-problems.html
原因及解决方案:
对label图进行了imresize操作
默认双线性插值法几乎必然产生新像素,造成分类变多的问题,导致报错
解决方案:label = cv2.resize(label,(256,256),interpolation=cv2.INTER_NEAREST)
采用INTER_NEAREST插值即可。
注:查看label数量的方法: length(np.unique(label))即可
2. 相同类别区域颜色不同的问题
在训练集没有问题的前提下,该问题常常是由于读取数据时的编码造成的。
读取数据时,我们需要将原本的label转换为排好序的数值从小到大确定的label。例如,原始label数组用np.unique统计结果为
[ 0. 76. 78. 126. 128. 149. 169. 176. 229. 255.]
我们要把它们变成:
[ 0. 1. 2. 4. 5. 7. 8. 9. 10. 11.]
可见,其中的3是空着的,即该输入数据没有3这个类别。如果代码没有将3空起来,便会导致类别的混乱问题,进而导致相同类别区域颜色不同,错误情况如下图所示:
未完待续
图像分割/super pixel/ parsing Github:
人脸分割: https://github.com/zllrunning/face-parsing.PyTorch
传统方法super pixel: https://github.com/mingyuliutw/EntropyRateSuperpixel
由分割图生成真实场景:https://github.com/NVlabs/SPADE
Deeplab v3+ Pytorch版: https://github.com/jfzhang95/pytorch-deeplab-xception
CSAILVison Pytorch语义分割: https://github.com/CSAILVision/semantic-segmentation-pytorch