Convert YoloV3 output to coordinates of bounding box, label and confidence

筅森魡賤 提交于 2020-01-24 18:50:08

问题


I run YoloV3 model and get detections - dictionary of 3 entries:

  1. "detector/yolo-v3/Conv_22/BiasAdd/YoloRegion" : numpy.ndarray with shape (1,255,52,52),
  2. "detector/yolo-v3/Conv_6/BiasAdd/YoloRegion" : numpy.ndarray with shape (1,255,13,13),
  3. "detector/yolo-v3/Conv_14/BiasAdd/YoloRegion" : numpy.ndarray with shape (1,255,26,26).

I know that each entry in dictionary is other size of object detection. Conv_22 is for small objects Conv_14 is for medium objects Conv_6 is for big objects

How can I convert this dictionary output to coordinates of bounding box, label and confidence?


回答1:


Presuming you use python and opencv,

Pelase find the below code with comments where ever required, to extract the output using cv2.dnn module.

net.setInput(blob)

layerOutputs = net.forward(ln)

boxes = []
confidences = []
classIDs = []
for output in layerOutputs:
# loop over each of the detections
    for detection in output:
        # extract the class ID and confidence (i.e., probability) of
        # the current object detection
        scores = detection[5:]
        classID = np.argmax(scores)
        confidence = scores[classID]

        # filter out weak predictions by ensuring the detected
        # probability is greater than the minimum probability
        if confidence > threshold:
            # scale the bounding box coordinates back relative to the
            # size of the image, keeping in mind that YOLO actually
            # returns the center (x, y)-coordinates of the bounding
            # box followed by the boxes' width and height
            box = detection[0:4] * np.array([W, H, W, H])
            (centerX, centerY, width, height) = box.astype("int")

            # use the center (x, y)-coordinates to derive the top and
            # and left corner of the bounding box
            x = int(centerX - (width / 2))
            y = int(centerY - (height / 2))

            # update our list of bounding box coordinates, confidences,
            # and class IDs
            boxes.append([x, y, int(width), int(height)])
            confidences.append(float(confidence))
            classIDs.append(classID)
idxs = cv2.dnn.NMSBoxes(boxes, confidences, confidence, threshold)
#results are stored in idxs,boxes,confidences,classIDs


来源:https://stackoverflow.com/questions/57753640/convert-yolov3-output-to-coordinates-of-bounding-box-label-and-confidence

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!