主要为记录自己学习实践mmsegmentation框架的过程,并顺便为一起学习的同学们提供参考,分享一下自己学习到的一些知识和所踩的坑,与大家共勉!
我个人主要是想要使用mmsegmentation框架训练自己的数据集,一开始跟着网上的教程使用了PspNet网络,但是可能由于数据集过小最后达到的效果不尽人意,因此考虑使用更新的、性能更好的SegFormer进行尝试,也是看到了SegFormer在各种数据集上的准确率都相较传统的神经网络有了较大提升,所以比较心动。
SegFormer在ADE20K数据集上的表现
那么让我们现在开始吧(这里默认大家都配置好mmsegmentation了):
首先对自己的数据集进行处理,我比较习惯于处理voc类型的数据集,因此这里主要介绍voc类型数据集的处理结构:
然后是部署我们自己的配置文件,由于mmsegmentation的SegFormer并没有针对voc数据集的配置文件,因此需要我们自己对其进行修改以适配voc类型数据集
一、首先修改mmseg.mimconfigs_base_datasetspascal_voc12.py文件(建议把mmseg文件夹复制到自己的项目文件夹下,以便于修改)
二、然后修改mmsegdatasetsvoc.py
主要将类别修改为自己的数据集类别以及想要为分割的各类别显示的颜色
三、接着修改_base_modelssegformer.py(没有则创建一个)

四、再创建总体配置文件
我这里将该文件拷贝到了项目文件夹中了,包括_base_文件夹,便于路径读取和修改,创建segformer_mit-b5.py总配置文件,然后更改继承的数据集类型:
五、下载对应的预训练模型
由于SegFormer官方并没有针对voc数据集进行预训练,只能使用ade2k数据集的预训练模型进行训练
六、train文件构建
直接上代码吧,亲测可运行
七、预测代码:
大家可以自己尝试一下
八、训练预测结果
由于我还没在autodl进行大规模训练,就给大家展示一下在自己机子上浅跑的预测结果吧~

原图像

预测结果

后续大规模训练后会继续更新。。。
坑1:libpng warning: iCCP: known incorrect sRGB profile报错

原因是新版的libpng增强了ICC profiles检查,发出警告。此警告可以忽略 ,我在此也没有对其进行操作,可以使用其他方法(如skimage)读取的方式避免该类报错。
坑2:ValueError: expected 4D input (got 3D input)报错
这是一个困扰我许久的问题
通过上网才发现问题所在是因为使用了不正确的BatchNorm函数,快速解决的方法就是不需要在模型的backbone添加 ‘norm_cfg’
未完待续。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/158275.html