gluoncv fcn做语义分割小结
照例,先占坑再填,不完善的地方后续再补
1、图片标注
github上搜labelme
也可以直接作为python第三方库安装
pip install labelme
即可
启动时在cmd命令中输入labelme,该软件的图形界面就出来了

点击open dir并选择对应的文件夹
点击creat polygons开始标记,以不规则方框或者拆线画出所要区分的实例,输入标签,最后点save
2、标签转换
标出来的标签是单个的json格式,由于要用pascal voc格式进行训练,需要对所标注的数据格式进行转换,转成voc数据格式
github中labelme官方项目中就有转换的脚本,但是需要注意的一点是要先选对对应的脚本,比如要做实例分割,不要选成目标检测了
实例分割转换脚本链接
https://github.com/wkentaro/labelme/blob/master/examples/semantic_segmentation/labelme2voc.py
对应的链接先空上,随后再补,家里的网是移动的,github基本打不开。
转出来的格式如图所示

3、训练
转换出来的数据好像是voc增强模式,还给每张图片提取了特征(npy文件),一个特征都是几十兆,如上图所示。
在训练时,gluoncv官方给出的FCN网络训练脚本读取的文件夹是SegmentationClass,而我们用labelme转出来的文件夹名称是SegmentationClassPNG,需要将脚本中的文件夹名称改动一下。
官方tutorial link:
https://gluon-cv.mxnet.io/build/examples_segmentation/train_fcn.html
官方训练脚本的link:
https://gluon-cv.mxnet.io/_downloads/1f67ebbf3e0adc5c6fa863a3bc7672a6/train.py
另外,此脚本还有两个坑:
(1)默认的模型保存路径为空,训练时一定要加上

我第一次训练时就没管这个参数,导致白训了,训完在数据根目录下找model,but nothing was found!
(2)语法错误,局部变量在循环里面声明的,出了循环还在调用,运行时会报错

只需在方法第一行给它们加上并赋个初值就好了。

浙公网安备 33010602011771号