![f7f943162a5069ed29ac74dbc4b92459.png](https://i-blog.csdnimg.cn/blog_migrate/7cb194a7ca1347d589876749c9752204.jpeg)
实践FCN+VOC2012语义分割
首先阅读了FCN论文,大概了解了利用FCN实现语义分割的方法和原理。
接着我了解了下语义分割的评价指标:
参考网址--https://www.jeremyjordan.me/evaluating-image-segmentation-models/
![5c56ffd3c24ab98cadbec544d1e66036.png](https://i-blog.csdnimg.cn/blog_migrate/265fb2d4879dea928388b2673b71f7af.jpeg)
接着进行实践:
01.FCN网络参考如下网址中的
awesome-semantic-segmentation-pytorch/core/models/fcn.py
02.FCN训练PASCALVOC2012数据集—参考:
https://github.com/kawhidiot/pytorch-segmentation-voc
03.VOC2012用于分割的数据集可以参考:
https://oldpan.me/archives/pascal-voc2012-guide
实际上VOC2012仅仅部分图片适用于分割(2913张)(包括train和val)
注:02中代码是利用deeplabv3实现语义分割的,其中的加载数据部分和评价最后的指标写的挺好,就借助大体的框架,将训练网络和测试网络换成FCN,结果是可以进行训练和测试的。
在设定epoch和学习率之后,完成训练,并进行测试,但是结果很差,MIOU只有0.22,结果如下图所示,我尝试了多次,还是没有找到具体的原因。图示如下:
![adc596de274ec8be359398665b7e413a.png](https://i-blog.csdnimg.cn/blog_migrate/8f138684bb3916b3df55bd9e9d69cd8d.png)
可视化的结果如下:
![927e68581130aaa77b1a28f19477a95d.png](https://i-blog.csdnimg.cn/blog_migrate/68c45b54470775fff0efee67d0a75dbc.jpeg)
![1667a35916f1c6b0b70650e6b45cd907.png](https://i-blog.csdnimg.cn/blog_migrate/87e35c7eb24b4b3409aefddbbf2f8539.png)
我还未找到具体失败的原因在哪里,以上可以成功实现运用FCN网络进行VOC2012数据集的语义分割训练,方法可以参考。如果有人知道我失败的原因可以提一下,我进行改正。
最后大家如果对分割感兴趣的话,可以参考以下网址进行学习(包含各种网络以及API实现语义分割的教程及代码)
https://github.com/mrgloom/awesome-semantic-segmentation
之后又进行了反思,应该是上次找的代码有点问题,之后我又用PSPNET进行了实践,发现差不多达到了论文中的效果,
参考代码:https://github.com/hszhao/semseg
按照它的教程进行实验,我用的数据集是VOC2012Aug,相比于普通的VOC2012训练集更大,模型效果会更好,下图是voc2012_pspnet50模型的测试结果:
![425059cf824b62c28043b2bee08d0025.png](https://i-blog.csdnimg.cn/blog_migrate/4335a1a23056cc8c14213c8a98ad2e63.jpeg)
之后进行了可视化,效果还是挺好的,如下所示:
![1037ee129cf4e709846f600133172d4c.png](https://i-blog.csdnimg.cn/blog_migrate/4faceff6a2268677a2d61402ca0651e0.jpeg)
![c5cc8cafb3b92cef2f22553b6af94462.png](https://i-blog.csdnimg.cn/blog_migrate/f8f4d3a93ab533ae1f06a58b58d308ff.jpeg)
![fb1a728e4a3a0361ebd0296780633332.png](https://i-blog.csdnimg.cn/blog_migrate/8eef0997a14148e8737a9cac56e2c283.jpeg)