Передайте изображение + аннотации, чтобы переобучить последние два слоя ResNet50 весом imagenet - PullRequest
0 голосов
/ 02 июля 2019

У меня есть партия из 660 изображений, аннотированных с помощью labelImg.Я преобразовал вывод XML в CSV.Изображения имеют разрешение 1241 * 1754.

Как передать изображения и аннотации для обучения ResNet50 для обнаружения объектов?

У меня есть модель, которая может обнаруживать объекты реального мира, но я не совсем понимаю, как передавать изображенияЯ аннотировал, чтобы сохранить последние слои ResNet.

model = ResNet50(include_top=False, weights='imagenet',     input_shape=(224, 224, 3))
_ = model.output
_ = GlobalAveragePooling2D()(_)
# Fully connected layer
_ = Dense(512, activation='relu')(_)
# Fully connected output/classification layer
predictions = Dense(1, activation='softmax')(_) 

model_tl = Model(input=model, output=predictions) ## transfer learning

#Freeze layers
for layer in ResNet50_tl.layers:
   layer.trainable = False

model.compile(loss='sparse_categorical_crossentropy',
            optimizer='adam',
            metrics=['accuracy'])

###########################################################################

from imageai.Detection import ObjectDetection
import os

execution_path = os.getcwd()

detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path ,         "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()

detections, objects_path =     detector.detectObjectsFromImage(input_image=os.path.join(execution_path ,     "image2.jpg"), output_image_path=os.path.join(execution_path ,     "image3new.jpg"), minimum_percentage_probability=30,      extract_detected_objects=True)

for eachObject, eachObjectPath in zip(detections, objects_path):
    print(eachObject["name"] , " : " , eachObject["percentage_probability"], " : ", eachObject["box_points"] )
    print("Object's image saved in " + eachObjectPath)
    print("--------------------------------")
...