论文信息标题Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs会议ICLR 2015单位加州大学洛杉矶分校、Google、CentraleSupélec、INRIA代码https://bitbucket.org/deeplab/deeplab-publicarxivhttps://arxiv.org/pdf/1412.7062.pdf一、前言CNN做分割为啥“糊”DCNN在分类、检测乱杀但一到语义分割就拉胯核心俩坑下采样太狠池化步幅把分辨率干到原图1/32边界直接磨平空间不变性分类要“鲁棒”分割要“精准”天生矛盾DeepLabv1直接给出双神技空洞卷积Atrous Convolution不降分辨率、不增参数量扩大感受野全连接CRFDenseCRF把CNN的“糙图”精修到像素级边缘一句话总结CNN管分类CRF管抠边速度快、精度炸。二、核心创新1空洞卷积Atrous / Hole算法1. 问题根源标准VGG16一路池化输出步幅32特征太稀疏边界全丢。2. 空洞卷积原理图 1当核大小 3、输入步幅 2 以及输出步幅 1 时一维孔洞算法的示意图。公式1维示意y [ i ] ∑ k x [ i r ⋅ k ] ⋅ w [ k ] y[i] \sum_k x[i r \cdot k] \cdot w[k]y[i]k∑​x[ir⋅k]⋅w[k]y [ i ] y[i]y[i]输出特征第i个位置x xx输入特征图r rr膨胀率空洞大小w [ k ] w[k]w[k]卷积核第k个参数i r ⋅ k i r \cdot kir⋅k带空洞的采样位置通俗解释卷积核中间插0不增大尺寸直接“跳着看”更大区域。3. DeepLabv1对VGG16魔改后两个池化层步幅改1不降分辨率conv5三层卷积膨胀率2FC层转卷积第一层膨胀率4最终输出步幅8用双线性插值上采样回原图好处精度不掉训练10小时搞定FCN要几天。4. 核心代码PyTorch# 空洞卷积模块classAtrousConv(nn.Module):def__init__(self,in_channels,out_channels,kernel_size,dilation1):super().__init__()self.convnn.Conv2d(in_channels,out_channels,kernel_size,paddingdilation,dilationdilation)defforward(self,x):returnself.conv(x)# DeepLabv1 LargeFOV 核心VGG16改classDeepLabV1_LargeFOV(nn.Module):def__init__(self,num_classes21):super().__init__()# 前序VGG16卷积层省略...# 原FC6 → 空洞卷积dilation12通道压缩self.fc6_convAtrousConv(512,1024,3,dilation12)self.fc7_convnn.Conv2d(1024,1024,1)self.fc8_convnn.Conv2d(1024,num_classes,1)self.relunn.ReLU(inplaceTrue)self.dropoutnn.Dropout2d(0.5)defforward(self,x):# 前序VGG16特征提取省略...xself.relu(self.fc6_conv(x))xself.dropout(x)xself.relu(self.fc7_conv(x))xself.dropout(x)xself.fc8_conv(x)# 双线性上采样×8xF.interpolate(x,scale_factor8,modebilinear,align_cornersFalse)returnx出处论文3.1、3.2节 GitHub官方复现三、核心创新2全连接CRF精修边缘1. 为啥普通CRF不行局部CRF只会平滑会把细结构抹掉而我们要恢复边缘。2. 全连接CRF能量函数E ( x ) ∑ i θ i ( x i ) ∑ i j θ i j ( x i , x j ) E(x) \sum_i \theta_i(x_i) \sum_{ij} \theta_{ij}(x_i,x_j)E(x)i∑​θi​(xi​)ij∑​θij​(xi​,xj​)E ( x ) E(x)E(x)整张图的标注损失越小越好θ i ( x i ) \theta_i(x_i)θi​(xi​)一元势CNN给的第i像素类别置信度θ i j ( x i , x j ) \theta_{ij}(x_i,x_j)θij​(xi​,xj​)二元势i、j像素是否该同类二元势用双边高斯核θ i j μ ( x i , x j ) ⋅ [ w 1 exp ⁡ ( − ∣ ∣ p i − p j ∣ ∣ 2 2 σ α 2 − ∣ ∣ I i − I j ∣ ∣ 2 2 σ β 2 ) w 2 exp ⁡ ( − ∣ ∣ p i − p j ∣ ∣ 2 2 σ γ 2 ) ] \theta_{ij} \mu(x_i,x_j) \cdot \Big[ w_1\exp\big(-\frac{||p_i-p_j||^2}{2\sigma_\alpha^2}-\frac{||I_i-I_j||^2}{2\sigma_\beta^2}\big) w_2\exp\big(-\frac{||p_i-p_j||^2}{2\sigma_\gamma^2}\big) \Big]θij​μ(xi​,xj​)⋅[w1​exp(−2σα2​∣∣pi​−pj​∣∣2​−2σβ2​∣∣Ii​−Ij​∣∣2​)w2​exp(−2σγ2​∣∣pi​−pj​∣∣2​)]p i p_ipi​像素i坐标I i I_iIi​像素i颜色μ \muμPotts模型不同类罚分σ \sigmaσ高斯核带宽控制“相似”范围通俗解释位置近颜色像就强行归为一类把CNN的毛边修顺。图 2飞机的得分图输入到 softmax 函数之前和置信图softmax 函数的输出。我们展示了每次均值场迭代后的得分第 1 行和置信第 2 行图。深度卷积神经网络DCNN最后一层的输出被用作均值场推理的输入。彩色显示效果最佳。3. 核心代码DenseCRFimportnumpyasnpimportpydensecrf.densecrfasdcrfdefdense_crf_refine(img,logits,num_classes21):H,Wimg.shape[:2]# Softmax转概率probsnp.exp(logits-np.max(logits,axis0,keepdimsTrue))probs/np.sum(probs,axis0,keepdimsTrue)# 初始化CRFdcdcrf.DenseCRF2D(W,H,num_classes)# 一元势-log(概率)unary-np.log(probs.clip(1e-5,1.0))dc.setUnaryEnergy(unary.reshape(num_classes,-1))# 二元势高斯双边dc.addPairwiseGaussian(sxy3,compat3)dc.addPairwiseBilateral(sxy80,srgb13,rgbimimg,compat10)# 均值场推理Qdc.inference(10)returnnp.argmax(Q,axis0).reshape(H,W)出处论文4.2节 pydensecrf官方示例图 3模型示例。来自深度卷积神经网络具有全卷积层的粗略得分图通过双线性插值进行上采样。应用全连接条件随机场来优化分割结果。彩色显示效果最佳。四、多尺度预测MSc在输入与前4个池化层后接小型MLP特征拼接融合增强细节。新增5组×128通道640维特征只训新增层速度快提升约1.5% mIOU不如CRF明显出处论文4.3节五、实验结果屠榜PASCAL VOC 20121. 验证集效果Table 1(a)方法平均mIOU%DeepLab59.80DeepLab-CRF63.74DeepLab-MSc61.30DeepLab-MSc-CRF65.21DeepLab-CRF-7x767.64DeepLab-CRF-LargeFOV67.64DeepLab-MSc-CRF-LargeFOV68.70出处论文Table 1(a)分析CRF一上直接4%边缘精修立竿见影LargeFOV参数量从134.3M→20.5M速度×3.36精度持平多尺度CRFLargeFOV强强联合2. 测试集SOTATable 1(b)方法平均mIOU%MSRA-CFM61.8FCN-8s62.2TTI-Zoomout-1664.4DeepLab-CRF66.4DeepLab-MSc-CRF67.1DeepLab-CRF-LargeFOV70.3DeepLab-MSc-CRF-LargeFOV71.6出处论文Table 1(b)分析超越FCN等SOTA领先7.2%登顶VOC 2012。3. 感受野/速度对比Table 2方法卷积核输入步幅感受野参数mIOU训练速度DeepLab-CRF-7x77×74224134.3M67.641.44 img/sDeepLab-CRF4×4412865.1M63.742.90 img/sDeepLab-CRF-4x44×4822465.1M67.142.90 img/sDeepLab-CRF-LargeFOV3×31222420.5M67.644.84 img/s出处论文Table 2分析LargeFOV轻量高速精度打平大模型。4. 可视化效果图 4在 VOC 2012-val 数据集上的可视化结果。对于每一行我们展示了输入图像、由深度学习网络DeepLab生成的分割结果以及全连接条件随机场DeepLab-CRF的细化分割结果。我们在最后三行展示了我们的失败模式。请以彩色方式查看效果最佳。分析CNN输出区域准、边缘糊CRF迭代后边缘锐利、细节拉满六、速度与工程亮点空洞卷积全卷积GPU推理8 FPS全连接CRF均值场单图≈0.5秒训练流程CNN训完再调CRF简单稳定双线性上采样替代转置卷积快且无棋盘格伪影出处论文1、3、4节七、总结DeepLabv1到底牛在哪空洞卷积不降分辨率、扩大感受野奠定密集预测基石全连接CRFCNN概率图完美解决定位与分类矛盾LargeFOV轻量高速工业界友好VOC 2012刷到71.6%开启DeepLab系列传奇这篇是语义分割必读奠基论文空洞卷积CRF的组合思路至今仍影响着分割、检测、跟踪等任务。