总体思路,还是沿用yolo的检测思路。 Yolo中只是检测了一个个框,那能不能对这一个个框生成对应的mask图呢,肯定是可以的。 因为这些框使用特征层的像素点的anchor来回归的,为什么可以回归,因为框的大小是固定的啊,长度都是4,所以可以回归。但是mask长度不定,当然啊,如果你能够确定每个mask都是用固定数量的点来组成,比如都是30, 那就直接用Yolo来训练即可,但是结果会很粗糙。
所以有另外一点思路上的改进:
将每个框对应的mask图看成是原图在不同特征图上的叠加,然后训练一组参数权重来计算这些叠加最后的图,进行过滤裁剪即可。其实是有道理的,因为在fpn上不同的特征图提取的特征是不一样的,比如有的是背景 ,有的是桌子椅子等,进行不同的权重结合就可以精确的找到桌子和椅子的mask。代码中用的是32张图,这个不是固定的,而是测试出来的。
总结: YOLACT,它摒弃了隐含的特征定位步骤,将实例分割任务拆分成两个并行的子任务:
生成一系列覆盖全图的原型mask;
对每个实例,预测一系列的线性组合系数。最后,在进行推理时,对每一个实例,使用其对应预测出的mask系数,与原型mask简单乘加,然后根据bounding box裁剪,阈值化,即得到每个实例对应的mask。