惠州市网站建设_网站建设公司_UI设计_seo优化
2026/1/19 18:16:26 网站建设 项目流程

1.总结

先看的YOLOV8的分割原理,在YOLOV8里面第一次了解到了prototypes maks,原型掩码,当时不是非常的明白,这两天看到YOLACT论文,突然明白yolov8 的 prototypes maks 思想,是来自这里。具体yolov8分割流程,可以移步我的另一篇文章:yolov8m-seg详细的网络结构以及内部实现细节(绝对干货)
YOLACT分割的核心内容就是,把实例分割的任务分成了两个并行的任务:

  1. 生成了一个prototypes maks 原型掩码集合;
  2. 使用模型去预测每个实例的mask coefficients,即掩码系数;
  3. 将mask coefficients 和prototypes maks进行线性组合,注意,得到的是全图的mask,全图的,不是单个实例的,这样,然后通过预测的位置位置框,将其crop出来

要想理解YOLACT论文中提出的新的实例mask预测方法,我觉得有必要了解下,以前是怎么做实例分割的,例如二阶的Fast RCNN做实例分割,高度依赖位置特征,这些方法将位置特征重新池化到目标框区域内,通过ROIpool/align,然后将特征喂给mask 估计器,这种方法是顺序的,很难加速。

在进一步了解YOLOACT具体是怎么操作prototypes maks的,根据yolov8的学习经验,这里有几个问题,想先提出来:

  1. yolov8中网络模型学习出来的prototypes maks是32x96x160,整个数据集中的目标实例,都在这个32x96x160上学习自己的系数,不分类别,这种共性的属性,适合所有的类别么?

接下来,可以深入了解下YOLOACT的具体思想了

2.YOLOACT 网络框架


其实前面的总结已经说了很清楚了,那么要实现,就需要增加这两步:

  1. 使用P3层特征,从P5上采样到P4再上采样到P3,然后经过Protonet,获得prototype maks;
  2. 之前的yolo系统,头部分分支用来预测每个anchor框的位置和类别,YOLOACT在此基础上增加了一个分支,用来预测每个anchor框的mask系数,mask系数和第一步的prototype maks线性组合,就是全图的的mask,目标框内的mask,才是该目标的预测的mask。

3.prototype


上图是protonet,会生成k个prototype,论文中说,这个操作和语义分割和相似,仔细想想FCN,确实是,都是从backbone中直接拿特征,然后做卷积,上采样,卷积,再上采样,但是,YOLOACT和语义分割的不同点在于,语义分割是直接对卷积出来的特征直接计算损失函数,而YOLOACT对组装后的最终掩码计算损失。

Mask Coefficients


熟悉yolo框架的,对上图的结构应该很了解,这里就不详细展开说了。

Mask Assembly

实例的mask,是maks 系数的分支,得到的系数,就是prototype的线性组合,我这里再详细展开说下,在yolov8中,prototype mask 是32x96x160,可以理解为生成了32个96x160的原型掩码,后面会分析,每个原型掩码都是不一样的,然后在头部分支上,生成的Mask Coefficients大小为32x5040,5040是anchor框的个数,也就是,每个框,我生成了32个的maks 系数,这32个系数是对32个原型掩码进行线性组合使用的,即32x32x960x160,得到的每个框的maks是960x160,是整个原图的,再通过预测框进行crop,就得到了该实例的mask。

Losses

本论文使用三个损失函数,分别是分类损失、位置损失、mask损失,这三个损失的权重是1,1.5,6.125,分类损失和位置损失,和yolo类似,maks损失,使用像素级别的,二元交叉损失函数。

YOLOACT在论文中也提到了,YOLOACT学习的是一种分布式特征,在这种特征空间中,每个实例通过类别间共享的prototypes原型进行分割,例如yolov8中的原型是32x96x160,

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询