我是按照【语义分割与MMSegmentation】 https://www.bilibili.com/video/BV1qN411z7hz/?share_source=copy_web&vd_source=e6512529dd3ff573c1205bd41d938fec里面的步骤来跑的。
我的标签只有两个类别
0:background
255: liver
注意以下几点:
1.在/root/autodl-tmp/mmsegmentation/mmseg/datasets/transforms/loading.py中添加第118行代码,经过调试发现读取label数据的时候,对于单通道数据,像素值要和类别的id
相等。比如我的数’background’,‘building’在单通道的label数据中要像素值分别要为‘background’=0,‘building’= 1,因为我的数据是background’=0,‘building’= 255,所以我修改了源代码将标签中为255的像素值改成了1。
2.遇到的评价指标为0或者100%的问题
修改LOSS函数应该可以解决此问题,修改/root/autodl-tmp/mmsegmentation/configs/_base_/models/upernet_swin.py中第46,59行代码,将函数改成’DiceLoss‘函数。
3.在配置环境时,下载mmcv和与其兼容的pytorch很麻烦,这里,直接下载 torch1.10.1+cu113版本,然后下载对应的mmcv=2.0.0,下载torch时安全上网更快。
pip3 install install torch==1.10.1+cu113 torchvision==0.11.2+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
!pip install -U openmim
!mim install mmengine
!mim install mmcv==2.0.0