Ejemplo n.º 1
0
VOC_train_data = VOC_train_data.map(lambda x : helpers.preprocessing(x, max_height, max_width))
VOC_val_data = VOC_val_data.map(lambda x : helpers.preprocessing(x, max_height, max_width))

padded_shapes, padding_values = helpers.get_padded_batch_params()
VOC_train_data = VOC_train_data.padded_batch(batch_size, padded_shapes=padded_shapes, padding_values=padding_values)
VOC_val_data = VOC_val_data.padded_batch(batch_size, padded_shapes=padded_shapes, padding_values=padding_values)

frcnn_train_feed = faster_rcnn.generator(VOC_train_data, hyper_params, preprocess_input)
frcnn_val_feed = faster_rcnn.generator(VOC_val_data, hyper_params, preprocess_input)

base_model = VGG16(include_top=False)
if hyper_params["stride"] == 16:
    base_model = Sequential(base_model.layers[:-1])
#
rpn_model = rpn.get_model(base_model, hyper_params)
frcnn_model = faster_rcnn.get_model(base_model, rpn_model, hyper_params)
frcnn_model.compile(optimizer=tf.optimizers.Adam(learning_rate=1e-5),
                    loss=[None] * len(frcnn_model.output))
# If you have pretrained rpn model
# You can load rpn weights for faster training
rpn_load_weights = False
if rpn_load_weights:
    rpn_model_path = helpers.get_model_path("rpn", hyper_params["stride"])
    rpn_model.load_weights(rpn_model_path)
# Load weights
frcnn_model_path = helpers.get_model_path("frcnn", hyper_params["stride"])

if load_weights:
    frcnn_model.load_weights(frcnn_model_path)

custom_callback = helpers.CustomCallback(frcnn_model_path, monitor="val_loss", patience=5)
Ejemplo n.º 2
0
VOC_test_data = VOC_test_data.map(
    lambda x: helpers.preprocessing(x, max_height, max_width))

padded_shapes, padding_values = helpers.get_padded_batch_params()
VOC_test_data = VOC_test_data.padded_batch(batch_size,
                                           padded_shapes=padded_shapes,
                                           padding_values=padding_values)

base_model = VGG16(include_top=False)
if hyper_params["stride"] == 16:
    base_model = Sequential(base_model.layers[:-1])
rpn_model = rpn.get_model(base_model, hyper_params)
anchors = rpn.generate_anchors(max_height, max_width, hyper_params)
frcnn_model = faster_rcnn.get_model(base_model,
                                    rpn_model,
                                    anchors,
                                    hyper_params,
                                    mode=mode)
#
frcnn_model_path = helpers.get_model_path("frcnn", hyper_params["stride"])
frcnn_model.load_weights(frcnn_model_path)

background_label = "bg"
labels = [background_label] + labels
bg_id = labels.index(background_label)
total_labels = hyper_params["total_labels"]

for image_data in VOC_test_data:
    img, _, _ = image_data
    input_img = preprocess_input(img)
    input_img = tf.image.convert_image_dtype(input_img, tf.float32)