计算机系统应用教程网站

网站首页 > 技术文章 正文

实时语义分割ENet算法,提取书本/票据边缘

btikc 2024-08-31 17:14:56 技术文章 9 ℃ 0 评论

1.概述

ENet(Efficient Neural Network)是一种专为实时语义分割任务设计的深度神经网络架构。与SegNet相比,ENet在尺寸和推理时间上都有显著的优势,同时能够提供相当或更好的准确性。

尺寸方面,ENet的设计注重减少模型的参数数量和计算复杂度。SegNet的架构相对对称,包含大量的参数,而ENet则采用了一种大型编码器与小型解码器的组合,这种设计哲学基于一个观点:解码器的主要作用是对编码器的输出进行上采样,并微调细节,而这并不需要一个复杂的结构。因此,ENet的参数数量大幅减少,仅为0.7MB,这使得整个网络可以适配在嵌入式处理器的快速片上内存中,从而显著降低了硬件要求。

论文地址:https://arxiv.org/abs/1606.02147


2.网络架构

ENet的网络架构是一个高度优化的结构,旨在实现高效的实时语义分割。它的设计考虑了计算效率和内存使用,同时保持了优秀的分割性能。下面是对ENet网络架构的详细描述:


2.1 Initial模块

Initial模块是整个网络的起始部分,它接收原始输入图像并开始构建特征图。这个阶段使用最大池化和卷积层来减少图像的空间维度,同时增加网络的深度。


2.2 Bottleneck模块

每个bottleneck模块由三个卷积层组成:


1×1投影卷积:这个卷积层用于减小通道数目,为后续的主卷积层做准备。

主卷积层:这是模块的核心,可以是标准卷积、空洞卷积或完全卷积。在原始论文中,这些卷积层被描述为具有3×3卷积核的conv操作。

1×1扩展卷积:这个卷积层用于将通道数目扩展回原来的大小,以便于与其他特征图进行合并。

在这些卷积层之间,使用批量归一化(Batch Normalization, BN)和PReLU激活函数。如果bottleneck模块负责下采样,那么会在主分支上添加一个最大池化层,并且第一个1×1投影卷积会被一个步长为2的2×2卷积替换,以匹配特征图的数量。

2.3 编码器和解码器

编码器:由前三个阶段组成,每个阶段包含多个bottleneck模块。这些阶段的目的是通过连续的卷积和池化操作提取图像的特征。

解码器:由后两个阶段组成,它们使用上采样和空间卷积操作来重建图像,并生成最终的分割结果。

2.4 特殊设计

空间Dropout:为了正则化和防止过拟合,ENet在bottleneck2.0之前使用0.01的Dropout比率,在之后使用0.1的Dropout比率。

无偏置的投影卷积:为了降低卷积的调用和内存溢出,投影卷积中没有偏置项,这一点对准确率没有影响。

max uppooling:在解码器中,最大池化被max uppooling操作所取代,这样可以与后续的空间卷积更好地结合。

空间卷积:padding被空间卷积所取代,这有助于更好地控制上采样过程中的特征图大小。

2.5 性能优化

最后一个全卷积模块:出于性能考虑,ENet决定仅将全卷积作为网络的最后一个模块。这个模块单独占用了解码器处理时间的相当一部分,但为了保持实时性能,这是一个必要的权衡。

3.设计选择

3.1 特征图分辨率的权衡

在语义分割任务中,特征图分辨率的调整是一个双刃剑。一方面,降低分辨率可以减少计算负担,提高处理速度;另一方面,这可能导致空间信息的损失,影响分割的精确度。为了平衡这两个方面,ENet借鉴了SegNet的策略,通过索引保存和稀疏上采样技术,有效地减少了内存消耗,同时尽可能地保留了空间细节。

3.2 空洞卷积的应用

空洞卷积(Dilated Convolution)作为一种能够增大感受野的技术,对于提高模型对上下文信息的捕捉能力至关重要。在复杂的视觉场景中,如道路环境中的行人和骑行者识别,空洞卷积使得模型能够更好地理解对象与其周围环境的关系。ENet的实验结果表明,空洞卷积在提高分割精度方面起到了关键作用。

3.3 早期下采样的策略

ENet的早期下采样策略体现了对计算资源的精细管理。通过在网络的初始阶段大幅度减小输入尺寸,ENet有效地降低了后续层的计算负担。这种策略基于一个核心假设:视觉信息在空间上存在高度的冗余性,可以通过更紧凑的表示形式进行编码。这一策略的成功实施,为后续的特征提取和上采样操作奠定了坚实的基础。

