如何使用 mask-RCNN 在 python 中计算(x,y)(质心)和掩码的宽度和高度?

Posted

技术标签:

【中文标题】如何使用 mask-RCNN 在 python 中计算(x,y)(质心)和掩码的宽度和高度?【英文标题】:How can I calculate the (x,y) (centroid) and the width and height of a mask in python using mask-RCNN? 【发布时间】:2022-01-24 00:33:43 【问题描述】:

我正在研究一个 mask-RCNN 模型,在该模型中我检测不同鸡(健康和生病)的头部和身体。我能够检测到头部和身体,但现在我想找到(随机测试图像的)面具的(x,y)质心坐标,以便根据头部和身体的相对位置。

我正在使用https://github.com/victorpujolle/Tomato_detection 模型对我的自定义数据进行一些编辑。有谁知道我该如何计算?

这张图片解释了这个过程:

【问题讨论】:

请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

center of mass formula 可能是解决此问题的最佳方法

cm = \sum_i m_i*x_i / m_i

对于一维,它会是这样的:

[nav] In [1]: m = np.zeros(101) # include 100

[ins] In [2]: m[50:101] = 1

[ins] In [3]: x = np.arange(len(m))

[ins] In [4]: (m*x).sum()/m.sum()
Out[26]: 75.0

2-D其实是一样的,因为x和y是独立的

[ins] In [1]: m = np.zeros((2, 101))

[ins] In [2]: m[0,0:26] = 1

[ins] In [3]: m[1,75:101] = 1

[ins] In [4]: plt.matshow(m)  # view the generated mask

[ins] In [5]: x, y = np.meshgrid(range(m.shape[1]), range(m.shape[0]))

[ins] In [6]: (m*x).sum()/m.sum()
Out[63]: 50.0

[ins] In [7]: (m*y).sum()/m.sum()
Out[65]: 0.5

【讨论】:

谢谢@benh。您能否详细说明您的答案?

以上是关于如何使用 mask-RCNN 在 python 中计算(x,y)(质心)和掩码的宽度和高度?的主要内容,如果未能解决你的问题,请参考以下文章

『计算机视觉』Mask-RCNN_训练网络其三:model准备

实战:使用 Mask-RCNN 的停车位检测

mask-rcnn代码解读:display(self)函数的解析

Mask-RCNN 的智能多边形标注

mask-rcnn解读:clip_boxes_graph

图像语义分割标注工具labelme制作自己的数据集用于mask-rcnn训练