Fast-SCNN: Fast Semantic Segmentation Network

摘要

编解码器框架在离线语义图像分割领域处于最先进的水平。随着自主系统的兴起,实时计算变得愈发受到青睐。在本文中,我们引入了快速分割卷积神经网络(Fast-SCNN),这是一种针对高分辨率图像数据(1024×2048像素)的实时语义分割模型,适用于在内存较低的嵌入式设备上进行高效计算。在现有的快速分割双分支方法基础上,我们引入了“学习下采样”模块,该模块可同时为多个分辨率分支计算低级特征。我们的网络将高分辨率下的空间细节与低分辨率下提取的深度特征相结合,在Cityscapes数据集上实现了每秒123.5帧的处理速度,平均交并比准确率达到68.0%。我们还表明,大规模的预训练并非必要。我们通过在ImageNet预训练以及Cityscapes的粗标注数据上进行实验,对我们的指标进行了全面验证。最后,我们展示了在对输入进行子采样的情况下,无需对网络做任何修改就能实现更快的计算速度且能得到颇具竞争力的结果。

1. 引言

快速语义分割在实时应用中尤为重要,在这些应用中,需要快速解析输入内容,以便与环境进行灵敏的交互。由于人们对自主系统和机器人技术的兴趣日益浓厚,因此很明显,近期实时语义分割的研究受到了极大的关注[21, 34, 17, 25, 36, 20]。我们要强调的是,实际上往往需要比实时性能更快的速度,因为语义标注通常仅作为其他对时间要求苛刻任务的预处理步骤。此外,在嵌入式设备(无法使用强大的GPU)上进行实时语义分割可能会催生许多其他应用,比如可穿戴设备的增强现实应用。
我们注意到,在文献中,语义分割通常由带有编解码器框架的深度卷积神经网络(DCNN)来处理[29, 2],而许多运行时高效的实现采用双分支或多分支架构[21, 34, 17]。通常情况如下:
• 更大的感受野对于学习对象类别之间的复杂关联(即全局上下文)非常重要;
• 图像中的空间细节对于保留对象边界是必要的;
• 需要特定的设计来平衡速度和准确性(而不是对分类用的DCNN进行重新定向)。
具体在双分支网络中,在低分辨率下采用更深的分支来捕捉全局上下文,而设置较浅的分支在全输入分辨率下学习空间细节。然后通过合并这两个分支来提供最终的语义分割结果。重要的是,由于更深网络的计算成本通过较小的输入尺寸得以克服,且仅在少数几层上采用全分辨率执行,所以在现代GPU上实现实时性能是可能的。与编解码器框架不同的是,双分支方法中不同分辨率下的初始卷积是不共享的。在此值得注意的是,引导上采样网络(GUN)[17]和图像级联网络(ICNet)[36]仅在前几层共享权重,但不共享计算。

在这项工作中,我们提出了快速分割卷积神经网络Fast-SCNN,这是一种实时语义分割算法,它将先前技术[21, 34, 17, 36]中的双分支设置与经典的编解码器框架[29, 2]相结合(图1)。基于初始DCNN层提取低级特征[35, 19]这一观察结果,我们在双分支方法中共享了初始层的计算。我们将这种技术称为学习下采样。其效果与编解码器模型中的跳跃连接相似,但为了保持运行时效率,这种跳跃连接仅使用一次,并且该模块设计得较浅以确保特征共享的有效性。最后,我们的Fast-SCNN采用了高效的深度可分离卷积[30, 10]和逆残差块[28]。
在这里插入图片描述

将Fast-SCNN应用于Cityscapes数据集[6]时,在现代GPU(英伟达Titan Xp(帕斯卡架构))上以全分辨率(1024×2048像素)运行,可实现每秒123.5帧(fps)的处理速度,平均交并比(mIoU)达到68.0%,这比之前的技术(如BiSeNet,其mIoU为71.4%)快一倍[34]。

我们使用了111万个参数,而大多数离线分割方法(如DeepLab[4]和PSPNet[37])以及一些实时算法(如GUN[17]和ICNet[36])所需的参数数量远多于此。Fast-SCNN的模型容量特意保持在较低水平。原因有两点:(i)较低的内存需求使其能够在嵌入式设备上运行;(ii)期望能有更好的泛化能力。特别是,通常建议在ImageNet[27]上进行预训练以提高准确性和泛化能力[37]。在我们的工作中,我们研究了预训练对低容量Fast-SCNN的影响。与高容量网络的趋势相反,我们发现通过预训练或添加额外的粗标注训练数据,结果仅有微不足道的提升(在Cityscapes数据集[6]上mIoU仅提高了0.5%)。
综上所述,我们的贡献如下:

  1. 我们提出了Fast-SCNN,这是一种针对高分辨率图像(1024×2048像素)具有竞争力(mI
### AUTOSAR CAN PDU Specification and Implementation Details #### Definition of CAN PDU A **CAN PDU (Protocol Data Unit)** represents a segment of information that is processed at the protocol layer within the CAN communication stack. According to the definition provided, a CAN hardware object serves as an L-PDU buffer located inside the CAN RAM of the CAN hardware unit/controller[^2]. This implies that PDUs act as buffers holding data intended for transmission over the CAN bus or received from it. #### Structure and Handling of CAN PDUs Within the context of AUTOSAR, different types of PDUs exist such as I-PDUs (Inter-PDU), which carry application-layer messages between ECUs; N-PDUs (Network Layer Protocol Data Units) used in transport protocols like CanTp where segmentation/reassembly occurs; and others depending on specific requirements. For instance, when dealing with J1939 requests through COM and PduR configurations, certain actions need to be taken regarding IPDU group management and routing path setup[^4]. #### Configuration Parameters Related to CAN PDUs Configuration settings play a crucial role in defining how PDUs operate within systems adhering to AUTOSAR standards. In particular, modules like CanTp involve configuring various parameters including those related to SDUs (Service Data Units). Although older versions might have included deprecated fields like `CanTpRxDl` and `CanTpTxDl`, these do not affect current implementations since newer revisions disregard them entirely[^1]. #### Vendor-Specific Customizations Through Attributes To accommodate diverse hardware platforms while maintaining compatibility across vendors' products implementing CAN drivers under AUTOSAR guidelines, unique identifiers named `"VendorId"` along with `"VendorApiInfix"` attribute values serve as means to address distinct driver instances correctly during system integration processes[^3]. ```cpp // Example C++ code snippet showing usage of vendor-specific attributes if ((canDriver->getVendorId() == VENDOR_ID_BOSCH) && (!strcmp(canDriver->getVendorApiInfix(), "BoschAPI"))) { // Specific initialization routine for Bosch CAN driver } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值