这是我的推广信息,以激励自己更好的分享自己的知识和经验!也希望看到的你能够多多支持,谢谢!

1. 滴滴云AI大师:

目前滴滴云正在大力推广自己的云计算服务,需要购买的朋友们用我的AI大师码 「2049」在滴滴云上购买 GPU / vGPU / 机器学习产品可额外享受 9 折优惠,点击这里前往滴滴云官网。

MASK 是如何表示的?

计算机视觉领域,mask 是一个常常涉及的知识。如下图所示,它常用来表示物体在图像中所对应的区域。一般一个 mask 对应的是一个二维二进制数组。那么它还有其他的表示方法吗?这篇文章将会把我遇到的表示 mask 的方法进行一个整理记录,欢迎大家在评论区随时补充和指正,谢谢!
在这里插入图片描述

在这里插入图片描述

1. Binary Mask

这个是我们常见的形式,就是一个二进制的二维数组。

[[0 0 0 0 1 0]
 [0 0 0 1 1 1]
 [0 0 1 1 1 0]
 [0 0 1 1 0 0]]

2. Run Length Encoding(RLE)

概述

RLE 是 COCO 数据集推出的一种自定义的数据格式,主要目的是简洁的存储 mask 同时能够高效的进行 mask 相关的计算。RLE 的特性是其大小和mask所拥有的边界像素个数成正比,同时可以直接计算诸如mask的面积、并集或者交集等。需要指出的是,当mask的形状非常简单时,RLE的计算量为 , 其中n是像素的个数。然而简单的利用二维数组计算则计算量为 O(n)。

具体定义

RLE是一种用于存储二进制mask的数据格式。它首先将一个向量(也可以是向量化的图片)分成多个包含区域的分段;然后简单的记录各个分段的长度。让我们通过一些例子来了解它是如何工作的。

M = [0 0 1 1 1 0 1] → RLE = [2 3 1 1]

M = [1 1 1 1 1 1 0] → RLE = [0 6 1]

我们可以发现,奇数位的数字记录的是总是0的个数;也是下一个1的索引(从零开始)。而RLE的大小和M中的“边界”数量是成正比的,也就是0和1的变换之处。

3. Polygons

这就是以多边形的形式记录mask,也就是记录一系列的顶点。一般如下:

[[x1, y1], [x2, y1], … , [xn, yn]]

4. 极坐标

在这里插入图片描述

就是使用极坐标的形式表示mask。只需要记录一个中心点,再记录多个角度和长度即可。