语义分割
数据集
cityscapes:共2975张图片。 https://www.cityscapes-dataset.com/
FCN
动机和创新点:
将CNN用在semantic segmentation中, trained end-to-end, pixelsto-pixels。
用全卷积网络代替全连接,可以处理任意的不同size的输入和输出
将当前分类网络改编成全卷积网络(AlexNet、 VGGNet和GoogLeNet) 并进行微调,设计了跳跃连接将全局信息和局部信息连接起来, 相互补偿
全局信息解决是什么的问题(分类),局部信息解决在哪里的问题。
实验证明FCN-8s是最佳网络。
模型:跳层连接用的是crop and sum.
上采样:转置卷积。
转置卷积分为三步
第一步:对输入的特征图进行差值,插入0,新的长度是 $H' = H + (stride-1)*(H-1)$,即相当于每两个像素点之间,插入(stride-1)个0
第二步:新的卷积核的stride为1,kernel size不变,padding'为kernal size - padding - 1
第三步:利用新的卷积核和新的特征图,得到最终的逆卷积结果
综合前三步的结果,可以得到输入输出的对应关系
当kernal_size=2,stride=2,padding=0时,$H_{out}=2*H_{in}$
当kernal_size=4,stride=2,padding=0时,$H_{out}=2*H_{in}+2$
当kernal_size=16,stride=8,padding=0时,$H_{out}=8*H_{in}+8$
损失函数用交叉熵,即pixel-wise的多分类,每个pixel都贡献损失。
在pytorch中,损失函数用nll_loss=nn.NLLLoss2d(weight, size_average, ignore_index)
,nll_loss(F.log_softmax(inputs), targets)
, NLL的含义是The negative log likelihood loss. 这个损失就是对每个像素点用交叉熵。
Softmax函数,或称归一化指数函数,公式是
logsoftmax函数,即在softmax之后加log,即
评测指标:
首先计算混淆矩阵,这个方法十分巧妙,得出
(n_class, n_class)
的一个矩阵,即为混淆矩阵评测指标有:acc、acc_cls、iu、mean_iu、fw_iu.
iu指的是Intersection_over_Union
fw_iu指的是Frequency_Weighted_Intersection_over_Union
U-Net
用于医学图像分割。
医学图像分割的难点:
数据量少。 一些挑战赛只提供不到100例的数据
图片尺寸大。 单张图片尺寸大、分辨率高, 对模型的处理速度有一定的要求
要求高。 医学图像边界模糊、梯度复杂, 对算法的分割准确度要求极高
多模态。 以ISLES脑梗竞赛为例, 其官方提供了CBF,MTT,CBV,TMAX,CTP等多种模 态的数据
本文共享:
赢得了ISBI cell tracking challenge 2015
速度快,对一个512*512的图像,使用一块GPU只需要不到一秒的时间
成为大多做医疗影像语义分割任务的baseline,也启发了大量研究者去思考U型语义分割网络
UNet结合了低分辨率信息(提供物体类别识别依据)和高分辨率信息(提供精准分割定位依据),完美适用于医学图像分割。
模型:增加了很多跨层连接,用的是crop and concat.
上采样:转置卷积。
损失:给不同pixel加了不同的权重(权重和该像素点离最近的细胞的距离有关,将注意力放在两个细胞的分界位置)。
Unet和FCN区别: U-Net和FCN非常的相似,U-Net比FCN稍晚提出来,但都发表在2015年,和FCN相比,U-Net的第一个特点是完全对称,也就是左边和右边是很类似的,而FCN的decoder相对简单,只用了一个deconvolution的操作,之后并没有跟上卷积结构。第二个区别就是skip connection,FCN用的是加操作(summation),U-Net用的是叠操作(concatenation)。这些都是细节,重点是它们的结构用了一个比较经典的思路,也就是编码和解码(encoder-decoder)结构,早在2006年就被Hinton大神提出来发表在了nature上.
FusionNet
模型基本和U-Net一致,但是加入padding,使得跨层连接的分辨率保持不变。
跨层连接用的是求和方式,引入残差。
DeconvNet
上采样:反卷积+反池化
该论文最大优点,结构合理,在每部分的文字叙述中逻辑好,可以借鉴。
SegNet
FCN弊端:忽略了高分辨率的特征图,导致边缘信息的丢失(最好的模型是8s的,没有结合的高分辨率信息);FCN编码器中有大量参数,但解码器非常的小。
上采样:和fcn不同,利用了pooling中的index信息,不再index的位置补0,之后增加的卷积层也起到了将这些0填充的作用,和转置卷积的差别不是很大,torch.nn有利用upmaxpool函数。如下图所示:
提出完全对称的编码器解码器结构
DeepLab
GCN
DFN
ENet
BiSeNet
FANet
RedNet
Last updated
Was this helpful?