聊聊yolact

Yolact系列文章很多

Yolact

Yolact++

Yolactedge   https://arxiv.org/pdf/2012.12259.pdf

 

 yolact的结构

如果就看feature backbone+feature pyramid+prediction head+NMS和所有的ssd或者yolo一样,就是平平无奇的object detection, 事实上,只有在分割这个领域有语义分割和实例分割,在人家目标检测这个行当里面吧,都是实例检测,没有语义检测,因为一个物体就要框一个框嘛,人家也不能所有一种类别的人都用一个框去。

那么自然而然的,套用人家检测的思路来做分割嘛,只不过,人家输出的是框咱们输出mask。这里yolact就又搞了一个分支,去预测prototypes(一共32个,不是图中示意的4个),这个prototypes,其实就是Mask, 但是他每个mask负责的区域啥的都不一样,然后这个predictrion head还会预测一个系数,就是每个mask的系数,根据这个系数最后去计算得到每个目标框里面的物体的mask, 做一些crop,取阈值啥的。

  

 

 

 

 

 

 

 

 Yolact++改进的地方

改进的一个点挺有意思的,加了下面这个分支,称为mask rescoring network

这个分支看起来挺简单的,其实就是在crop之后去加了一些网络计算出这个mask属于每个类别的confidene。就是根据mask去计算类别的置信度。然后这个置信度和原始的分类的置信度去乘,变成实际上的分类置信度去计算loss。就是这么简单。

 

 

 

解决啥问题?这个主要解决的就是预测得到的分类的置信度很高,但是mask的精度不高的问题。有可能分类最高的那个框他不是mask精度最高的那个框。为了解决这个问题,由mask再去预测个confidence, 然后和分类的那个乘在一起,这样可以去让网络学习使得mask的confidence也变高。因为是mask直接预测的confidence,所以和mask的精度就直接有关系了。

 

 

 

这玩意为啥有用?为啥嘞,根据mask去算类别这事情不靠谱,人类都干不了这事情。所以作者这边的mask不是一个简单的mask,特意强调是要在做二值化之前的mask, 这时候大约还是有点什么信息的吧,然后用这个mask去计算每个类别的置信度。据说这个想法是从mask scoring R-CNN https://arxiv.org/pdf/1903.00241.pdf 学来的。但是MSRNN是feature map和mask级联起来,个人感觉比这个略靠谱一点。

撇开这个不谈,得到的这个各个类别的置信度和原来的分类的置信度一乘,就可以迫使网络去学习让mask的置信度变高,相当于mask的精度变高。

似曾相识?这想法其实其他地方也有过,那个tinaface里面也有这么个东西。他说是又加了一个IOU-aware branch, 能让定位更准。也是嫌分类置信度很高,location精度不高,所以又根据xywh的值去预测了个置信度,乘在一起。

 

posted @ 2022-10-16 23:13  sunny,lee  阅读(494)  评论(0编辑  收藏  举报