cv2.dnn.readNetFromTensorflow 获取您的Protobuf 文件.pb 和模型的配置文件.pbtxt 来加载您保存的模型。
net.forward() - 运行正向传递以计算净输出。
您的检测,即net.forward() 将给出Numpy ndarray 作为输出,您可以使用它在给定的输入图像上绘制框。
您可以考虑以下示例。
import cv2
# Load a model imported from Tensorflow
tensorflowNet = cv2.dnn.readNetFromTensorflow('frozen_inference_graph.pb', 'graph.pbtxt')
# Input image
img = cv2.imread('img.jpg')
rows, cols, channels = img.shape
# Use the given image as input, which needs to be blob(s).
tensorflowNet.setInput(cv2.dnn.blobFromImage(img, size=(300, 300), swapRB=True, crop=False))
# Runs a forward pass to compute the net output
networkOutput = tensorflowNet.forward()
# Loop on the outputs
for detection in networkOutput[0,0]:
score = float(detection[2])
if score > 0.2:
left = detection[3] * cols
top = detection[4] * rows
right = detection[5] * cols
bottom = detection[6] * rows
#draw a red rectangle around detected objects
cv2.rectangle(img, (int(left), int(top)), (int(right), int(bottom)), (0, 0, 255), thickness=2)
# Show the image with a rectagle surrounding the detected objects
cv2.imshow('Image', img)
cv2.waitKey()
cv2.destroyAllWindows()
我考虑过Inception-SSD v2 的重量文件,可以从here 下载。
并从此link 配置文件。