我是人工智能的新手,我正在使用 TensorFlow 对象检测 API 来检测图像上的产品,因此它已经检测到对象,但我想获取图像中每个对象的坐标 Xmax、Xmin、Ymax 和 Ymin。即检测到物体的图像,在这种情况下,图像中检测到 2 个物体。图片:我们可以看到我得到了对象的坐标但不清楚,输出中有超过 3 个坐标,我只想得到坐标的数量作为图像中对象的数量。这是提供输出的代码with detection_graph.as_default(): with tf.Session(graph=detection_graph) as sess: image_tensor = detection_graph.get_tensor_by_name('image_tensor:0') detection_boxes = detection_graph.get_tensor_by_name('detection_boxes:0') detection_scores = detection_graph.get_tensor_by_name('detection_scores:0') detection_classes = detection_graph.get_tensor_by_name('detection_classes:0') num_detections = detection_graph.get_tensor_by_name('num_detections:0') print(detection_graph.get_tensor_by_name('detection_boxes:0')) for image_path in TEST_IMAGE_PATHS: boxes = detect_objects(image_path) print(boxes)输出Tensor("detection_boxes:0", dtype=float32)[[[0.16593058 0.06630109 0.8009524 0.5019088 ] [0.15757088 0.5376015 0.8869156 0.9394863 ] [0.5966009 0.88420665 0.6564093 0.9339011 ] ... [0. 0. 0. 0. ] [0. 0. 0. 0. ] [0. 0. 0. 0. ]]]我想得到类似的东西,但只有边界框的坐标。我们假设它们是对象的坐标。[0.16593058 0.06630109 0.8009524 0.5019088 ][0.15757088 0.5376015 0.8869156 0.9394863 ]
2 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
你应该知道两件事:
这些是所有(通常是 100 个)顶级检测的所有坐标。
这些以标准化坐标给出。
因此,为了按分数过滤检测,使用detection_scores
以确定要过滤掉哪些索引(它们已排序),您可以将归一化坐标与原始图像大小相乘以获得绝对坐标。标准化坐标以 的格式给出[ymin, xmin, ymax, xmax]
,因此您应该将第一个和第三个坐标乘以y_size
,将第二个和第四个坐标乘以x_size
。您可以通过评估 的形状来计算x_size
和。y_size
image_tensor
浮云间
TA贡献1829条经验 获得超4个赞
代码:
for box in boxes[0]: xmin, ymin, xmax, ymax =box bboxes.append([int(ymin *640),int(xmin*480) , int((ymax-ymin)*640), int((xmax-xmin)*480)])
添加回答
举报
0/150
提交
取消