The code under this repository provides an implementation of a neural network for blur segmentation in images. It is written in Julia and uses the Mocha framwork for deep learning.
For more details on the network or the method please refer to the paper.
You will need a working installation of the following Julia packages:
Run demo.jl
to do a segmentation for the example image image.jpg
, using the provided network parameters in snapshot.jld
.
The file segmentation.jl
provides a function blursegmentation(net, image)
that will return the probabilty map and the segmentation, given a network and an image.
For convenience create_segmentation_net()
will create the required network for you. All you need to do is to load the network parameters from a snapshot of a network with the same topology.
To train the network yourself, you will need trainings data. Please refer to the readme in the dataset
folder for further instructions on how to get the required data.
After that you can simply run train.jl
.
The training process will take some time and the intermediate training state will be saved to a snapshots
folder. We highly recommend to use the GPU backend for training. If you want to use other options, you can change the solver parameters.
To evaluate a network, run eval.jl
. It will compute segmentations for all images in dataset/evalset
and compare them to the ground truth using Intersection-over-union.