相比于图像语义分割,视频语义分割具有高帧数(15-30帧/s),前后帧之间高相关性的特点。并且在自动驾驶任务中,对RGB摄像头传入的视频帧信号处理具有很高的实时性要求,因此针对视频语义分割任务来讲,需要在图像语义分割的任务上做进一步的工作。
如何有效利用视频帧之间的时序相关性将对视频分割结果产生很大影响,目前主流分为两派,一类是利用时间连续性增强语义分割结果的准确性,另一种则关注如何降低计算成本,以达到实时性要求。接下来的文章内容就根据近几年针对视频语义分割所进行的优秀工作进行简单阐述。
Improve the accuracy
1.STFCN: Spatio-Temporal FCN for Semantic Video Segmentation
本篇论文是在FCN的基础上进行改进的,利用LSTM将FCNs并联成为一个叫做时空卷积网络的结构(spatio-temporal CNNs)。
论文主要贡献:
1.该方法提升了原有的语义分割结果。
2.提出一种结合时间特征与空间特征的端到端架构。
论文想法比较简单,对于时序特征的处理也选择了经典的LSTM,整篇论文写的中规中矩,个人觉得没什么亮眼的地方(或者我没看出来)。
论文不足:
1.没有充分利用帧与帧之间的相关性,由于摄像机采样频率很高的话,会导致相邻帧之间差异很小,所以对每一帧都进行处理会浪费计算资源。
2.模型过于复杂,无法达到实时的要求。
2.Semantic Video Segmentation by Gated Recurrent Flow Propagation(基于门控递归流传播的语义视频分割 )
在视频语义分割问题当中,还有一个无法避免的问题就是确少高质量的标注数据,因为视频任务数据量大(假设一秒30帧,一分钟的数据就是1800帧)而语义分割的数据标注极为繁琐耗时(大约30分钟可以标注一张)。因此,如何有效利用视频语义分割任务中少量高质量标注数据集达到好的分割效果也是一个很好的研究方向。针对少量标注样本问题,主要解决方案就是进行弱监督或者半监督学习,弱监督学习方法不适用完整标注数据集进行训练,而是使用大量的分类或者检测数据集进行训练,从而减少标注成本提高分割准确率;半监督学习则是使用少量标注数据集训练网络以求得到一个较好的泛化模型,在视频语义分割任务当中就是关键帧提取,只针对视频中少量关键帧的标注数据进行训练,使模型适用于整个视频流。
在本篇论文中,作者设计了一个叫做Spatio-Temporal Transformer Gated Recurrent Unit(不会翻译)的单元来融合各帧信息,作者认为相邻两帧之间包含大量冗余信息,但是两帧之间差异较大(漂移形变)的区域包含的信息将十分有意义,作者使用了光流来衡量漂移形变比较明显的区域。
该网络使用标注帧的前后相邻几帧的特征对当前帧的特征进行修正,具体训练方法可以细读论文。
3.Video scene parsing with predictive feature learning(PEARL)
这篇文章是融合了单帧的信息与temporal context信息得到更好的测试结果。作者开篇酒就用三行结果把论文思想讲的很清楚了,四行图片中,第一行为输入的四帧相邻图片。
第二行为单独对每一帧进行语义分割得到的结果,可见红框标示的区域用很多不一致的内容。
为了利用temporal信息的连续性改善分割结果,作者共进行了三个部分的主要工作:
1.Predictive Feature Learning: 在这部分中,作者利用时序信息进行了unsupervised pre-training,即输入连续的4帧图片,去预测接下来一帧的内容。通过这样的预测,可以使这样的网络学习到时序上的连续性,并使用这样的信息进行预测。网络结构上标准的GAN做法,唯一区别在于generator其实是一个conditional generator,即需要输入前4帧图片。所以genetator基于现有常见网络结构,只是在其上增加一个输出层。在loss设计方面,一方面是要求输出的图像和下一帧l2距离接近,另一方面训练了一个discriminator来判断当前图像是真实的还是网络预测的。优化目标即要最小化l2距离,并迷惑discriminator真假。
2.Predictive Parsing: 在这部分中,作者使用在前面步骤中学到的Encoder预测下一帧的特征来预测下一帧的分割结果。所以在原网络结构上去掉了discriminator,加上了新的decoder输出分割结果(上图第三行)。可见,单纯通过预测得到的结果可以保持良好的一致性,但是和单帧预测比起来会失去节信息。所以需要将这两种方法结合。
3.将预测结果和当前帧分割结果结合起来,得到最终的分割结果。
上图中的第四行。
虽然本文需要用到GAN网络进行特征预测,但考虑到GAN网络可以离线训练,因此实际应用当中并不需要消耗大量计算资源,根据作者的描述,处理一张1024*2048的图片只需要0.8s,但还远远达不到实时的要求。
启发:
1.使用GAN进行数据增强可以得到较好的效果,或者利用GAN做一些出色的工作。
2.如何更高效的利用相邻视频帧之间的一致性还值得深入思考。
4.Semantic Video CNNs through Representation Warping
也是一篇利用相邻帧之间的光流场来进行模型优化的工作,以较小的计算量增加为代价来提升性能,适用于许多基于CNN的网络架构。作者把这项技术称为NetWarp,用来对CNN网络中的中间层进行进行优化。
启发:
1.传统的计算机视觉发放(光流、角点检测、边缘检测方法等)可能会对深度学习方法有帮助,如何结合经典方法与深度学习是一个值得思考的方向。
2.深度学习模型中,相邻帧之间的特征在模型中的表达相差并不大,尤其是高层特征,如何利用这个特点减少计算量?
关于利用帧间相关性信息进行语义分割的优秀文章还有很多,但其实在自动驾驶任务中,对实时性的要求可能更高一些,因此接下来介绍几篇解决实时性问题的文章。
祝好!愿与诸君一起进步。