Exemple #1
0
    def inference (self, net_input, num_classes, is_training):
        if FLAGS.patch_slim:
            fuck_slim.patch(is_training)
        network = None
        init_fn = None
        if FLAGS.net == "FC-DenseNet56" or FLAGS.net == "FC-DenseNet67" or FLAGS.net == "FC-DenseNet103":
            with slim.arg_scope(aardvark.default_argscope(is_training)):
                network = build_fc_densenet(net_input, preset_model = FLAGS.net, num_classes=num_classes)
        elif FLAGS.net == "RefineNet-Res50" or FLAGS.net == "RefineNet-Res101" or FLAGS.net == "RefineNet-Res152":
            with slim.arg_scope(aardvark.default_argscope(is_training)):
            # RefineNet requires pre-trained ResNet weights
                network, init_fn = build_refinenet(net_input, preset_model = FLAGS.net, num_classes=num_classes, is_training=is_training)
        elif FLAGS.net == "FRRN-A" or FLAGS.net == "FRRN-B":
            with slim.arg_scope(aardvark.default_argscope(is_training)):
                network = build_frrn(net_input, preset_model = FLAGS.net, num_classes=num_classes)
        elif FLAGS.net == "Encoder-Decoder" or FLAGS.net == "Encoder-Decoder-Skip":
            with slim.arg_scope(aardvark.default_argscope(is_training)):
                network = build_encoder_decoder(net_input, preset_model = FLAGS.net, num_classes=num_classes)
        elif FLAGS.net == "MobileUNet" or FLAGS.net == "MobileUNet-Skip":
            with slim.arg_scope(aardvark.default_argscope(is_training)):
                network = build_mobile_unet(net_input, preset_model = FLAGS.net, num_classes=num_classes)
        elif FLAGS.net == "PSPNet-Res50" or FLAGS.net == "PSPNet-Res101" or FLAGS.net == "PSPNet-Res152":
            with slim.arg_scope(aardvark.default_argscope(is_training)):
            # Image size is required for PSPNet
            # PSPNet requires pre-trained ResNet weights
                network, init_fn = build_pspnet(net_input, label_size=[args.crop_height, args.crop_width], preset_model = FLAGS.net, num_classes=num_classes, is_training=is_training)
        elif FLAGS.net == "GCN-Res50" or FLAGS.net == "GCN-Res101" or FLAGS.net == "GCN-Res152":
            with slim.arg_scope(aardvark.default_argscope(is_training)):
            # GCN requires pre-trained ResNet weights
                network, init_fn = build_gcn(net_input, preset_model = FLAGS.net, num_classes=num_classes, is_training=is_training)
        elif FLAGS.net == "DeepLabV3-Res50" or FLAGS.net == "DeepLabV3-Res101" or FLAGS.net == "DeepLabV3-Res152":
            with slim.arg_scope(aardvark.default_argscope(is_training)):
            # DeepLabV requires pre-trained ResNet weights
                network, init_fn = build_deeplabv3(net_input, preset_model = FLAGS.net, num_classes=num_classes, is_training=is_training)
        elif FLAGS.net == "DeepLabV3_plus-Res50" or FLAGS.net == "DeepLabV3_plus-Res101" or FLAGS.net == "DeepLabV3_plus-Res152":
            # DeepLabV3+ requires pre-trained ResNet weights
            with slim.arg_scope(aardvark.default_argscope(is_training)):
                network, init_fn = build_deeplabv3_plus(net_input, preset_model = FLAGS.net, num_classes=num_classes, is_training=is_training)
        elif FLAGS.net == "AdapNet":
            with slim.arg_scope(aardvark.default_argscope(is_training)):
                network = build_adaptnet(net_input, num_classes=num_classes)
        else:
            raise ValueError("Error: the model %d is not available. Try checking which models are available using the command python main.py --help")

        self.init_fn = init_fn
        return network
Exemple #2
0
if args.model == "FC-DenseNet56" or args.model == "FC-DenseNet67" or args.model == "FC-DenseNet103":
    network = build_fc_densenet(net_input,
                                preset_model=args.model,
                                num_classes=num_classes)
elif args.model == "RefineNet-Res50" or args.model == "RefineNet-Res101" or args.model == "RefineNet-Res152":
    # RefineNet requires pre-trained ResNet weights
    network, init_fn = build_refinenet(net_input,
                                       preset_model=args.model,
                                       num_classes=num_classes)
elif args.model == "FRRN-A" or args.model == "FRRN-B":
    network = build_frrn(net_input,
                         preset_model=args.model,
                         num_classes=num_classes)
elif args.model == "Encoder-Decoder" or args.model == "Encoder-Decoder-Skip":
    network = build_encoder_decoder(net_input,
                                    preset_model=args.model,
                                    num_classes=num_classes)
