This repository contains all the files for you to complete the 'Getting Started with SegNet' and the 'Bayesian SegNet' tutorials here: http://mi.eng.cam.ac.uk/projects/segnet/tutorial.html
Please see this link for detailed instructions.
I added a Dockerfile for cudnn5. It is using caffe-segnet-cudnn5. In case you are using a GPU with Pascal architecture, you might have to use this Dockerfile.
SegNet requires a modified version of Caffe to run. Please download and compile caffe-segnet to use these models: https://github.com/alexgkendall/caffe-segnet
This version supports cudnn v2 acceleration. @TimoSaemann has a branch supporting a more recent version of Caffe (Dec 2016) with cudnn v5.1: https://github.com/TimoSaemann/caffe-segnet-cudnn5
If you would just like to try out an example model, then you can find the model used in the SegNet webdemo in the folder Example_Models/
. You will need to download the weights separately using the link in the SegNet Model Zoo.
First open Scripts/webcam_demo.py
and edit line 14 to match the path to your installation of SegNet. You will also need a webcam, or alternatively edit line 39 to input a video file instead. To run the demo use the command:
python Scripts/webcam_demo.py --model Example_Models/segnet_model_driving_webdemo.prototxt --weights Example_Models/segnet_weights_driving_webdemo.caffemodel --colours Scripts/camvid12.png
Use docker to compile caffe and run the examples. In order to run caffe on the gpu using docker, please install nvidia-docker (see https://github.com/NVIDIA/nvidia-docker or using ansbile: https://galaxy.ansible.com/ryanolson/nvidia-docker/)
to run caffe on the CPU:
docker build -t bvlc/caffe:cpu ./cpu
# check if working
docker run -ti bvlc/caffe:cpu caffe --version
# get a bash in container to run examples
docker run -ti --volume=$(pwd):/SegNet -u $(id -u):$(id -g) bvlc/caffe:cpu bash
to run caffe on the GPU:
docker build -t bvlc/caffe:gpu ./gpu
# check if working
docker run -ti bvlc/caffe:gpu caffe device_query -gpu 0
# get a bash in container to run examples
docker run -ti --volume=$(pwd):/SegNet -u $(id -u):$(id -g) bvlc/caffe:gpu bash
to run caffe on the GPU (cudnn 5):
docker build -t bvlc/caffe:gpu ./gpu-cudnn5
# check if working
docker run -ti bvlc/caffe:gpu caffe device_query -gpu 0
# get a bash in container to run examples
docker run -ti --volume=$(pwd):/SegNet -u $(id -u):$(id -g) bvlc/caffe:gpu bash
If you want to run the webcam_demo.py, the docker container should access the host's display and webcam. Run this commands to run the Docker container. Change docker to nvidia-docker if you are using gpu version.
xhost local:root
docker run -it --env="DISPLAY" --env QT_X11_NO_MITSHM=1 --volume="/etc/group:/etc/group:ro" --volume="/etc/shadow:/etc/shadow:ro" --volume="/etc/sudoers.d:/etc/sudoers.d:ro" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --device=/dev/video0:/dev/video0 (image_name) /bin/bash
A number of example models for indoor and outdoor road scene understanding can be found in the SegNet Model Zoo.
For more information about the SegNet architecture:
http://arxiv.org/abs/1511.02680 Alex Kendall, Vijay Badrinarayanan and Roberto Cipolla "Bayesian SegNet: Model Uncertainty in Deep Convolutional Encoder-Decoder Architectures for Scene Understanding." arXiv preprint arXiv:1511.02680, 2015.
http://arxiv.org/abs/1511.00561 Vijay Badrinarayanan, Alex Kendall and Roberto Cipolla "SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation." PAMI, 2017.
This software is released under a creative commons license which allows for personal and research use only. For a commercial license please contact the authors. You can view a license summary here: http://creativecommons.org/licenses/by-nc/4.0/
Alex Kendall
Cambridge University