本文主要是介绍实时语义分割--ICNet for Real-Time Semantic Segmentation on High-Resolution Images,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
github代码:https://github.com/hszhao/ICNet
语义分割算法精度和速度对比:
由图可以看出,ResNet38,PSPNet,DUC精度虽然较高,但是无法速度相对较慢,无法达到实时,ENet速度较快,但精度较低,而本文算法既可以达到实时,精度也相对较高.
Speed Analysis
PSPNet50的处理不同大小的输入图像所需时间:
图中,stage5的卷积核个数为stage4的两倍,由图可知,当输入图像尺寸增加时,卷积核越多,时间增长程度越大,运行时间与输入图像大小成正比.
加速方案
文章分别分析了三种可行的加速方案的可行性.
方案(1):输入下采样
如图3所示,下采样尺度为0.25,时间较少,但是得到的f分类结果太粗略,很多小的,重要的细节没有分类出来;尺度为0.5时,相对能分类出更多的物体,但是远处的人和交通等仍然没有分类出来;而且需要时间太多,无法达到实时.因此考虑方案(2).
方案(2):特征下采样
除了直接对输入图像下采样,另一种直接的方法是对feature map下采样.文献19的FCN网络对feature map下采样32次,DeepLab(文献2) 8次.为了验证特征下采样效果,测试下采样率分别为1:8,1:16,1:32次的效果,如表1.
然而,采样率为1:32时,时间仍需要131ms,仍然无法实时.
方案(3):模型压缩(Model Compression)
采用文献13的模型压缩方案,对于每个滤波器,首先计算滤波核权重weights的L1的和;然后,对L1和进行降序排序,仅保留前k个更有意义的值.试验对比如表2所示.
虽然仅仅保留了一部分核权值,如Rates为0.25时,运行时间仍然需要72ms,时间仍然太长,而且精度下降很多.
ICNet
以上分析证明,要设计实际的实时分割网络是非常困难的,采用下采样输入图像虽然可以减小运行时间,但预测结果会丢失很多细节信息,直接输入图像,又需要很多运行时间.因此本文提出图像级联网络(Image Cascade Network,ICNet),ICNet网络结构如下:
网络输入从上到下,分别为三个尺度的下采样图像,scale值分别为1/4,1/2,1,分别定义为Low Resolution,Median Resolution,High Resolution(低分辨率,中分辨率,高分辨率)图像.
Low Resolution
分支1,如图4中,第一行,低分辨率图像输入到一个FCN-based PSPNet 结构,网络输出为原始输入的1/32大小的feature maps.
Median Resolution
分支2,如图4中,第二行,低分辨率图像输入到3个卷积层,downsampling rate 8,网络输出为原始输入的1/16大小的feature maps.1/16的feature maps和1/32的feature maps通过CFF(cascade feature fusion)单元聚合,得到输出为1/16的feature map.
High Resolution
分支3,如图4中,第二行,低分辨率图像输入到3个卷积层(卷积核为 3×3 ,stride=2),downsampling rate 8,网络输出为原始输入的1/8大小的feature maps.1/8的feature maps和1/16的feature maps通过CFF(cascade feature fusion)单元聚合,得到输出为1/8的feature map.
在训练的时候,在每个分支中,引入不同分辨率的真实label图像,即辅助学习策略,并在测试的时候去掉这些模块.
CFF(cascade feature fusion)
CFF模块结构如下:
图中,F1,F2分别为输入feature maps,且F2大小为F1的两倍.LABEL为ground truth label.首先对F1 upsampling到与F2同样大小,再对其进行dilated convolution,卷积核为 3×3 ,dilations=1,并将输出值与F2 sum,relu,得到输出特征 F′2 .为了增强学习过程,引入辅助学习,辅助loss权重为0.4.
训练
整体损失函数为:
这篇关于实时语义分割--ICNet for Real-Time Semantic Segmentation on High-Resolution Images的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!