FCN语义分割笔记(1)
一、什么是语义分割
定义:为图像中的每一个像素赋予一个类别标签,语义分割提供更精细、像素级别的理解。比如有一个图片,图片里有一个西瓜和勺子,经过语义分割模型,输出一个结果,如果原来的图片是512*512,那么理论上来说要对应这么多个像素并且背景也算一个类别,每个像素掩码+类别信息。
应用场景:自动驾驶(道路、行人、车道线、交通标志)、医学图像分析(分割器官、肿瘤、病灶区域)、遥感图像处理(建筑物、农田、湖泊)
二、发展历史
传统模型:基于阈值、基于图像分层和纹理、基于聚类、基于边缘
深度学习模型:FCN(2014):全卷积神经网络,第一个将传统分类的CNN改造成像素级预测的架构,开创了基于深度学习的语义分割新时代。U-Net(2015):为医学图像分割设计,在参数量不打的前提下一九能跑出非常不错的效果。DeepLab(2016-2018):v1引入空洞卷积+CRF,v2加入ASPP多尺度特征,v3去除CRF强化ASPP,v3+加入E-D提升边缘精度。
三、FCN原理
一般卷积模型进行分类的模型结构是:输入固定大小的图片,然后经过卷积层和池化层的特征提取,最终输出的特征图有一个特性,就是特征图的高宽下采样一定倍数,通道数变大,然后将特征图通过一定的方法进行展平和全连接层对接,最后一层全连接层的神经元个数应是类别的数量,最后利用softmax函数映射最后一层神经元的输出,输出值为概率值,所有值相加等于1.
利用FCN模型进行语义分割任务,本质上也是一个分类任务,只不过从任务的本质来说是对图像进行像素级的分类,并且模型的输入图片可以是任意大小(没有全连接层),模型的特征提取网络可以是任意卷积神经网络(可以是VGG也可以是ResNet等等),最后网络模型的输出为和输入图像一样高宽的高维向量。可以理解为输出一个概率矩阵。
输出解析:
假设有20类,那么输出的结果是21类,多出来的一个类为背景。