Poly-YOLO实例分割(YOLOV3改进版)
论文:https://arxiv.org/abs/2005.13243
开源代码:https://gitlab.com/irafm-ai/poly-yolo
Poly-YOLO: higher speed, more precise detection and instance segmentation for YOLOv3
论文思想
提出了一个新的YOLO版本,它扩展了带有实例分割的Poly-YOLO。Poly-YOLO建立在YOLOv3的原始思想的基础上,并消除了它的两个弱点:大量重写的标签和无效的锚点分配。Poly-YOLO通过使用阶梯式上采样,并通过超列技术聚合SE-Darknet-53主干中的特征,从而减少了重写标签的数量,并产生了高分辨率的单标度输出。
与YOLOv3相比
- Poly-YOLO仅具有60%的可训练参数,但相对mAP却提高了40%。还展示了具有更少参数和更低输出分辨率的Poly-YOLO lite。
- 它具有与YOLOv3相同的精度,但它的体积小三倍,速度快两倍,因此适用于嵌入式设备。
- Poly-YOLO使用边界多边形执行实例分割。训练网络以检测在极坐标网格上定义的尺寸无关的多边形。预测每个多边形的顶点具有可信度,因此Poly-YOLO生成具有不同数量顶点的多边形。
Poly-YOLO算法的实例分割性能:在中层图形卡上运行26FPS
Yolov3存在的问题
主要有两个:label重写问题、anchor的不均衡问题
- label重写问题
见图:由于YOLO系列都是基于图像cell栅格作为单元进行检测,以416416大小的图像为例,在图像分辨率随着卷积下降到1313的特征图大小时,这时候特征图一个像素点的感受野是32*32大小的图像patch。而YOLOV3在训练时候,如果出现相同两个目标的中心位于同一个cell,那么前面一个目标就会被后面目标重写,也就是说两个目标由于中心距离太近以至于在特征图上将采样成为同一个像素点,这时候其中有个目标会被重写而无法进行到训练当中。图中,红色目标因为重写而没有加入到训练中的目标,在这样一个特征图上,重写的目标数量还不少,27个目标里有10个都被重写,特别是比较稠密的地方。 - anchor的不均衡问题
anchor在不同scale的数目不均衡问题。在Poly-yolo里直接把三个尺度去掉,改用更高分辨率的特征输入,同时引入一个SE模块,使得特征被多尺度的学习,更换掉Yolo里面很重的head,改用一个轻量级的更高分辨率的block,最终我们实现了减少了60%的参数量,但是精度却提高了40%。对照yolov3架构图,poly-yolo使用一个输出,而不是三个,使它具有更高的分辨率
POLY-YOLO 实例分割
(多边形边框原则)
POLY-YOLO在执行实例分割时,采用的是多边形边框原则,由原来只有左上角、右下角坐标扩展为左上角、右下角加一个以极坐标形式的多边形顶点集合。
它以边界框的中心作为原点:
损失
POLY-YOLO实验
- 三个数据集
- 实验效果图