elif args.model == "MobileUNet" or args.model == "MobileUNet-Skip":
    network = build_mobile_unet(net_input,
                                preset_model=args.model,
                                num_classes=num_classes)
elif args.model == "PSPNet-Res50" or args.model == "PSPNet-Res101" or args.model == "PSPNet-Res152":
    # Image size is required for PSPNet
    # PSPNet requires pre-trained ResNet weights
    network, init_fn = build_pspnet(
        net_input,
        label_size=[args.crop_height, args.crop_width],
        preset_model=args.model,
        num_classes=num_classes)
elif args.model == "GCN-Res50" or args.model == "GCN-Res101" or args.model == "GCN-Res152":
    # GCN requires pre-trained ResNet weights
Exemple #3
0
with tf.device('/gpu:' + str(args.gpu)):
    input = tf.placeholder(tf.float32, shape=[None, None, None, 3])
    output = tf.placeholder(tf.float32, shape=[None, None, None, num_classes])

    if args.model == "FC-DenseNet56" or args.model == "FC-DenseNet67" or args.model == "FC-DenseNet103" or args.model == "FC-DenseNet158" or args.model == "FC-DenseNet232":
        network = build_fc_densenet(input,
                                    preset_model=args.model,
                                    num_classes=num_classes,
                                    dropout_p=0.5)
    elif args.model == "RefineNet-Res101" or args.model == "RefineNet-Res152":
        network = build_refinenet(input,
                                  preset_model=args.model,
                                  num_classes=num_classes)
    elif args.model == "Encoder-Decoder":
        network = build_encoder_decoder(input, num_classes)
    elif args.model == "Encoder-Decoder-Skip":
        network = build_encoder_decoder_skip(input, num_classes)
    elif args.model == "HF-FCN":
        network = build_hf_fcn(input,
                               preset_model='FC-DenseNet103',
                               num_classes=num_classes)
    elif args.model == "custom":
        network = build_custom(input, num_classes)

    # Compute your (unweighted) softmax cross entropy loss
    if not args.balanced_weight:
        loss = tf.reduce_mean(
            tf.nn.softmax_cross_entropy_with_logits(logits=network,
                                                    labels=output))
    else:
Exemple #4
0
def buildNetwork(model, net_input, num_class):
    # Get the selected model.
    # Some of them require pre-trained ResNet
    if "Res50" in model and not os.path.isfile("models/resnet_v2_50.ckpt"):
        download_checkpoints("ResnetV2", "50")
    if "Res101" in model and not os.path.isfile("models/resnet_v2_101.ckpt"):
        utils.download_checkpoints("ResnetV2", "101")
    if "Res152" in model and not os.path.isfile("models/resnet_v2_152.ckpt"):
        utils.download_checkpoints("ResnetV2", "152")

    network = None
    init_fn = None
    if model == "FC-DenseNet56" or model == "FC-DenseNet67" or model == "FC-DenseNet103":
        network = build_fc_densenet(net_input,
                                    preset_model=model,
                                    num_classes=num_class)
    elif model == "RefineNet-Res50" or model == "RefineNet-Res101" or model == "RefineNet-Res152":
        # RefineNet requires pre-trained ResNet weights
        network, init_fn = build_refinenet(net_input,
                                           preset_model=model,
                                           num_classes=num_class)
    elif model == "FRRN-A" or model == "FRRN-B":
        network = build_frrn(net_input,
                             preset_model=model,
                             num_classes=num_class)
    elif model == "Encoder-Decoder" or model == "Encoder-Decoder-Skip":
        network = build_encoder_decoder(net_input,
                                        preset_model=model,
                                        num_classes=num_class)
    elif model == "MobileUNet" or model == "MobileUNet-Skip":
        network = build_mobile_unet(net_input,
                                    preset_model=model,
                                    num_classes=num_class)
    elif model == "PSPNet-Res50" or model == "PSPNet-Res101" or model == "PSPNet-Res152":
        # Image size is required for PSPNet
        # PSPNet requires pre-trained ResNet weights
        network, init_fn = build_pspnet(
            net_input,
            label_size=[args.crop_height, args.crop_width],
            preset_model=model,
            num_classes=num_class)
    elif model == "GCN-Res50" or model == "GCN-Res101" or model == "GCN-Res152":
        # GCN requires pre-trained ResNet weights
        network, init_fn = build_gcn(net_input,
                                     preset_model=model,
                                     num_classes=num_class)
    elif model == "DeepLabV3-Res50" or model == "DeepLabV3-Res101" or model == "DeepLabV3-Res152":
        # DeepLabV requires pre-trained ResNet weights
        network, init_fn = build_deeplabv3(net_input,
                                           preset_model=model,
                                           num_classes=num_class)
    elif model == "DeepLabV3_plus-Res50" or model == "DeepLabV3_plus-Res101" or model == "DeepLabV3_plus-Res152":
        # DeepLabV3+ requires pre-trained ResNet weights
        network, init_fn = build_deeplabv3_plus(net_input,
                                                preset_model=model,
                                                num_classes=num_class)
    elif model == "AdapNet":
        network = build_adaptnet(net_input, num_classes=num_class)
    elif model == "custom":
        network = build_custom(net_input, num_class)
    else:
        raise ValueError(
            "Error: the model %d is not available. Try checking which models are available using the command python main.py --help"
        )
    return network, init_fn
