szagoruyko / loadcaffe

Load Caffe networks in Torch7
BSD 2-Clause "Simplified" License
492 stars 165 forks source link

loadcaffe

Load Caffe networks in Torch7 http://torch.ch

Install torch first. There is no Caffe dependency, only protobuf has to be installed. In Ubuntu do:

sudo apt-get install libprotobuf-dev protobuf-compiler

In OS X:

brew install protobuf

Then install the package itself:

luarocks install loadcaffe

In Ubuntu 16.04 you need to use gcc-5: CC=gcc-5 CXX=g++-5 luarocks install loadcaffe

Load a network:

require 'loadcaffe'

model = loadcaffe.load('deploy.prototxt', 'bvlc_alexnet.caffemodel', 'ccn2')

Models from Caffe Model Zoo:

Network ccn2 nn cudnn
bvlc_alexnet + - +
bvlc_reference_caffenet + - +
bvlc_reference_rcnn_ilsvrc13 + - +
finetune_flickr_style + - +
VGG_CNN_S + + +
VGG_CNN_M + + +
VGG_CNN_M_2048 + + +
VGG_CNN_M_1024 + + +
VGG_CNN_M_128 + + +
VGG_CNN_F + + +
VGG ILSVRC-2014 16-layer + + +
VGG ILSVRC-2014 19-layer + + +
Network-in-Network Imagenet - + +
Network-in-Network CIFAR-10 - + +
VGG16_SalObjSub + + +
AlexNex_SalObjSub + - +
Binary Hash Codes + - +
Oxford 102 Flowers + - +
Age&Gender + + +
MNIST LeNet - + +

Loading googlenet is supported by https://github.com/soumith/inception.torch For other models with non-sequential structure check https://github.com/nhynes/caffegraph

NN support means both CPU and GPU backends.

You can also use Caffe inside Torch with this: https://github.com/szagoruyko/torch-caffe-binding However you can't use both loadcaffe and caffe in one torch session.

An example of using the package is in examples/mnist_lenet.lua. After running script to train lenet model in Caffe you can easily load and test it in Torch7 on CPU and GPU (with 'cuda' as a first arguments)

Some of ImageNet networks are validated to give reported accuracy in torch in https://github.com/szagoruyko/imagenet-validation.torch

Rights to caffe.proto belong to the University of California.