Code Monkey home page Code Monkey logo

keras-linknet's Introduction

Keras-LinkNet

Keras implementation of LinkNet: Exploiting Encoder Representations for Efficient Semantic Segmentation, ported from the lua-torch (LinkNet) and PyTorch (pytorch-linknet) implementation, both created by the authors.

Dataset Classes 1 Input resolution Batch size Mean IoU (%)
CamVid 12 960x480 2 47.152
Cityscapes 20 1024x512 2 53.373

1 Includes the unlabeled/void class.
2 Test set.
3 Validation set.

Installation

  1. Python 3 and pip.
  2. Set up a virtual environment (optional, but recommended).
  3. Install dependencies using pip: pip install -r requirements.txt.

Usage

Run main.py, the main script file used for training and/or testing the model. The following options are supported:

python main.py [-h] [--mode {train,test,full}] [--resume]
               [--initial-epoch INITIAL_EPOCH] [--no-pretrained-encoder]
               [--weights-path WEIGHTS_PATH] [--batch-size BATCH_SIZE]
               [--epochs EPOCHS] [--learning-rate LEARNING_RATE]
               [--lr-decay LR_DECAY] [--lr-decay-epochs LR_DECAY_EPOCHS]
               [--dataset {camvid,cityscapes}] [--dataset-dir DATASET_DIR]
               [--workers WORKERS] [--verbose {0,1,2}] [--name NAME]
               [--checkpoint-dir CHECKPOINT_DIR]

For help on the optional arguments run: python main.py -h

Examples: Training

python main.py -m train --checkpoint-dir save/folder/ --name model_name --dataset name --dataset-dir path/root_directory/

Examples: Resuming training

python main.py -m train --resume True --initial-epoch 10 --checkpoint-dir save/folder/ --name model_name --dataset name --dataset-dir path/root_directory/

Examples: Testing

python main.py -m test --checkpoint-dir save/folder/ --name model_name --dataset name --dataset-dir path/root_directory/

Project structure

Folders

  • data: Contains code to load the supported datasets.
  • metrics: Evaluation-related metrics.
  • models: LinkNet model definition.
  • checkpoints: By default, main.py will save models in this folder. The pre-trained encoder (ResNet18) trained on ImageNet can be found here.

Files

  • args.py: Contains all command-line options.
  • main.py: Main script file used for training and/or testing the model.
  • callbacks.py: Custom callbacks are defined here.

keras-linknet's People

Contributors

davidtvs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

keras-linknet's Issues

Is it not necessary to calculate 'mean-iou' per image, and then over batch?

Below code lines in _mean_iou function flattens the target & prediction for a complete batch.

    target = np.argmax(y_true, axis=-1).ravel()
    predicted = np.argmax(y_pred, axis=-1).ravel()

Instead, shall it not be first, per image, and then over a batch of images?

    target = np.argmax(y_true, axis=-1).ravel().reshape(batch_size, -1)
    predicted = np.argmax(y_pred, axis=-1).ravel().reshape(batch_size, -1)

    x = predict + num_classes * target
    bincount_2d = np.array([np.bincount(x[i].astype(np.int32), minlength=num_classes**2) for i in range(batch_size)])
    conf = bincount_2d.reshape((-1, num_classes, num_classes))
    
    true_positive = np.array([np.diag(conf[i]) for i in range(batch_size)])
    false_positive = np.sum(conf, axis=1) - true_positive
    false_negative = np.sum(conf, axis=2) - true_positive

Would like to know your suggestion.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.