Snake算法原理(snake算法图像分割方法原理)
实例分割是计算机视觉领域重要任务,广泛应用于自动驾驶、视频分析、图像操作和机器人抓取等领域。但目前大多数方法都是基于逐像素的分割计算,这种类方法不仅会受到bbox不精确的影响,同时还会在后处理过程中耗费庞大的计算量。而基于轮廓的实例分割方法不会受到bbox的限制,并且含有更少的参数量,但已有基于轮廓方法无法完整地探索轮廓的空间拓扑结构,并且大多基于人工优化函数来进行计算。
为了充分探索基于轮廓的实例分割方法,来自浙江大学的研究人员对snake方法进行了有效的改进,通过引入圆卷积结构处理输入轮廓顶点,并基于学习到的特征得到每个顶点需要调整的偏移量以尽可能地准确包围实例,而后通过迭代得到更为精确的轮廓结果。实验表明这种方法可以更加迅速准确地进行实例分割。
在给定初始轮廓的前提下算法抽取每个顶点的图像特征,由于轮廓可视为一个圆形图结构,可以使用圆卷积来获取轮廓特征。上图中的蓝色、黄色和绿色节点分别表示了输入特征、卷积核以及输出特征。最终回归出每个顶点处的偏移量从而调整轮廓逼近目标的边界。
DeepSnake算法的基本原理
DeepSnake的主要功能是通过深度学习给出输入初始轮廓顶点需要调整的偏移量,以得到更为准确的实例分割结果。在对基于轮廓的实例分割方法研究过程中,发现物体的轮廓其实是一个圆形的图结构,其中每个顶点都有两条边连接相邻的顶点,这意味着可以利用一维卷积来对顶点特征进行学习。由于闭合的轮廓可以视为周期性结构,于是研究人员引入了圆卷积来处理。与通常的图卷积方法不同,圆卷积核不仅可以编码每个顶点的特征还能编码临近顶点间的关系,具有更强的表达能力。
传统的snake算法将轮廓的顶点坐标视为一系列变量,并优化这些变量的能量函数来迭代顶点坐标。通过有效的能量函数设计,理论上可以将轮廓优化到目标边界上。但由于基于手工设计的能量函数一般都是非凸的,轮廓的优化过程易于陷入居于最优解。与之不同的是,DeepSnake则直接从数据中学习出目标的边界轮廓。对于包含N个顶点的轮廓{xi | i=1,…,N},首先为每个顶点建立特征矢量。这一特征矢量为fi=[F(xi); x’i ],其中前半部为基于CNN从输入图像上学习到的特征图,而后一个则是通过变换后得到的旋转不变坐标。
在得到每个点的特征矢量后,DeepSnake便利用圆卷积进行特征学习,下图显示了圆卷积的基本过程。
蓝色顶点通过黄色卷积核的作用得到了绿色的特征输出,输出特征与输入顶点特征的长度相同。在实验中圆卷积的核大小被设置为9.
轮廓上的特征可以被视为一维离散信号并可利用标准卷积进行处理。为了避免破坏轮廓的拓扑结构,研究人员将轮廓上的特征视为周期性信号:
并提出了下面的圆卷积方法来学习特征,其中的k为圆核函数:
与常见的卷积算法类似,这种圆卷积方法可以方便地提取顶点特征并集成到相应的网络结构中。在圆卷积进行特征学习后,DeepSnake利用1x1卷积层对每个顶点的输出特征进行处理,为每个顶点预测出与目标轮廓间的偏移量,这一偏移量将用于调整轮廓形状不断逼近目标。
这种算法比一般的图卷积方法可以更好的探索轮廓的圆形结构特征,更重要的是他具有目标级别的结构预测能力,特别是对于那些初始化时远离目标位于背景上的顶点来说,这种方法可以更为有效的预测出需要调整的偏移量。而标准的CNN则由于初始化顶点归属物体的不确定性,难以预测出较为准确的偏移量。
上图显示了DeepSnake的基本网络架构,其中包含了三个重要的部分。第一部分为主干部分,包含了8个圆卷积层和相应的残差连接;第二部分为融合部分,融合了多尺度的轮廓信息,随后与主干信息叠加送入到最后的预测部分;第三部分预测模块由1x1卷积构成,用于预测逐顶点需要调整的偏移量。
完整的实例分割流程
在拥有了可以调整顶点位置,预测偏移量的DeepSnake算法后就可以构建出完整的实例分割框架了。下图展示了从输入图像、轮廓初始化到最终预测偏移量和计算轮廓结果的过程。
本文地址:百科问答频道 https://www.neebe.cn/wenda/903056.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!