点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
后台回复【LVLSET】获取论文和代码!
后台回复【ECCV2022】获取ECCV2022自动驾驶方向所有论文!
后台回复【领域综述】获取自动驾驶全栈近80篇综述论文!
摘要
全监督学习需要大量的标签数据,对分割任务而言,人工标注十分昂贵,因此基于框的弱监督实例分割获得了广泛的关注。本文提出一种新的single-shot框监督实例分割方法,将水平集(level-set)与CNN巧妙地结合起来。具体来说,模型以端到端的方式通过基于连续Chan-Vese能量的函数迭代地学习一系列水平集。本文基于SOLOv2上实现弱监督实例分割。
方法
![4438670a4eeb24b92cceb9d37bf8f9ec.png](https://i-blog.csdnimg.cn/blog_migrate/f9912bcdcc706f0688021ae1ae23b799.png)
算法的整体框架如上图所示。具体来说,基于SOLOv2[48]按位置动态分割目标并预测全图大小的实例Mask,为了促进框监督实例分割,本文将每个实例Mask视为其对应目标的水平集函数 φ。此外,本文利用输入图像和深层特征作为输入来进化水平集,其中使用框投影函数来鼓励网络在每一步自动估计初始水平集 φ0。每个实例的水平集都在框内迭代优化。
图像分割中的水平集模型
首先简单回顾下水平集方法[7, 36, 45],其将图像分割表述为一个连续的能量最小化问题, 在Mumford-Shah水平集模型 [36],给定图像的分割是通过找到参数轮廓来获得的,该轮廓将图像平面划分为N个不相交区域,Mumford-Shah能量泛函如下所示:
![d7ec378ec57a52bc1488431af5bdf346.png](https://i-blog.csdnimg.cn/blog_migrate/613e5899b9295ba0c30b3209b170e996.png)
Chan和Vese[7]后来将 Mumford-Shah泛函简化为变分水平集,目前已经比较成熟[31, 34, 46, 52]。具体可以如下推导:
![f2ad7a5a03c81793ecd6eac7020c176d.png](https://i-blog.csdnimg.cn/blog_migrate/0f04ac0065d27a7822a455ed5043baf3.png)
框监督实例分割
本文提出的方法利用基于Chan-Vese 能量模型[7]的水平集演化,仅使用目标框来实现高质量的实例分割。
目标框内的水平集演化:给定输入图像,目标是通过在边界框内隐式演化水平集来预测目标的边界。SOLOv2将图像划分为S×S个网格,每个网格最多预测一个H×W大小的实例。本文将目标框内的每个正样本视为水平集 φ(x, y),其对应的输入图像 I(x, y) 的像素空间称为 Ω,即 Ω ∈ B。C 是分割边界,其将目标框区域划分为两个不相交的区域,即前景目标和背景。
为了获得每个实例的准确边界,本文通过最小化以下能量函数来学习一系列水平集 φ(x, y):
![14eb0561f6a95456f204862c0bd3c4e8.png](https://i-blog.csdnimg.cn/blog_migrate/6833347c91f472bcc42433e260837d62.png)
与传统的Heaviside函数[7] 不同,sigmoid函数更加平滑,可以更好地表达预测实例的特征,提高训练过程中水平集演化的收敛性。c1、c2定义如下:
![84c75cb56bc0ca8e46f2ef266c286741.png](https://i-blog.csdnimg.cn/blog_migrate/ad955a9fc4a853a0dc64ff61419df09f.png)
能量函数F在训练期间可以使用梯度反向传播进行:
![4002e5da4449eb0638acfa706ade17b8.png](https://i-blog.csdnimg.cn/blog_migrate/d55865d57fe7697c955ce03ea667df67.png)
上述项的最小化可以看作是沿着能量函数下降的隐式曲线演化。实例的最优边界 C 是通过迭代拟合 φi 来最小化能量 F 得到的,如下所示:
![f956378ab81bb2986059f15f82965c81.png](https://i-blog.csdnimg.cn/blog_migrate/44415602636a4753eda6ed9867d511df.png)
输入数据项:输入图像代表了基本的低级特征,包括形状、颜色、图像强度等。然而,这些低级特征通常会随着光照变化、不同的材料和运动模糊而变化,使得水平集演化的鲁棒性降低。除了归一化图像之外,本文还考虑嵌入身侧特征以获取更稳健的结果。为此,本文使用SOLOv2中FPN输出的所有特征进一步提取高阶特征。此外,提取后的高阶特征经过tree filter[27, 41]进行增强,其利用最小生成树来建模长期依赖关系并保留目标结构。
水平集初始化:传统水平集方法对初始化很敏感。本文使用框投影函数[44]以鼓励模型在每一步自动生成初始水平集 φ0 的粗略估计。即将GT投影至x轴和y轴并计算投影差异。
![57135eff52a054652d5571a65e4b0baa.png](https://i-blog.csdnimg.cn/blog_migrate/48eaa3ffa013639645e9692943422410.png)
训练和推理
损失函数:损失函数同SOLOv2一致,包含两项:分类损失和实例损失:
![84eb486cbd081d28c0331203de0617b1.png](https://i-blog.csdnimg.cn/blog_migrate/c95d0e7c11668e0a1db3d7572fb99bad.png)
其中分类损失为Focal Loss,实例损失如下:
![35d97c7aa0266542200ecc24503222ae.png](https://i-blog.csdnimg.cn/blog_migrate/f9eb94991799a4033f44c496bb861057.png)
推理:水平集的进化只用于训练阶段,推理时不需要,因此与原始SOLOv2相同。
实验结果
COCO测试集结果如下:
![ffc89c31330478ce8c01bce0fa0ac42a.png](https://i-blog.csdnimg.cn/blog_migrate/e8228794398a884a69a2fe3b0627fade.png)
Pascal VOC验证集结果如下:
![7a01191f7e35248562b10e8f39d77e99.png](https://i-blog.csdnimg.cn/blog_migrate/142e8f6a47c5c62ab56c75347afe3473.png)
可视化:
![2c8171d28199e7915b1d86adc18a3473.png](https://i-blog.csdnimg.cn/blog_migrate/45da661b7c6e6652db08c033e64c8387.png)
【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D感知、多传感器融合、SLAM、高精地图、规划控制、AI模型部署落地等方向;
加入我们:自动驾驶之心技术交流群汇总!
自动驾驶之心【知识星球】
想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D感知、多传感器融合、目标跟踪)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!