当前位置: 首页 > news >正文

DeepLabv1:空洞卷积+全连接CRF屠榜PASCAL VOC

论文信息

  • 标题:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
  • 会议:ICLR 2015
  • 单位:加州大学洛杉矶分校、Google、CentraleSupélec、INRIA
  • 代码:https://bitbucket.org/deeplab/deeplab-public
  • arxiv:https://arxiv.org/pdf/1412.7062.pdf

一、前言:CNN做分割为啥“糊”?

DCNN在分类、检测乱杀,但一到语义分割就拉胯,核心俩坑:

  1. 下采样太狠:池化+步幅把分辨率干到原图1/32,边界直接磨平
  2. 空间不变性:分类要“鲁棒”,分割要“精准”,天生矛盾

DeepLabv1直接给出双神技

  • 空洞卷积(Atrous Convolution):不降分辨率、不增参数量,扩大感受野
  • 全连接CRF(DenseCRF):把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]=kx[i+rk]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 ki+rk:带空洞的采样位置

通俗解释:卷积核中间插0,不增大尺寸,直接“跳着看”更大区域

3. DeepLabv1对VGG16魔改

  1. 后两个池化层步幅改1,不降分辨率
  2. conv5三层卷积膨胀率=2
  3. FC层转卷积,第一层膨胀率=4
  4. 最终输出步幅=8,用双线性插值上采样回原图

好处:精度不掉,训练10小时搞定,FCN要几天。

4. 核心代码(PyTorch)

# 空洞卷积模块classAtrousConv(nn.Module):def__init__(self,in_channels,out_channels,kernel_size,dilation=1):super().__init__()self.conv=nn.Conv2d(in_channels,out_channels,kernel_size,padding=dilation,dilation=dilation)defforward(self,x):returnself.conv(x)# DeepLabv1 LargeFOV 核心(VGG16改)classDeepLabV1_LargeFOV(nn.Module):def__init__(self,num_classes=21):super().__init__()# 前序VGG16卷积层(省略)...# 原FC6 → 空洞卷积,dilation=12,通道压缩self.fc6_conv=AtrousConv(512,1024,3,dilation=12)self.fc7_conv=nn.Conv2d(1024,1024,1)self.fc8_conv=nn.Conv2d(1024,num_classes,1)self.relu=nn.ReLU(inplace=True)self.dropout=nn.Dropout2d(0.5)defforward(self,x):# 前序VGG16特征提取(省略)...x=self.relu(self.fc6_conv(x))x=self.dropout(x)x=self.relu(self.fc7_conv(x))x=self.dropout(x)x=self.fc8_conv(x)# 双线性上采样×8x=F.interpolate(x,scale_factor=8,mode='bilinear',align_corners=False)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_{i<j} \theta_{ij}(x_i,x_j)E(x)=iθi(xi)+i<jθ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)[w1exp(2σα2∣∣pipj22σβ2∣∣IiIj2)+w2exp(2σγ2∣∣pipj2)]

  • p i p_ipi:像素i坐标
  • I i I_iIi:像素i颜色
  • μ \muμ:Potts模型,不同类罚分
  • σ \sigmaσ:高斯核带宽,控制“相似”范围

通俗解释:位置近+颜色像,就强行归为一类,把CNN的毛边修顺

图 2:飞机的得分图(输入到 softmax 函数之前)和置信图(softmax 函数的输出)。我们展示了每次均值场迭代后的得分(第 1 行)和置信(第 2 行)图。深度卷积神经网络(DCNN)最后一层的输出被用作均值场推理的输入。彩色显示效果最佳。

3. 核心代码(DenseCRF)

importnumpyasnpimportpydensecrf.densecrfasdcrfdefdense_crf_refine(img,logits,num_classes=21):H,W=img.shape[:2]# Softmax转概率probs=np.exp(logits-np.max(logits,axis=0,keepdims=True))probs/=np.sum(probs,axis=0,keepdims=True)# 初始化CRFdc=dcrf.DenseCRF2D(W,H,num_classes)# 一元势:-log(概率)unary=-np.log(probs.clip(1e-5,1.0))dc.setUnaryEnergy(unary.reshape(num_classes,-1))# 二元势:高斯+双边dc.addPairwiseGaussian(sxy=3,compat=3)dc.addPairwiseBilateral(sxy=80,srgb=13,rgbim=img,compat=10)# 均值场推理Q=dc.inference(10)returnnp.argmax(Q,axis=0).reshape(H,W)

出处:论文4.2节 + pydensecrf官方示例

图 3:模型示例。来自深度卷积神经网络(具有全卷积层)的粗略得分图通过双线性插值进行上采样。应用全连接条件随机场来优化分割结果。彩色显示效果最佳。

四、多尺度预测(MSc)

在输入与前4个池化层后接小型MLP,特征拼接融合,增强细节。

  • 新增5组×128通道=640维特征
  • 只训新增层,速度快
  • 提升约1.5% mIOU,不如CRF明显

