[Paper Reading] DeepLab v1 & v2

本文深入探讨了DeepLab系列模型在语义分割任务中的应用,包括如何通过修改卷积层的步长和引入空洞卷积来提高特征图的密度,以及如何利用全连接条件随机场进行后处理以增强分割效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DeepLab V1:SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONALNETS AND FULLY CONNECTED CRFS


Background:
       CNN的一个特性是invariance(不变性),这个特性使得它在high-level的计算机视觉任务比如classification中,取得很好的效果。但是在semantic segmentation任务中,这个特性反而是个障碍。毕竟语义分割是像素级别的分类,高度抽象的空间特征对如此low-level并不适用。
    所以,要用CNN来做分割,就需要考虑两个问题,一个是feature map的尺寸,以及空间不变性。


Solution:
    对于第一个问题,回忆一下之前的FCN,FCN通过反卷积层(现在反卷积层似乎有了更好的叫法,但是这里暂时沿用反卷积这个名字)将feature map还原到原图尺寸。
    可是feature map为什么会变小呢?因为stride的存在。于是DeepLab就考虑,我直接把stride改成1,feature map不就变大了吗。将stride改小,确实能得到更加dense的feature map这个是毋庸置疑的,可是却也带来了另外一个问题即receptive field(RF)的改变问题。receptive field是直接和stride挂钩的,即

RFi+1 = RFi + (kernel-1)*stride (i越小越bottom)

    按照公式,stride变小,要想保持receptive field不变,那么,就应该增大kernel size。于是就有了接下来的hole算法。

    (P.S.:理论上来说,在pooling layer和convolution layer改变stride都是可以的,以下图示以pooling layer为例,PPT做的图比较粗糙= =)

    一开始,pooling layer stride = 2,convolution layer kernel size = 2,convolution layer第一个点的receptive field是{1,2,3,4},size为4

    

    为了得到更加dense的feature map,将pooling layer stride改为1,如果这个时候保持convolution layer的kernel size不变的话,可以看到,虽然是更dense了,可是不再存在RF = {1,2,3,4}的点了。

    

    当采用hole算法,在kernel里面增加“hole”,kernel size变大,相当于卷积的时候跨过stride减小额外带来的像素,RF就保持不变了,当然如果调整hole的size还能得到比原来更大的RF。

    

    这个扩大后的卷积核直观上可以以通过对原卷积核填充0得到,不过在具体实现上填0会带来额外的计算量,所以实际上是通过im2col调整像素的位置实现的,这里不展开,有兴趣的可以看看caffe源码(hole算法已经集成在caffe里了,在caffe里叫dilation)
    于是,通过hole算法,我们就得到了一个8s的feature map,比起FCN的32s已经dense很多了


    对于第二个问题,图像输入CNN是一个被逐步抽象的过程,原来的位置信息会随着深度而减少甚至消失。Conditional Random Field (CRF,条件随机场)在传统图像处理上的应用有一个是做平滑。CRF简单来说,能做到的就是在决定一个位置的像素值时(在这个paper里是label),会考虑周围邻居的像素值(label),这样能抹除一些噪音。但是通过CNN得到的feature map在一定程度上已经足够平滑了,所以short range的CRF没什么意义。于是作者采用了fully connected CRF,这样考虑的就是全局的信息了。
    
    另外,CRF是后处理,是不参与训练的,在测试的时候对feature map做完CRF后,再双线性插值resize到原图尺寸,因为feature map是8s的,所以直接放大到原图是可以接受的。


DeepLab V2:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

    v1之后,Liang-Chieh Chen很快又推出了DeepLab的v2版本。这里就简单讲讲改进的地方。

    Multi-scale对performance提升很大,而我们知道,receptive field,视野域(或者感受野),是指feature map上一个点能看到的原图的区域,那么如果有多个receptive field,是不是相当于一种Multi-scale?出于这个思路,v2版本在v1的基础上增加了一个多视野域。具体看图可以很直观的理解。

    



    rate也就是hole size

    这个结构作者称之为ASPP(atrous spatial pyramid pooling),基于洞的空间金字塔
    此外,DeepLab v2有两个基础网络结构,一个是基于vgg16,另外一个是基于resnet101的,目前性能是benchmark上的第一名。
### DeepLab 技术原理分析 DeepLab 是一种基于深度学习的语义分割方法,其核心目标是通过改进卷积神经网络的设计来提升像素级分类任务的表现。以下是关于 DeepLab 系列算法的技术原理及其相关资源的信息: #### 1. **DeepLab 的核心技术** DeepLab 使用空间金字塔池化模块 (ASPP, Atrous Spatial Pyramid Pooling) 来捕获多尺度上下文信息[^1]。这种方法能够有效应对对象大小变化的问题,同时减少计算开销。 - ASPP 结合了多个不同扩张率的空洞卷积 (Atrous Convolution),从而在不增加额外参数的情况下扩展感受野。 - 此外,DeepLab 还采用了批量归一化 (Batch Normalization) 和残差连接 (Residual Connections) 等技术以进一步优化性能。 #### 2. **DeepLab 论文获取方式** 要查找与 DeepLab 相关的论文全文下载链接,可以通过以下途径获得: - **Google Scholar**: 输入关键词 “DeepLab” 可找到原始研究文章及后续版本(如 DeepLab-v3+, v4)。每篇论文通常附带 PDF 下载选项。 - **ArXiv.org**: 如果作者已将预印本上传至 Arxiv,则可以直接访问并免费阅读文档。 下面是一个简单的 Python 脚本来演示如何利用 `requests` 库抓取网页上的 DOI 或其他元数据以便追踪学术资料的位置: ```python import requests from bs4 import BeautifulSoup def fetch_paper_info(query): url = f"https://scholar.google.com/scholar?q={query}" headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.content, "html.parser") results = [] for item in soup.select('.gs_ri'): title = item.find('h3').text.strip() link = item.find('a')['href'] snippet = item.find(class_='gs_rs').text.strip() if item.find(class_='gs_rs') else '' result = { 'title': title, 'link': link, 'snippet': snippet[:100]+'...' # Truncate long texts. } results.append(result) return results papers = fetch_paper_info("DeepLab") for paper in papers: print(f"{paper['title']}\n{paper['link']}\nSnippet:{paper['snippet']}\n---\n") ``` 此脚本会返回一系列匹配项,包括标题、摘要以及指向完整版或摘要页面的 URL 地址。 #### 3. **应用领域拓展** 除了传统的图像分割任务之外,DeepLab 的理念也被广泛应用于视频处理、自动驾驶等领域。例如,在无人驾驶汽车感知系统中,实时道路场景解析依赖高效精准的目标检测器和分段机制。 --- ###
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值