由于要接触语义分割相关领域,随着自己的学习,也希望能够写下一些总结性的博客和大家一起分享并互相学习。
我会将语义分割一系列的popular algorithm论文总结、剖析、实现,以进一步加深对此领域的理解。
一、基本概念
什么是语义分割? 语义分割(semantic segmentation)是计算机视觉的一个重要问题,将视觉输入划分为不同语义可解释类别,即像素级别的分割,并且分割是有语义信息的。如下图所示:
在自动驾驶、机器人等领域,有着极其重要的意义。
很明显,不同于其他类型的视觉任务,如物体检测(object detection)、分类(classification),语义分割是一个pixelwise 的任务,对每一个像素,进行一个分类预测。同时又与无监督聚类任务不同,聚类虽然可以达到分割的作用,但不一定具有语义信息。
二、数据集
常用的数据集如下,其中Pascal VOC最广泛使用
- Pascal VOC 2012:有 20 类目标,这些目标包括人类、机动车类以及其他类,可用于目标类别或背景的分割
- Cityscapes:50 个城市的城市场景语义理解数据集
- NYUDv2:一个有RGB-D信息的数据集,采集自Kinect,有1449张RGBD图像,40类目标。
- Pascal Context:有 400 多类的室内和室外场景
- Stanford Background Dataset:至少有一个前景物体的一组户外场景。
三、方法
传统的方法有基于决策树、随机森林等方法,在本专题中,仅介绍学习基于深度学习和随机场的方法。
主流深度学习方法有:
- FCN
- DeepLab v1、v2
- segNet
- UNet
- Dilated convolutions
- PspNet
- RefineNet
- Large kernel Matters
- DeepLab v3
- 基于对抗网络
基于随机场的处理:
- DenseCRF
- MRF
- GCRF
后续将对每种主流方法深入学习与分析,欢迎大家指点与共同学习。