3.4 编码器与解码器的结构优化

ENet的编码器-解码器架构经过精心设计,以确保编码器能够充分提取图像特征,而解码器则专注于恢复这些特征以实现精确的像素级预测。这种不对称的结构设计反映了两个部分在任务中的不同重要性,同时也减少了模型的参数数量,提高了整体的运行效率。

3.5 非线性激活函数的优化

在ENet中,传统的ReLU激活函数被PReLU所取代,这一改变基于对网络行为的深入分析。PReLU允许每个特征图独立学习非线性斜率,提供了更大的灵活性和适应性。这种激活函数的选择不仅提高了模型的表达能力,还有助于在不同的网络层中实现更精细的信息处理。

3.6 信息保存维度的创新

ENet在信息保存维度上采用了创新的策略,通过并行执行池化和卷积操作,并连接结果特征图,显著提高了模型的推理速度。这种策略的实施,不仅优化了信息流,还减少了信息的丢失,提高了分割的准确性。

3.7 分解卷积的计算优化

ENet通过将大的卷积核分解为多个小的卷积核,有效地减少了模型的参数数量和计算复杂度。这种分解策略不仅提高了模型的运行速度,还通过增加非线性层,增强了模型的表达能力。

3.8 空洞卷积的性能提升

空洞卷积在不增加计算负担的情况下,显著提高了模型的感受野。这种技术的应用使得ENet在保持分辨率的同时,能够捕捉到更广泛的上下文信息,从而提高了分割的精度。

3.9 正则化技术的探索

在面对小规模数据集时,ENet通过空间Dropout技术有效地防止了过拟合。这种正则化方法不仅提高了模型的泛化能力,还通过随机丢弃部分特征图,增加了模型的鲁棒性。

4.效果展示

完整项目代码获取地址:

关注微信公众号 datayx 然后回复 enet 即可获取。



5.实验结果

推理时间:

硬件要求:


基准测试:

Cityscapes:

ENet在类别IoU(类别间交叉验证)、iIoU(实例间交叉验证)以及整体类别IoU方面均优于SegNet。

CamVid:

SUN RGB-D:准确性的差异不应掩盖这两个网络之间巨大的性能差距。ENet可以实时处理图像,比嵌入式平台上的SegNet快近20倍。

这些性能指标的比较揭示了ENet在语义分割任务的几个关键评估领域中展现出更优的性能。具体来说,ENet在类别IoU方面的表现超过了SegNet,这意味着ENet在识别和分割不同类别的像素时更为准确。类别IoU是一个衡量模型在特定类别上分割精度的指标,它通过计算预测的分割区域与真实标注之间的重叠程度来评估模型的性能。

此外,ENet在iIoU方面也展现了更好的结果,这表明ENet在处理实例级别的分割任务时同样表现出色。实例分割不仅需要识别图像中的不同类别,还需要区分属于同一类别的不同实例,这对于理解复杂场景中的个体对象非常重要。

最后,整体类别IoU的提升进一步证实了ENet在整体分割性能上的优势。这一指标综合考虑了所有类别的分割结果,提供了模型整体性能的一个全面评估。

这些结果表明,ENet在处理语义分割任务时,不仅在单个类别上表现出色,而且在整体分割精度上也超越了SegNet。这使得ENet成为实时语义分割应用中一个非常有力的竞争者,尤其是在需要高精度分割结果的场景中。

6.总结

ENet所提出的这一创新神经网络架构,专为语义分割任务量身打造,其核心设计理念在于充分发挥嵌入式设备上有限资源的潜力。在这一目标的指引下,ENet的工作取得了显著的成效,不仅成功实现了与现有技术相比更为高效的计算性能,而且在某些情况下,还实现了与之相匹配甚至更优的结果,即便这些现有技术对计算能力和内存的需求远高于ENet的设计。

ENet在NVIDIA TX1硬件平台上的应用展示了其实时、便携的嵌入式解决方案的强大实力。这一平台的高效性能不仅适用于移动设备,ENet的实验还表明,即使在如NVIDIA Titan X这样的高端GPU上,ENet同样能够发挥出色的效果。这一点在需要处理大量高分辨率图像的数据中心级应用中尤为重要,因为ENet能够以更快、更高效的方式执行大规模的计算任务,从而可能为企业节省大量的成本。

ENet不仅在嵌入式设备上提供了实时语义分割的可能性,而且在高性能计算平台上也展现了其强大的计算能力。这种跨平台的高效性能,使得ENet能够适应各种不同的应用场景,从移动设备到数据中心,都能提供准确、快速的语义分割服务。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表