计算图片中重复的“对象”
数据挖掘
美国有线电视新闻网
物体检测
图像识别
更快的rcnn
2022-03-02 01:47:07
1个回答
如果您确实需要为这个问题使用 ML 解决方案(而不是严格的计算机视觉解决方案),大多数(全部?)框架将在运行推理后返回检测列表。
我将使用 Tensorflow 和这个对象检测教程作为示例。如果您运行 colab 并选择标题为“可视化结果”的文本单元格并运行上面的所有单元格,它将下载模型并在完成后对图片运行推理。
插入代码单元并添加print(result["detection_classes"])
并运行它。这应该会给出如下输出:
[[38. 1. 1. 38. 38. 38. 1. 1. 38. 1. 1. 38. 1. 1. 1. 38. 42. 42.
1. 38. 42. 38. 1. 1. 1. 31. 38. 38. 42. 1. 31. 27. 1. 1. 38. 1.
2. 38. 1. 38. 37. 38. 38. 27. 38. 38. 38. 44. 38. 38. 27. 1. 1. 38.
3. 1. 38. 42. 16. 38. 9. 1. 1. 27. 27. 38. 38. 1. 38. 38. 1. 1.
4. 38. 31. 38. 1. 38. 38. 31. 42. 9. 38. 34. 40. 38. 38. 1. 38. 38.
5. 3. 18. 27. 38. 18. 1. 31. 42. 38.]]
列表中的每个数字都映射到其中一个类。在这种情况下,您将在变量中找到类category_index
。
现在您可以使用您最喜欢的 python 方法来计算出现次数。一个简单的实现可能如下所示:
def count_classes(detections: list) -> tuple:
ret_tuple = {}
for detection in detections:
if detection in ret_tuple.keys():
ret_tuple[detection] += 1
else:
ret_tuple[detection] = 1
return ret_tuple
在 colab 中运行上述代码将得到以下结果:
count_classes(result["detection_classes"][0])
...
{1.0: 30,
3.0: 1,
9.0: 2,
16.0: 1,
18.0: 3,
27.0: 6,
31.0: 5,
34.0: 1,
37.0: 1,
38.0: 41,
40.0: 1,
42.0: 7,
44.0: 1}
其它你可能感兴趣的问题