【发布时间】:2018-03-26 17:56:30
【问题描述】:
我有一个形状为 (600,400) 的热图 numpy 数组。热图表示检测概率。就我而言,图像中人脸检测的概率。我的目标是获取此热图并获取最高概率出现的坐标(X 和 Y)。
我已经解决了单面的情况。代码如下:
face_location = np.unravel_index(heatmap.argmax(), heatmap.shape)
print("Face location: " + str(face_location))
但在某些情况下有多个面孔。我不知道如何调整算法以返回多个“最热区域”。问题是任何一个热点区域都会被逐渐不那么热点的区域包围。所以很有可能在最热的区域之后,接下来的前10名都在初始点的旁边。
如何调整算法以查找多个热点区域?可以假设它们不会并排在一起。
heatmap = [[ 2.00299415e-04 2.03753079e-04 8.17560707e-04 ..., 2.23556344e-04
1.98958180e-04 9.92935777e-01]
[ 2.00642273e-04 2.04473894e-04 8.19963054e-04 ..., 2.24148811e-04
1.99438742e-04 9.92921114e-01]
[ 2.01056406e-04 2.05344462e-04 8.22864589e-04 ..., 2.24864416e-04
2.00019145e-04 9.92903233e-01]
...,
[ 7.28193991e-05 -2.73474743e-05 2.95096161e-05 ..., 5.96550672e-05
1.98282614e-05 9.99637246e-01]
[ 7.34055429e-05 -2.72389279e-05 3.02382941e-05 ..., 5.98490733e-05
2.04356711e-05 9.99619305e-01]
[ 7.37556256e-05 -2.71740992e-05 3.06735128e-05 ..., 5.99649393e-05
2.07984649e-05 9.99608397e-01]]
【问题讨论】:
-
如果我没看错你的问题,可能想看看How to get indices of N maximum values in a numpy array?。
标签: image numpy image-processing computer-vision conv-neural-network