ICNet 是一个既考虑性能,又考虑准确率的分割网络,包含了语义分割和边缘精确分割,因为偶然看到就简单的了解一下,记录下来
论文是: ICNet for Real_time Semantic Segmentation on High Resolution Images,整篇文章都在讲如何在分割的过程中,减少前向计算的时间,同时保证一定的accuracy。
首先提到了目前的Inference time for most popular group of seg nets
可以看到PSPNet, ResNet等,在精确率上很高,但是单张前向计算速度相对很慢,而ENet则速度快而精确度不理想。
ICNet的目标是能在单张检测上达到Real_time的速度,而保证一定的精确率。
ICNet的整个网络如下:
对一张原尺寸的图像进行压缩,1/2, 1/4比例,然后分别进行卷积,再把1/4的feature map 和1/2的做CFF处理,同样把1/2最后一层的Feature map 和原图的进行CCF处理,而原图的卷积则遵守了一般分割网络的特点,即desampling and then upsamping。
大致看了一下论文,原图那一层是用来做语义分析的,而剩下两层则用来作边缘的特征提取。
CCF是Cascade Feature Fusion,也就是特征融合的操作。
看一下三层的效果,用了cityscape的数据集:
整个网络的深度还是可以的:
部署到linux上caffe,from https://github.com/BassyKuo/PSPNET-cudnn5.git, 此版本为CUDA8.0版本,原版只支持7.0
编译了一下,需要Matlab, 或者octive, 以及matio等,需要预先进行安装。
大概的用github上提供的脚本测试了一下速度, 单个GPU Nvidia Titan的速度大约是:44ms/张,速度还是相当快的,后续由于要在CPU上使用,准备对他进行进一步优化