YOLACT:实时实例分割的突破性方案
YOLACT(You Only Look At CoefficienTs)是一种专为解决实例分割实时性难题而设计的高效算法。该方法通过在现有单阶段(one-stage)目标检测模型上增加掩膜(mask)分支,避免了如Mask R-CNN等两阶段方法中耗时的特征重采样步骤(例如RoI-Align),从而在维持较高精度的同时实现了实时运行速度。其核心理念是将实例分割任务分解为两个更简单的并行子任务,再将结果融合以生成最终掩膜。
接下来,我们将从原理、实现细节、实验结果以及改进版本(YOLACT++)等方面逐步深入介绍。
一、核心方法:双分支并行架构
为了在不引入额外计算开销的条件下生成实例掩膜,YOLACT将实例分割分解为以下两个并行的分支:
- 第一分支(原型掩膜分支,Prototype Mask):采用全卷积网络(FCN)生成一组与整张图像尺寸一致的“原型掩膜(prototype masks)”,这些掩膜不与具体实例关联,而是作为一组基础的掩膜模板。
- 第二分支(掩膜系数分支,Mask Coefficient):在目标检测分支上额外增加一个预测头(head),为每个锚点(anchor)输出一组掩膜系数(mask coefficients)。这些系数用于在原型空间中对每个实例的特征进行编码。
最终,在对所有检测结果执行NMS(非极大值抑制)之后,对于每个实例,将两个分支的结果进行一次线性组合(矩阵乘法 + Sigmoid激活),即可得到该实例的最终掩膜。结构如下图所示:

为何如此设计?——空间相关性的利用
作者指出,掩膜像素之间存在强烈的空间相关性(比如相邻像素更可能属于同一实例)。卷积层天然能够捕捉这种相关性,而全连接层则难以胜任。然而,单阶段检测器通常使用全连接层来预测每个锚点的类别和边界框,无法直接生成具有空间相关性的掩膜。另一方面,两阶段方法(如Mask R-CNN)通过RoI-Align的特征重采样步骤保留了空间信息,但额外的定位层会导致速度下降。
YOLACT的精妙之处在于:将空间相关性的处理分配给两个不同的组件——擅长生成语义向量的全连接层负责输出掩膜系数,而擅长生成空间相关掩膜的卷积层负责生成原型掩膜(prototype masks)。这样一来,既保留了空间信息,又避免了额外的重采样计算。
二、Protonet:生成原型掩膜的FCN网络
Protonet由全卷积网络(FCN)构成,其最后一层输出k个通道,每个通道对应一个类别的原型掩膜(prototype mask)。结构如下:


小提示:
原型掩膜的数量k是一个超参数(通常设为32),它决定了掩膜的表达能力。较大的k能够捕获更多细节,但也会增加计算开销。
三、掩膜生成:两分支的融合
在获得原型掩膜(prototype masks)和每个实例的掩膜系数后,通过以下步骤生成最终的实例掩膜:
- 将原型掩膜(形状为H×W×k)与掩膜系数(形状为n×k,n为实例数量)进行矩阵乘法,得到n个H×W的粗略掩膜。
- 对粗略掩膜应用Sigmoid激活函数,得到像素值在0~1之间的最终掩膜。


常见问题(Q&A)
Q1:为什么YOLACT不需要RoI-Align之类的特征重采样?
A1:因为YOLACT将掩膜生成分解为全局原型掩膜与实例系数的线性组合,原型掩膜已经保留了全图的空间信息,而系数仅负责选择组合方式,因此无需对每个实例单独重采样特征。这种设计使得速度大幅提升。
Q2:掩膜系数是如何与目标检测分支共享的?
A2:掩膜系数由检测头中额外添加的全连接子网络预测,该子网络与类别和边界框预测头并行运行。每个锚点会输出一个长度为k(等于原型掩膜的数量)的向量,即该锚点对应实例的掩膜系数。
四、实验结果
YOLACT在COCO数据集上的性能表现如下(关键指标对比):