出处:论文4.3节


五、实验结果:屠榜PASCAL VOC 2012

1. 验证集效果(Table 1(a))

方法平均mIOU(%)
DeepLab59.80
DeepLab-CRF63.74
DeepLab-MSc61.30
DeepLab-MSc-CRF65.21
DeepLab-CRF-7x767.64
DeepLab-CRF-LargeFOV67.64
DeepLab-MSc-CRF-LargeFOV68.70

出处:论文Table 1(a)
分析:

  • CRF一上,直接+4%,边缘精修立竿见影
  • LargeFOV:参数量从134.3M→20.5M,速度×3.36,精度持平
  • 多尺度+CRF+LargeFOV,强强联合

2. 测试集SOTA(Table 1(b))

方法平均mIOU(%)
MSRA-CFM61.8
FCN-8s62.2
TTI-Zoomout-1664.4
DeepLab-CRF66.4
DeepLab-MSc-CRF67.1
DeepLab-CRF-LargeFOV70.3
DeepLab-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/s
DeepLab-CRF4×4412865.1M63.742.90 img/s
DeepLab-CRF-4x44×4822465.1M67.142.90 img/s
DeepLab-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到底牛在哪?

  1. 空洞卷积:不降分辨率、扩大感受野,奠定密集预测基石
  2. 全连接CRF:CNN+概率图,完美解决定位与分类矛盾
  3. LargeFOV:轻量高速,工业界友好
  4. VOC 2012刷到71.6%,开启DeepLab系列传奇

这篇是语义分割必读奠基论文,空洞卷积+CRF的组合思路,至今仍影响着分割、检测、跟踪等任务。

http://www.jsqmd.com/news/679593/

相关文章:

  • 2026Q2三相电容器品牌盘点:低压电容器/功率因数控制器/单相电力电容器/单相电容器/无功补偿器/无功补偿柜/选择指南 - 优质品牌商家
  • 好写作AI:文献综述的“隐形情报官”,专治“读了100篇文献还是没观点”
  • 从图像拼接实战出发:手把手教你用OpenCV暴力匹配+Python搞定多图自动对齐
  • VSCode集成AI编程助手提升开发效率指南
  • Docker 27国产化适配不是选配,是必选项!2024Q3起所有政务云项目强制要求提交《适配证明函》——附3份可直接盖章的模板
  • Vue3项目里别再写回调地狱了!手把手教你用Promise优雅处理异步(附then-fs实战)
  • 如何快速实现Android PDF打印:面向开发者的完整指南
  • MIT 6.858实验避坑指南:手把手教你搞定Buffer Overflow漏洞利用(附完整Shellcode)
  • 告别WINCC自带报表!用Excel VBA做个灵活的电能日报表(附完整源码)
  • 浙江大学毕业论文LaTeX模板:学术写作的终极效率工具
  • 别再纠结位置式还是增量式了!深入对比FPGA中两种PI实现的硬件成本与性能差异
  • 旧电视焕新记:手把手教你用mstar-bin-tool解包康佳LED37R5200PDF固件,实现精简与root
  • 为什么你的MATLAB FIR滤波器总‘丢’数据?深入解析filter函数与线性相位时延的‘爱恨情仇’
  • 告别Flask和Django!用FastAPI + Pydantic 5分钟搞定一个带自动文档的Python API
  • 嵌入式Linux驱动开发避坑:为什么你的platform_driver_register总是不进probe函数?
  • 告别词库迁移烦恼:深蓝词库转换让你轻松在30+输入法间自由切换
  • SPI协议家族简史:从摩托罗拉到Quad SPI,速度是如何一步步翻倍的?
  • RAG应用必看!大文档如何分块?提升检索质量秘籍大公开!
  • 个人开发者福音:5分钟搞定微信测试号申请与Token验证(附Java避坑代码)
  • Etsy机器学习工程师如何优化非标商品推荐系统
  • Windows 11硬件限制终极突破指南:简单三步让老旧电脑重获新生
  • 联邦学习与移动设备融合:隐私保护与AI效能双赢
  • 告别封装向导!用Footprint Expert PRO 22的Designer模式自由绘制任意PCB封装(以Mark点为例)
  • TVA智能体在太阳能电池片隐裂检测中的突破
  • 别再抠语法细节了:高吞吐 Python 系统里,数据结构选对,往往比“微优化”更重要
  • OOD检测指标AUROC/FPR95看不懂?一份给工程师的“人话”解读与PyTorch实现指南
  • 浏览器端深度学习模型部署:TensorFlow.js实战
  • 嵌入式面试别再背八股文了!用STM32+FreeRTOS手把手带你实战项目避坑
  • nli-MiniLM2-L6-H768行业应用:法律文书前提-结论逻辑链自动验证方案
  • 别再死记硬背CAN协议了!用Python+SocketCAN从零搭建你的第一个车载网络模拟器