All Projects → arahusky → Tensorflow Segmentation

arahusky / Tensorflow Segmentation

Semantic image segmentation in Tensorflow

Projects that are alternatives of or similar to Tensorflow Segmentation

Pixel level land classification
Tutorial demonstrating how to create a semantic segmentation (pixel-level classification) model to predict land cover from aerial imagery. This model can be used to identify newly developed or flooded land. Uses ground-truth labels and processed NAIP imagery provided by the Chesapeake Conservancy.
Stars: ✭ 217 (-16.54%)
Mutual labels:  jupyter-notebook, image-segmentation
Ternausnetv2
TernausNetV2: Fully Convolutional Network for Instance Segmentation
Stars: ✭ 521 (+100.38%)
Mutual labels:  jupyter-notebook, image-segmentation
Pytorch Unet
Simple PyTorch implementations of U-Net/FullyConvNet (FCN) for image segmentation
Stars: ✭ 470 (+80.77%)
Mutual labels:  jupyter-notebook, image-segmentation
Concise Ipython Notebooks For Deep Learning
Ipython Notebooks for solving problems like classification, segmentation, generation using latest Deep learning algorithms on different publicly available text and image data-sets.
Stars: ✭ 23 (-91.15%)
Mutual labels:  jupyter-notebook, image-segmentation
Lovaszsoftmax
Code for the Lovász-Softmax loss (CVPR 2018)
Stars: ✭ 1,148 (+341.54%)
Mutual labels:  jupyter-notebook, image-segmentation
Multiclass Semantic Segmentation Camvid
Tensorflow 2 implementation of complete pipeline for multiclass image semantic segmentation using UNet, SegNet and FCN32 architectures on Cambridge-driving Labeled Video Database (CamVid) dataset.
Stars: ✭ 67 (-74.23%)
Mutual labels:  jupyter-notebook, image-segmentation
Robot Surgery Segmentation
Wining solution and its improvement for MICCAI 2017 Robotic Instrument Segmentation Sub-Challenge
Stars: ✭ 528 (+103.08%)
Mutual labels:  jupyter-notebook, image-segmentation
Trimap generator
Generating automatic trimap through pixel dilation and strongly-connected-component algorithms
Stars: ✭ 119 (-54.23%)
Mutual labels:  jupyter-notebook, image-segmentation
Solt
Streaming over lightweight data transformations
Stars: ✭ 249 (-4.23%)
Mutual labels:  jupyter-notebook, image-segmentation
Siamese Mask Rcnn
Siamese Mask R-CNN model for one-shot instance segmentation
Stars: ✭ 257 (-1.15%)
Mutual labels:  jupyter-notebook
Study Group
Deep Learning Study Group
Stars: ✭ 258 (-0.77%)
Mutual labels:  jupyter-notebook
Numpy
Jupyter Notebook & Data Associated with my Tutorial video on the Python NumPy Library
Stars: ✭ 255 (-1.92%)
Mutual labels:  jupyter-notebook
Keras Tutorials
Simple tutorials using Keras Framework
Stars: ✭ 257 (-1.15%)
Mutual labels:  jupyter-notebook
Npy Matlab
Experimental code to read/write NumPy .NPY files in MATLAB
Stars: ✭ 258 (-0.77%)
Mutual labels:  jupyter-notebook
Whale
Stars: ✭ 257 (-1.15%)
Mutual labels:  jupyter-notebook
Restapi
REST API is a web-based API using a Websocket connection. Developers and investors can create custom trading applications, integrate into our platform, back test strategies and build robot trading.
Stars: ✭ 260 (+0%)
Mutual labels:  jupyter-notebook
Place Recognition Using Autoencoders And Nn
Place recognition with WiFi fingerprints using Autoencoders and Neural Networks
Stars: ✭ 256 (-1.54%)
Mutual labels:  jupyter-notebook
Pytorch Cheatsheet
Check out improved:
Stars: ✭ 256 (-1.54%)
Mutual labels:  jupyter-notebook
Python Is Cool
Cool Python features for machine learning that I used to be too afraid to use. Will be updated as I have more time / learn more.
Stars: ✭ 2,962 (+1039.23%)
Mutual labels:  jupyter-notebook
Dataset Api
The ApolloScape Open Dataset for Autonomous Driving and its Application.
Stars: ✭ 260 (+0%)
Mutual labels:  jupyter-notebook

Image segmentation

This project implements neural network for semantic segmentation in Tensorflow .

Project overview

The main file of the project is convolutional_autoencoder.py, which contains code for dataset processing (class Dataset), model definition (class Model) and also code for training.

To abstract layers in the model, we created layer.py class interface. This class has currently two implementations: conv2d.py and max_pool_2d.py.

To infer on the trained model, have a look at infer.py file.

Finally, there are several folders:

  • data* contain preprocessed dataset (Please note that current model implementation is supposed to work with at least 128x128 images.)
  • imgaug contains code for data augmentation (https://github.com/aleju/imgaug)
  • noteboks contains some interesting image segmentation ipython notebooks

Model architecture

General overview

There are many neural network architectures for semantic image segmentation (to have some basic overview, you can read project_summary.pdf), but most of them use convolutional encoder-decoder architecture.

Convolutional encoder-decoder architecture of popular SegNet model

Encoder in these networks has in many cases structure similar to some image classification neural network (e.g. vgg-16). Layers in the decoder are then ussualy inverse to layers used in the encoder (e.g. for convolution that makes its input smaller, we use deconvolution; for max_pool we use some form of "demax_pool").

Project

Inspired by previous success of convolutional encoder-decoder architectures, we decided to implement it as well. In the encoder part, we use three similar "modules", each consisting of convolution layer with stride 2 followed by convolutution layer with stride 1 and no-overlapping max_pool with kernel 2. The decoder section then for each layer in the encoder contains its "counter-part" (network output dimension == input dimension):

  • for no-shrinking convolution layer use the same layer
  • for shrinking convolution layer use transposed deconvolution with same arguments
  • for max pool layer use nearest neighbour upsampling (tf.image.resize_nearest_neighbor)

We also found that adding skip-links from encoder to decoder makes the model perform better (~1%).

*Convolutional encoder-decoder architecture used in this project*

Dataset

This project uses publicly available dataset of faces: http://vis-www.cs.umass.edu/lfw/part_labels. The repository contains three versions of this dataset differing in the image resolution (28x28, 128x128, 250x250).

The original dataset consists of three target categories (face, hair, background). To make the segmentation easier, we decided to create two subsets of original targets: one containing merged hair and background classes("targets_face_only") and other containing merged hair and face classes("targets").

Results:

We experimented with several architectures (some of them are mentioned in project_summary.pdf). Even though original images are RGB, we decided to use them in grayscale. The best performance we managed to achieve on 128x128 images was 97.36% in means of per-pixel accuracy.

*Sample results of the best model segmentation. The first row contains input faces, second ground truth image segmentation, third model output and the fourth row shows thresholded model output*

Requirements:

  • Python 3.5
  • Tensorflow > 1.0
  • Opencv 3.x

References:

Collaborators

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].