常见错误分析
大多数错误来源于目标检测部分(如误分类、边界框对齐不准确),但掩膜生成部分也存在两类典型错误:
- 定位失败:当场景中某处目标过多时,网络无法在原型空间中精确定位每个目标,导致输出更接近前景掩膜,而非具体的实例分割。
- 泄露(Leak):由于裁剪步骤在掩膜集成之后执行,无法过滤裁剪区域外的噪声。当边界框不准确(过大或位置偏移)时,噪声会被裁剪进掩膜,导致掩膜溢出或包含远处的实例。
作者认为,YOLACT与两阶段方法的AP差距主要源于检测器的性能,而非掩膜生成方法本身。
五、YOLACT++:性能进一步提升
YOLACT++是YOLACT的改进版本,在保持实时性的前提下,将精度提升至接近行业顶尖水平(在MS COCO上达到34.1 mAP,33.5 fps)。主要改进方向包括:
- 在骨干网络(backbone)中引入可变形卷积(deformable convolutions);
- 采用更优的锚点(anchor)尺度和比例来优化预测头(prediction head);
- 新增快速掩膜重评分分支(Fast Mask Re-Scoring)。
1. 快速掩膜重评分分支(Fast Mask Re-Scoring)
该分支旨在解决分类置信度与掩膜质量不匹配的问题。它由6层FCN组成(每层包含卷积+ReLU,最后一层为全局池化),以YOLACT输出的裁剪后掩膜(未经阈值处理)作为输入,输出每个类别的掩膜IoU。最终掩膜的评分 = 分类分支预测的类别置信度 × 该类别对应的掩膜IoU。
与Mask Scoring R-CNN相比,该方法具备两大优势:
- 输入为全尺寸图像掩膜(预测框外区域置零),更加高效;
- 不含全连接层,引入的额外耗时仅1.2毫秒。
2. 可变形卷积
在骨干网络中适当位置插入可变形卷积后,mAP提升了1.8,速度仅慢约8毫秒。性能提升的原因:
- 可变形卷积能够自适应地对齐目标实例,处理不同尺度、旋转角度和长宽比;
- 由于YOLACT没有重采样策略,因此一个灵活的空间采样方法显得尤为重要。
注意:插入位置对性能影响较大(详见实验结果图)。
3. 实验结果对比
YOLACT与YOLACT++的对比结果:

各项改进措施带来的性能提升:

可变形卷积在不同插入位置的结果:

常见问题(Q&A)
Q3:YOLACT++相比原始YOLACT在速度上有多大代价?
A3:可变形卷积引入约8毫秒延迟,Fast Mask Re-Scoring仅增加1.2毫秒,整体仍保持在33.5fps,属于实时范畴。
Q4:Fast Mask Re-Scoring分支的输入是什么?为什么是“裁剪过的掩膜”?
A4:输入是YOLACT生成的、经过边界框裁剪但尚未经过阈值处理的掩膜(像素值为连续值)。这样既可以保留掩膜细节,又能利用裁剪区域外的信息(置为零)辅助评估IoU。
六、总结
YOLACT凭借创新的双分支并行架构,成功将实例分割的实时性提升至新的高度。其核心洞察在于:将空间相关性与语义系数分开处理,由卷积网络生成原型掩膜,由全连接网络生成系数,最后通过线性组合得到实例掩膜。这种方法避免了传统两阶段方法的特征重采样瓶颈,实现了速度与精度的良好折衷。而YOLACT++通过引入可变形卷积、优化锚点设计以及添加掩膜评分分支,进一步缩小了与行业顶尖水平的差距,证明了在单阶段框架下同样能够获得高质量的实例分割结果。
小提示:
在实际应用中,如果更注重速度(例如视频流处理),可以优先考虑原始YOLACT;如果需要更高的精度(如自动驾驶感知任务),YOLACT++则是更优的选择。此外,部署时需根据硬件资源调整原型掩膜数量k以及可变形卷积的插入位置。
