error: (-2:Unspecified error) in my rcnn

asked 2019-02-01 09:02:56 -0500

Borin gravatar image

updated 2019-02-01 09:12:16 -0500

berak gravatar image

i am have a problem that says "error: (-2:Unspecified error) Can't create layer "flatten_1/Shape" of type "Shape" in function 'getLayerInstance "

so, somebody can help me for solving this problem.

this is the code that i am working for :


import cv2

import argparse

import numpy as np


def get_output_layers(net):

  layer_names = net.getLayerNames()

    output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]

    return output_layers

def draw_prediction(img, class_id, confidence, x, y, x_plus_w, y_plus_h):

    label = str(classes[class_id])

    color = COLORS[class_id]

    cv2.rectangle(img, (x, y), (x_plus_w, y_plus_h), color, 2)

    cv2.putText(img, label, (x - 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)


image = cv2.imread( "ArquivosAdenomas/ImagensTeste/ImagemNormal/OMA100X (7).bmp" )

Width = image.shape[1]

Height = image.shape[0]

scale = 0.00392

classes = None

with open("Classe.txt", 'r') as f:

    classes = [line.strip() for line in f.readlines()]

COLORS = np.random.uniform(0, 255, size=(len(classes), 3))

net = cv2.dnn.readNetFromTensorflow(model = "modelo.pb")

blob = cv2.dnn.blobFromImage(image, scale, (416, 416), (0, 0, 0), True, crop=False)

net.setInput(blob)

str = get_output_layers(net)

outs = net.forward ( str )

class_ids = []

confidences = []

boxes = []

conf_threshold = 0.5

nms_threshold = 0.4

for out in outs:

    for detection in out:

        scores = detection[5:]

        class_id = np.argmax(scores)

        confidence = scores[class_id]

        if confidence > 0.5:

            center_x = int(detection[0] * Width)

            center_y = int(detection[1] * Height)

            w = int(detection[2] * Width)

            h = int(detection[3] * Height)

            x = center_x - w / 2

            y = center_y - h / 2

            class_ids.append(class_id)

            confidences.append(float(confidence))

            boxes.append([x, y, w, h])

indices = cv2.dnn.NMSBoxes(boxes, confidences, conf_threshold, nms_threshold)

for i in indices:

    i = i[0]

    box = boxes[i]

    x = box[0]

    y = box[1]

    w = box[2]

    h = box[3]

    draw_prediction(image, class_ids[i], confidences[i], round(x), round(y), round(x + w), round(y + h))

cv2.imshow("object detection", image)

cv2.waitKey()

cv2.imwrite("object-detection.jpg", image)

cv2.destroyAllWindows()
edit retag flag offensive close merge delete

Comments

Only a .pb file is not enough to import RCNN model from TensorFlow. Please read more in wiki.

dkurt gravatar imagedkurt ( 2019-02-01 10:04:19 -0500 )edit