如何使用 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准备