本文为 AI 研习社编译的技术博客,原标题 : ENet — A Deep Neural Architecture for Real-Time Semantic Segmentation 作者 | Arunava 翻译 | callofduty890 校对 | 酱番梨 审核 | Pita 整理 | 立鱼王 原文链接: https://towardsdatascience.com/enet-a-deep-neural-architecture-for-real-time-semantic-segmentation-2baa59cf97e9 注:本文的相关链接请点击文末【阅读原文】进行访问
Fig 1. A conversation between a semantic segmented guy and a toon
这是该论文的论文摘要:
ENet:用于实时语义分割的深度神经网络体系结构
作者:Adam Paszke
论文:https://arxiv.org/abs/1606.02147
ENet(高效神经网络)提供了实时按像素进行语义分割的能力。 ENet的速度提高了18倍,FLOP要求减少了75倍,参数减少了79倍,并且为现有模型提供了类似或更好的精度。 在CamVid,CityScapes和SUN数据集上测试。
图3. ENet架构
以上是完整的网络架构。
它分为几个阶段,由表格中的水平线和每个块名称后的第一个数字突出显示。 报告输出尺寸为输入图像分辨率512 * 512
图4. ENet的每个模块都有详细说明
视觉表现:
- 初始模块是(a)中所示的模块 - 并且瓶颈模块显示在(b)
每个瓶颈模块包括:
- 1x1投影,降低了维度 - 主卷积层(conv)( - 常规,扩张或完整)(3x3) - 1x1扩展 - 并且它们在所有卷积层之间放置批量标准化和PReLU
如果瓶颈模块是下采样,则将最大池化层添加到主分支。 此外,第一个1x1投影被替换为2x2卷积,stride = 2。
它们将激活无填充以匹配要素图的数量。 conv有时是不对称卷积,即5 * 1和1 * 5卷积的序列。 对于正则化器,他们使用Spatial Dropout: - 在瓶颈2.0之前p = 0.01 - 完成之后p = 0.1 所以,
还有一些事实:
- 他们没有在任何预测中使用偏见项 - 在每个卷积层和激活之间,它们使用批量标准化 - 在解码器中,MaxPooling被MaxUnpooling取代 - 在解码器中,Padding被替换为Spatial Convolution而没有偏差 - 在最后一个(5.0)上采样模块中不使用池化索引 - 网络的最后一个模块是一个裸完全卷积,它占据了处理时间的大部分解码器。 - 每个侧支有一个空间丢失,第1阶段p = 0.01,之后阶段p = 0.1。
对ENet的表现进行了基准测试
- CamVid(道路场景) - CityScapes(道路场景) - SUN RGB-D(室内场景)
使用SegNet [2]作为基线,因为它是最快的分割模型之一。 使用cuDNN后端使用Torch7库。 使用NVIDIA Titan X GPU以及NVIDIA TX1嵌入式系统模块记录推理速度。 输入图像大小为640x360,速度超过10fps。
图5.使用SegNet作为基线的两个不同GPU的推理时间比较
图6. SegNet和ENet的硬件要求
自定义类权重方案定义为
图7所示。自定义类权重方案的公式
其中c = 1.02 并且类权重被限制在[1,50]的区间内
图8. CityScapes数据集的性能
图9. CamVid数据集的性能
A. Paszke, A. Chaurasia, S. Kim, and E. Culurciello. Enet: A deep neural network architecture for real-time semantic segmentation. arXiv preprint arXiv:1606.02147, 2016.
V. Badrinarayanan, A. Kendall, and R. Cipolla, “Segnet: A deep convolutional encoder-decoder architecture for image segmentation,” arXiv preprint arXiv:1511.00561, 2015.
我最近还转载了这篇论文,可以在这里找到:
https://github.com/iArunava/ENet-Real-Time-Semantic-Segmentation