如何获取检测到的对象的边界框坐标

时间:2019-04-29 17:39:11

标签: tensorflow keras object-detection bounding-box tensorflow2.0

我是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()```

1 个答案:

答案 0 :(得分:0)

您正在尝试使用分类网络。分类网络会将整个图像分类为其中一个类别。

要检测图像中的物体,请尝试使用RCNN,RetinaNet,Yolo等网络。