首页 > 解决方案 > python中如何使用tflearn模型进行blob图像处理

问题描述

我想在帧(或图像)中找到 blob,并应用经过训练的 DNN 对区域进行分类。但是,我使用的是 tflearn,不知道如何使用使用 tflearn 训练的模型。

.
.
.
model.load('model.tflearn')
image_test = cv2.imread("test_fish.jpg", 0)
blob = cv2.dnn.blobFromImage(image_test, 1.0, (300, 300), [128, 128, 128], False, False)
# I want to do something like model.setInput(blob)
.
.
.

另外,如果有人有时间,我想寻求一些关于如何在编码中进行自学的建议?

网上有很多资源,但如果没有教程,我就无法开发自己的程序或解决难题。我是否也依赖现有代码?我怎样才能提高并成为一个可靠的程序员?

标签: pythonopencvtensorflowobject-detectiontflearn

解决方案


我建议您不必从头开始编写整个代码,但您可以从一些用例开始,并根据需要获取一段代码并相应地拼接它们以适应解决方案。通过这种方式,您将了解如何以及在何处使用特定功能/一段代码。您也可以准备好代码并尝试根据您需要的结果更改不同的内容,最终您将拥有自己不同版本的代码。请参考以下代码解决您的问题:

import numpy as np
import cv2

rows = open("synset_words.txt").read().strip().split("\n")
classes = [r[r.find(" ") + 1:].split(",")[0] for r in rows]

net = cv2.dnn.readNetFromCaffe("bvlc_googlenet.prototxt","bvlc_googlenet.caffemodel")
#Here if you want to import a tensorflow model you can do it as below
#cv2.dnn.readNetFromTensorflow('frozen_inference_graph.pb', 'graph.pbtxt')

image = cv2.imread('image.jpg')
resized = cv2.resize(image, (224, 224))
blob = cv2.dnn.blobFromImage(resized, 1, (224, 224), (104, 117, 123))
print("First Blob: {}".format(blob.shape))

net.setInput(blob)
preds = net.forward()

idx = np.argsort(preds[0])[::-1][0]
text = "Label: {}, {:.2f}%".format(classes[idx],preds[0][idx] * 100)
cv2.putText(image, text, (5, 25),  cv2.FONT_HERSHEY_SIMPLEX,0.7, (0, 0, 255), 2)

# show the output image
cv2.imshow("Image", image)
cv2.waitKey(0)

推荐阅读