RuntimeError: It is expected output_size equals to 2, but got size 3
原因:使用的是ADE20K数据集,但它的标注图片的size有三个维度,但mmsegmentation代码需要的标注图片size为两个通道的。
解决方法:在mmseg/datasets/pipelines/loading.py中找到方法LoadAnnotations,将
gt_semantic_seg=mmcv.imfrombytes(img_bytes,flag=’unchanged’,backend=self.imdecode_backend).squeeze().astype(np.uint8)
改为
gt_semantic_seg = mmcv.imfrombytes( img_bytes, flag='grayscale', backend=self.imdecode_backend).squeeze().astype(np.uint8)
改完代码就成功跑起来啦!
后面evaluation时,还出现了类似的问题
IndexError: too many indices for array: array is 2-dimensional, but 3 were indexed
File "/farm/yangweijing/code7/swin-segmentation/mmseg/core/evaluation/metrics.py", line 48, in intersect_and_union
pred_label = pred_label[mask]
修改方法:mmseg/datasets/custom.py中get_gt_seg_maps方法里flag='unchanged’改为flag=‘grayscale’