Exemple #5
0
def build_model(model_name,
                net_input,
                num_classes,
                frontend="ResNet101",
                is_training=True):
    # Get the selected model.
    # Some of them require pre-trained ResNet

    print("Preparing the model ...")

    if model_name not in SUPPORTED_MODELS:
        raise ValueError(
            "The model you selelect is not supported. The following models are currently supported: {0}"
            .format(SUPPORTED_MODELS))

    if frontend not in SUPPORTED_FRONTENDS:
        raise ValueError(
            "The frontend you selelect is not supported. The following models are currently supported: {0}"
            .format(SUPPORTED_FRONTENDS))

    if "ResNet50" == frontend and not os.path.isfile(
            "models/resnet_v2_50.ckpt"):
        download_checkpoints("ResNet50")
    if "ResNet101" == frontend and not os.path.isfile(
            "models/resnet_v2_101.ckpt"):
        download_checkpoints("ResNet101")
    if "ResNet152" == frontend and not os.path.isfile(
            "models/resnet_v2_152.ckpt"):
        download_checkpoints("ResNet152")
    if "MobileNetV2" == frontend and not os.path.isfile(
            "models/mobilenet_v2_1.4_224.ckpt.data-00000-of-00001"):
        download_checkpoints("MobileNetV2")
    if "InceptionV4" == frontend and not os.path.isfile(
            "models/inception_v4.ckpt"):
        download_checkpoints("InceptionV4")

    network = None
    init_fn = None
    if model_name == "FC-DenseNet56" or model_name == "FC-DenseNet67" or model_name == "FC-DenseNet103":
        network = build_fc_densenet(net_input,
                                    preset_model=model_name,
                                    num_classes=num_classes)
    elif model_name == "RefineNet":
        # RefineNet requires pre-trained ResNet weights
        network, init_fn = build_refinenet(net_input,
                                           preset_model=model_name,
                                           frontend=frontend,
                                           num_classes=num_classes,
                                           is_training=is_training)
    elif model_name == "FRRN-A" or model_name == "FRRN-B":
        network = build_frrn(net_input,
                             preset_model=model_name,
                             num_classes=num_classes)
    elif model_name == "Encoder-Decoder" or model_name == "Encoder-Decoder-Skip":
        network = build_encoder_decoder(net_input,
                                        preset_model=model_name,
                                        num_classes=num_classes)
    elif model_name == "MobileUNet" or model_name == "MobileUNet-Skip":
        network = build_mobile_unet(net_input,
                                    preset_model=model_name,
                                    num_classes=num_classes)
    elif model_name == "PSPNet":
        # Image size is required for PSPNet
        # PSPNet requires pre-trained ResNet weights
        network, init_fn = build_pspnet(
            net_input,
            label_size=[args.crop_height, args.crop_width],
            preset_model=model_name,
            frontend=frontend,
            num_classes=num_classes,
            is_training=is_training)
    elif model_name == "GCN":
        # GCN requires pre-trained ResNet weights
        network, init_fn = build_gcn(net_input,
                                     preset_model=model_name,
                                     frontend=frontend,
                                     num_classes=num_classes,
                                     is_training=is_training)
    elif model_name == "DeepLabV3":
        # DeepLabV requires pre-trained ResNet weights
        network, init_fn = build_deeplabv3(net_input,
                                           preset_model=model_name,
                                           frontend=frontend,
                                           num_classes=num_classes,
                                           is_training=is_training)
    elif model_name == "DeepLabV3_plus":
        # DeepLabV3+ requires pre-trained ResNet weights
        network, init_fn = build_deeplabv3_plus(net_input,
                                                preset_model=model_name,
                                                frontend=frontend,
                                                num_classes=num_classes,
                                                is_training=is_training)
    elif model_name == "AdapNet":
        network = build_adaptnet(net_input, num_classes=num_classes)
    elif model_name == "custom":
        network = build_custom(net_input, num_classes)
    else:
        raise ValueError(
            "Error: the model %d is not available. Try checking which models are available using the command python main.py --help"
        )

    return network, init_fn