我是tensorflow.am的新手,很困惑地获取检测到的对象的边界框坐标。如何获取检测到的对象的边界框。这是我的代码,请帮忙!
from PIL import Image
import numpy as np
import tensorflow as tf
import tensorflow_hub as hub
import os
import cv2
test_dir=os.getcwd()+'/test_img'
test_img=os.listdir(test_dir)
def convert_to_array(img):
im = cv2.imread(img)
img_ = Image.fromarray(im, 'RGB')
image = img_.resize((224,224))
return np.array(image)
def get_cell_name(label):
if label==0:
return "daisy"
if label==1:
return "dandelion"
model = tf.keras.experimental.load_from_saved_model('E:/model/flowers.h5', custom_objects={'KerasLayer':hub.KerasLayer})
model.build((None, 224, 224, 3))
for img in test_img:
file = os.path.join(test_dir, img)
ar=convert_to_array(file)
ar=ar/255
label=1
a=[]
a.append(ar)
a=np.array(a)
score=model.predict(a,verbose=1)
print(score)
label_index=np.argmax(score)
print(label_index)
acc=np.max(score)
Cell=get_cell_name(label_index)
print(Cell,acc)
img = cv2.imread(file)
text='this is '+Cell
cv2.putText(img,text, (5,15), cv2.FONT_HERSHEY_SIMPLEX, 0.5, 255)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
您是否在询问这种结构。
model = tf.keras.Sequential([
hub.KerasLayer(MODULE_HANDLE, output_shape=[FV_SIZE],
trainable=do_fine_tuning),
tf.keras.layers.Dropout(rate=0.2),
tf.keras.layers.Dense(train_generator.num_classes, activation='softmax',
kernel_regularizer=tf.keras.regularizers.l2(0.0001))
])
model.build((None,)+IMAGE_SIZE+(3,))
model.summary()```
答案 0 :(得分:0)
您正在尝试使用分类网络。分类网络会将整个图像分类为其中一个类别。
要检测图像中的物体,请尝试使用RCNN,RetinaNet,Yolo等网络。