UNet论文阅读笔记

  1. UNet论文笔记:
    1. 论文创新点:
  1. 提出放缩UNet网络,通过跳层连接将浅层的像素特征与深层的语义特征(位置信息)进行拼接,这种不同尺度的特征融合对上采样恢复像素大有帮助
  2. 为了得到无缝分割结果图使用overlap-tile,却使得输入图像通过镜像推断进行填补
  3. 使用弹性形变数据增强-局部位移变形,在生物医学的数据集上展现了良好性能
  4. 对于相邻的同类目标使用一个加权loss进行处理
      1. UNet网络:

    UNet是作者Olaf在15年发表的文章,其主要针对生物医学的分割设计了UNet网络,网络架构由一个捕获上下文的收缩路径(图片特征下采样)和一个可以精确定位的对称扩展路径(图片特征的上采样/反卷积/解码)构成的。

作者提到前人研究的缺点:网络需要在精确的定位和获取上下文信息之间进行权衡。越大的patch需要越多的最大池化层,其会降低定位的精确度,而小的邻域使得网络获取较少的上下文信息。(there is a trade-off between localization accuracy and the use of context).UNet没有吗?

特征提取采用了两次卷积加上一次最大池化结构,得到最终的28*28*1024的特征图,之后进行反卷积操作,对特征图进行解码操作,解码后的特征与相应的编码特征图进行concat,增加特征信息,最终输出288*288*2的特征分割图。

下采样进行信息浓缩和上采样进行像素恢复,这是其他分割网络都会有的部分,U-Net自然也不会跳出这个框架,可以看到,U-Net进行了4次的最大池化下采样,每一次采样后都使用了卷积进行信息提取得到特征图,然后再经过4次上采样恢复输入像素尺寸。但U-Net最关键的、也是最特色的部分在于图中红色虚线的Skip Connection。每一次下采样都会有一个跳跃连接与对应的上采样进行级联,这种不同尺度的特征融合对上采样恢复像素大有帮助,具体来说就是高层(浅层)下采样倍数小,特征图具备更加细致的图特征,底层(深层)下采样倍数大,信息经过大量浓缩,空间损失大,但有助于目标区域(分类)判断,当high level和low level的特征进行融合时,分割效果往往会非常好。从某种程度上讲,这种跳跃连接也可以视为一种Deep Supervision。

所以U-Net本身的结构设计导致了其不光在医学图像上表现优越,在一般的自然图像上效果依然很好。

为什么U-Net在医学图像上表现优越? - 腾讯云开发者社区-腾讯云 (tencent.com)

      1. overlap-tile

生物领域的数据集具有数量上,图片大的特点,作者针对此现象,将图片进行overlap-tile(图片平铺)送入网络,对于无缝平铺输入平铺的大小很重要,并且为了检测结果实现无缝分割,对图片采取镜像拼接。

--为了预测图像边缘区域中的像素的类别标签,通过对输入图像进行镜像操作来推断缺失的上下文信息。这种切片策略对于将网络应用于大型图像是重要的,否则图像的分辨率将受限于显存(the GPU memory)。

能量函数通过结合pixel-wise soft-max损失函数和cross entropy损失函数对最终特征图计算。

      1. 加权loss

pixel-wise soft-max损失函数定义:

其中ak(x)表示特征通道k在像素位置x∈Ω和Ω⊂Z2的激活。K是类的数量,pk(x)是最大函数的近似值。对于有最大激活ak(x)的k, pk(x)≈1,对于所有其他k, pk(x)≈0。交叉熵在每个位置惩罚的偏差:

其中':Ω→{1,…, K}是每个像素的真实标签,w: Ω→R是一个权重映射,引入这个权重映射是为了对于相邻同类目标的边界给于更大的权重。

我们预先计算每个ground truth分割的权重图,以补偿训练数据集中某一类像素的不同频率,并迫使网络学习我们在接触单元之间引入的小分隔边界。分离边界的计算使用形态操作。权重映射然后计算为

其中wc: Ω→R是平衡类频率的权重映射,d1: Ω→R表示到最近的单元格边界的距离,d2: Ω→R表示到第二个最近单元格边界的距离。在我们的实验中,我们设置w0 = 10和σ≈5像素。

      1. 数据增强:

显微镜图像我们主要需要平移和旋转不变性以及对变形和灰度值变化的鲁棒性。特别是训练样本的随机弹性变形似乎是训练带有少量注释图像的分割网络的关键概念。我们在粗3 × 3网格上使用随机位移向量生成平滑变形。位移采样自10像素标准差的高斯分布。逐像素的位移然后计算使用双三次插值。

      1. 训练参数:

SGD(momentum=0.99),选择大的patch而不是大的batchsize,batchsize设置为1,通过标准差为的高斯分布获得初始权值,N表示一个神经元传入的节点数。

  1. UNet实验:

语义分割网络:UNet

数据集:数据集matting_human_datasets

Adobe Research论文《Deep Image Matting》提供的Matting Dataset。大约有455张图片,论文将MSCOCO和PASCAL VOC当做背景图,与455张图片进行合成后,大概有45500张训练图片和1000张测试图片

论文地址:https://sites.google.com/view/deepimagematting

项目地址:GitHub - Joker316701882/Deep-Image-Matting: This is tensorflow implementation for paper "Deep Image Matting"

参考链接:【CV】基于UNet网络实现的人像分割 | 附数据集 - 灰信网(软件开发博客聚合) (freesion.com)

该项目是基于 GitHub - milesial/Pytorch-UNet: PyTorch implementation of the U-Net for image semantic segmentation with high quality images (2.6k star 车辆分割)修改的,并提供人像分割的数据集(1.15G)。

人像分割项目链接:GitHub - leijue222/portrait-matting-unet-flask: Portrait Mating implementation in UNet with PyTorch.

此项目已实现人像分割,在人像分割项目里进行测试可以得到分割人像结果,但进行训练时一直在报错:

找到交叉熵一行进行修改,此时输入images(1,3,400,300),true_masks(1,400,300),多次查找更改问题并没有解决,github上的UNet基础模型是一样的,各个项目报错信息均出在了交叉熵损失上,

参考网上分析消光数据集的标签信息给出的是前景概率信息,而分割数据集的信息给出的是类别所属的类别信息,重新寻找模型进行训练,

语义分割项目链接:GitHub - PaddlePaddle/PaddleSeg at release/2.3

百度飞桨结合了各种分割类型,在此选择了适用消光数据集的matting类型模型,

使用PPM100数据集,训练集79张,验证集21张,共100epoch训练,训练结果如图所示:

浅测评估指标:

  • Gradient 主要计算的是预测的alpha matte (alpha)ground truth (alpha^{*})的之间的梯度差异
  • Connectivity  连通性误差的计算方法, 这里是对整个预测出来的alpha matte图和相应的Ground truth的对应的差异的累和
  • SAD Sum of Absolute Difference= SAESum of Absolute Error)即绝对误差和
  • MSE Mean Squared Error)即平均平方误差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值