├── .idea
├── misc.xml
├── modules.xml
├── textspotter.iml
├── vcs.xml
└── workspace.xml
├── README.md
├── caffe
├── .Doxyfile
├── .github
│ └── ISSUE_TEMPLATE.md
├── .gitignore
├── .travis.yml
├── CMakeLists.txt
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── INSTALL.md
├── LICENSE
├── Makefile
├── Makefile.config.example
├── README.md
├── caffe.cloc
├── cmake
│ ├── ConfigGen.cmake
│ ├── Cuda.cmake
│ ├── Dependencies.cmake
│ ├── External
│ │ ├── gflags.cmake
│ │ └── glog.cmake
│ ├── Misc.cmake
│ ├── Modules
│ │ ├── FindAtlas.cmake
│ │ ├── FindGFlags.cmake
│ │ ├── FindGlog.cmake
│ │ ├── FindLAPACK.cmake
│ │ ├── FindLMDB.cmake
│ │ ├── FindLevelDB.cmake
│ │ ├── FindMKL.cmake
│ │ ├── FindMatlabMex.cmake
│ │ ├── FindNCCL.cmake
│ │ ├── FindNumPy.cmake
│ │ ├── FindOpenBLAS.cmake
│ │ ├── FindSnappy.cmake
│ │ └── FindvecLib.cmake
│ ├── ProtoBuf.cmake
│ ├── Summary.cmake
│ ├── Targets.cmake
│ ├── Templates
│ │ ├── CaffeConfig.cmake.in
│ │ ├── CaffeConfigVersion.cmake.in
│ │ └── caffe_config.h.in
│ ├── Uninstall.cmake.in
│ ├── Utils.cmake
│ └── lint.cmake
├── docker
│ ├── README.md
│ ├── cpu
│ │ └── Dockerfile
│ └── gpu
│ │ └── Dockerfile
├── docs
│ ├── CMakeLists.txt
│ ├── CNAME
│ ├── README.md
│ ├── _config.yml
│ ├── _layouts
│ │ └── default.html
│ ├── development.md
│ ├── images
│ │ ├── GitHub-Mark-64px.png
│ │ └── caffeine-icon.png
│ ├── index.md
│ ├── install_apt.md
│ ├── install_apt_debian.md
│ ├── install_osx.md
│ ├── install_yum.md
│ ├── installation.md
│ ├── model_zoo.md
│ ├── multigpu.md
│ ├── stylesheets
│ │ ├── pygment_trac.css
│ │ ├── reset.css
│ │ └── styles.css
│ └── tutorial
│ │ ├── convolution.md
│ │ ├── data.md
│ │ ├── fig
│ │ ├── .gitignore
│ │ ├── backward.jpg
│ │ ├── forward.jpg
│ │ ├── forward_backward.png
│ │ ├── layer.jpg
│ │ └── logreg.jpg
│ │ ├── forward_backward.md
│ │ ├── index.md
│ │ ├── interfaces.md
│ │ ├── layers.md
│ │ ├── layers
│ │ ├── absval.md
│ │ ├── accuracy.md
│ │ ├── argmax.md
│ │ ├── batchnorm.md
│ │ ├── batchreindex.md
│ │ ├── bias.md
│ │ ├── bnll.md
│ │ ├── concat.md
│ │ ├── contrastiveloss.md
│ │ ├── convolution.md
│ │ ├── crop.md
│ │ ├── data.md
│ │ ├── deconvolution.md
│ │ ├── dropout.md
│ │ ├── dummydata.md
│ │ ├── eltwise.md
│ │ ├── elu.md
│ │ ├── embed.md
│ │ ├── euclideanloss.md
│ │ ├── exp.md
│ │ ├── filter.md
│ │ ├── flatten.md
│ │ ├── hdf5data.md
│ │ ├── hdf5output.md
│ │ ├── hingeloss.md
│ │ ├── im2col.md
│ │ ├── imagedata.md
│ │ ├── infogainloss.md
│ │ ├── innerproduct.md
│ │ ├── input.md
│ │ ├── log.md
│ │ ├── lrn.md
│ │ ├── lstm.md
│ │ ├── memorydata.md
│ │ ├── multinomiallogisticloss.md
│ │ ├── mvn.md
│ │ ├── parameter.md
│ │ ├── pooling.md
│ │ ├── power.md
│ │ ├── prelu.md
│ │ ├── python.md
│ │ ├── recurrent.md
│ │ ├── reduction.md
│ │ ├── relu.md
│ │ ├── reshape.md
│ │ ├── rnn.md
│ │ ├── scale.md
│ │ ├── sigmoid.md
│ │ ├── sigmoidcrossentropyloss.md
│ │ ├── silence.md
│ │ ├── slice.md
│ │ ├── softmax.md
│ │ ├── softmaxwithloss.md
│ │ ├── split.md
│ │ ├── spp.md
│ │ ├── tanh.md
│ │ ├── threshold.md
│ │ ├── tile.md
│ │ └── windowdata.md
│ │ ├── loss.md
│ │ ├── net_layer_blob.md
│ │ └── solver.md
├── examples
│ ├── 00-classification.ipynb
│ ├── 01-learning-lenet.ipynb
│ ├── 02-fine-tuning.ipynb
│ ├── CMakeLists.txt
│ ├── brewing-logreg.ipynb
│ ├── cifar10
│ │ ├── cifar10_full.prototxt
│ │ ├── cifar10_full_sigmoid_solver.prototxt
│ │ ├── cifar10_full_sigmoid_solver_bn.prototxt
│ │ ├── cifar10_full_sigmoid_train_test.prototxt
│ │ ├── cifar10_full_sigmoid_train_test_bn.prototxt
│ │ ├── cifar10_full_solver.prototxt
│ │ ├── cifar10_full_solver_lr1.prototxt
│ │ ├── cifar10_full_solver_lr2.prototxt
│ │ ├── cifar10_full_train_test.prototxt
│ │ ├── cifar10_quick.prototxt
│ │ ├── cifar10_quick_solver.prototxt
│ │ ├── cifar10_quick_solver_lr1.prototxt
│ │ ├── cifar10_quick_train_test.prototxt
│ │ ├── convert_cifar_data.cpp
│ │ ├── create_cifar10.sh
│ │ ├── readme.md
│ │ ├── train_full.sh
│ │ ├── train_full_sigmoid.sh
│ │ ├── train_full_sigmoid_bn.sh
│ │ └── train_quick.sh
│ ├── cpp_classification
│ │ ├── classification.cpp
│ │ └── readme.md
│ ├── detection.ipynb
│ ├── feature_extraction
│ │ ├── imagenet_val.prototxt
│ │ └── readme.md
│ ├── finetune_flickr_style
│ │ ├── assemble_data.py
│ │ ├── flickr_style.csv.gz
│ │ ├── readme.md
│ │ └── style_names.txt
│ ├── finetune_pascal_detection
│ │ ├── pascal_finetune_solver.prototxt
│ │ └── pascal_finetune_trainval_test.prototxt
│ ├── hdf5_classification
│ │ ├── nonlinear_auto_test.prototxt
│ │ ├── nonlinear_auto_train.prototxt
│ │ ├── nonlinear_train_val.prototxt
│ │ └── train_val.prototxt
│ ├── imagenet
│ │ ├── create_imagenet.sh
│ │ ├── make_imagenet_mean.sh
│ │ ├── readme.md
│ │ ├── resume_training.sh
│ │ └── train_caffenet.sh
│ ├── images
│ │ ├── cat gray.jpg
│ │ ├── cat.jpg
│ │ ├── cat_gray.jpg
│ │ └── fish-bike.jpg
│ ├── mnist
│ │ ├── convert_mnist_data.cpp
│ │ ├── create_mnist.sh
│ │ ├── lenet.prototxt
│ │ ├── lenet_adadelta_solver.prototxt
│ │ ├── lenet_auto_solver.prototxt
│ │ ├── lenet_consolidated_solver.prototxt
│ │ ├── lenet_multistep_solver.prototxt
│ │ ├── lenet_solver.prototxt
│ │ ├── lenet_solver_adam.prototxt
│ │ ├── lenet_solver_rmsprop.prototxt
│ │ ├── lenet_train_test.prototxt
│ │ ├── mnist_autoencoder.prototxt
│ │ ├── mnist_autoencoder_solver.prototxt
│ │ ├── mnist_autoencoder_solver_adadelta.prototxt
│ │ ├── mnist_autoencoder_solver_adagrad.prototxt
│ │ ├── mnist_autoencoder_solver_nesterov.prototxt
│ │ ├── readme.md
│ │ ├── train_lenet.sh
│ │ ├── train_lenet_adam.sh
│ │ ├── train_lenet_consolidated.sh
│ │ ├── train_lenet_docker.sh
│ │ ├── train_lenet_rmsprop.sh
│ │ ├── train_mnist_autoencoder.sh
│ │ ├── train_mnist_autoencoder_adadelta.sh
│ │ ├── train_mnist_autoencoder_adagrad.sh
│ │ └── train_mnist_autoencoder_nesterov.sh
│ ├── net_surgery.ipynb
│ ├── net_surgery
│ │ ├── bvlc_caffenet_full_conv.prototxt
│ │ └── conv.prototxt
│ ├── pascal-multilabel-with-datalayer.ipynb
│ ├── pycaffe
│ │ ├── caffenet.py
│ │ ├── layers
│ │ │ ├── pascal_multilabel_datalayers.py
│ │ │ └── pyloss.py
│ │ ├── linreg.prototxt
│ │ └── tools.py
│ ├── siamese
│ │ ├── convert_mnist_siamese_data.cpp
│ │ ├── create_mnist_siamese.sh
│ │ ├── mnist_siamese.ipynb
│ │ ├── mnist_siamese.prototxt
│ │ ├── mnist_siamese_solver.prototxt
│ │ ├── mnist_siamese_train_test.prototxt
│ │ ├── readme.md
│ │ └── train_mnist_siamese.sh
│ └── web_demo
│ │ ├── app.py
│ │ ├── exifutil.py
│ │ ├── readme.md
│ │ ├── requirements.txt
│ │ └── templates
│ │ └── index.html
├── include
│ └── caffe
│ │ ├── blob.hpp
│ │ ├── caffe.hpp
│ │ ├── common.hpp
│ │ ├── data_transformer.hpp
│ │ ├── filler.hpp
│ │ ├── internal_thread.hpp
│ │ ├── layer.hpp
│ │ ├── layer_factory.hpp
│ │ ├── layers
│ │ ├── absval_layer.hpp
│ │ ├── accuracy_layer.hpp
│ │ ├── argmax_layer.hpp
│ │ ├── at_layer.hpp
│ │ ├── attention_lstm_layer.hpp
│ │ ├── base_conv_layer.hpp
│ │ ├── base_data_layer.hpp
│ │ ├── batch_norm_layer.hpp
│ │ ├── batch_reindex_layer.hpp
│ │ ├── bias_layer.hpp
│ │ ├── bnll_layer.hpp
│ │ ├── concat_layer.hpp
│ │ ├── contrastive_loss_layer.hpp
│ │ ├── conv_layer.hpp
│ │ ├── cosinangle_loss_layer.hpp
│ │ ├── crop_layer.hpp
│ │ ├── cudnn_conv_layer.hpp
│ │ ├── cudnn_lcn_layer.hpp
│ │ ├── cudnn_lrn_layer.hpp
│ │ ├── cudnn_pooling_layer.hpp
│ │ ├── cudnn_relu_layer.hpp
│ │ ├── cudnn_sigmoid_layer.hpp
│ │ ├── cudnn_softmax_layer.hpp
│ │ ├── cudnn_tanh_layer.hpp
│ │ ├── data_layer.hpp
│ │ ├── deconv_layer.hpp
│ │ ├── dropout_layer.hpp
│ │ ├── dummy_data_layer.hpp
│ │ ├── eltwise_layer.hpp
│ │ ├── elu_layer.hpp
│ │ ├── embed_layer.hpp
│ │ ├── euclidean_loss_layer.hpp
│ │ ├── exp_layer.hpp
│ │ ├── filter_layer.hpp
│ │ ├── flatten_layer.hpp
│ │ ├── hdf5_data_layer.hpp
│ │ ├── hdf5_output_layer.hpp
│ │ ├── hinge_loss_layer.hpp
│ │ ├── im2col_layer.hpp
│ │ ├── image_data_layer.hpp
│ │ ├── infogain_loss_layer.hpp
│ │ ├── inner_product_layer.hpp
│ │ ├── input_layer.hpp
│ │ ├── log_layer.hpp
│ │ ├── loss_layer.hpp
│ │ ├── lrn_layer.hpp
│ │ ├── lstm_layer.hpp
│ │ ├── lstm_new_layer.hpp
│ │ ├── memory_data_layer.hpp
│ │ ├── multinomial_logistic_loss_layer.hpp
│ │ ├── mvn_layer.hpp
│ │ ├── neuron_layer.hpp
│ │ ├── parameter_layer.hpp
│ │ ├── point_bilinear_layer.hpp
│ │ ├── pooling_layer.hpp
│ │ ├── power_layer.hpp
│ │ ├── prelu_layer.hpp
│ │ ├── python_layer.hpp
│ │ ├── recurrent_layer.hpp
│ │ ├── reduction_layer.hpp
│ │ ├── relu_layer.hpp
│ │ ├── reshape_layer.hpp
│ │ ├── reverse_axis_layer.hpp
│ │ ├── reverse_layer.hpp
│ │ ├── rnn_layer.hpp
│ │ ├── roi_pooling_layer.hpp
│ │ ├── scale_layer.hpp
│ │ ├── sigmoid_cross_entropy_loss_layer.hpp
│ │ ├── sigmoid_layer.hpp
│ │ ├── silence_layer.hpp
│ │ ├── slice_layer.hpp
│ │ ├── smooth_L1_loss_layer.hpp
│ │ ├── softmax_layer.hpp
│ │ ├── softmax_loss_layer.hpp
│ │ ├── split_layer.hpp
│ │ ├── spp_layer.hpp
│ │ ├── sum_layer.hpp
│ │ ├── tanh_layer.hpp
│ │ ├── threshold_layer.hpp
│ │ ├── tile_layer.hpp
│ │ ├── transpose_layer.hpp
│ │ ├── unitbox_data_layer.hpp
│ │ ├── unitbox_loss_layer.hpp
│ │ └── window_data_layer.hpp
│ │ ├── net.hpp
│ │ ├── parallel.hpp
│ │ ├── sgd_solvers.hpp
│ │ ├── solver.hpp
│ │ ├── solver_factory.hpp
│ │ ├── syncedmem.hpp
│ │ ├── test
│ │ ├── test_caffe_main.hpp
│ │ └── test_gradient_check_util.hpp
│ │ └── util
│ │ ├── benchmark.hpp
│ │ ├── blocking_queue.hpp
│ │ ├── cudnn.hpp
│ │ ├── db.hpp
│ │ ├── db_leveldb.hpp
│ │ ├── db_lmdb.hpp
│ │ ├── device_alternate.hpp
│ │ ├── format.hpp
│ │ ├── gpu_util.cuh
│ │ ├── hdf5.hpp
│ │ ├── im2col.hpp
│ │ ├── insert_splits.hpp
│ │ ├── io.hpp
│ │ ├── math_functions.hpp
│ │ ├── mkl_alternate.hpp
│ │ ├── nccl.hpp
│ │ ├── rng.hpp
│ │ ├── signal_handler.h
│ │ └── upgrade_proto.hpp
├── matlab
│ ├── +caffe
│ │ ├── +test
│ │ │ ├── test_io.m
│ │ │ ├── test_net.m
│ │ │ └── test_solver.m
│ │ ├── Blob.m
│ │ ├── Layer.m
│ │ ├── Net.m
│ │ ├── Solver.m
│ │ ├── get_net.m
│ │ ├── get_solver.m
│ │ ├── imagenet
│ │ │ └── ilsvrc_2012_mean.mat
│ │ ├── io.m
│ │ ├── private
│ │ │ ├── CHECK.m
│ │ │ ├── CHECK_FILE_EXIST.m
│ │ │ ├── caffe_.cpp
│ │ │ └── is_valid_handle.m
│ │ ├── reset_all.m
│ │ ├── run_tests.m
│ │ ├── set_device.m
│ │ ├── set_mode_cpu.m
│ │ ├── set_mode_gpu.m
│ │ └── version.m
│ ├── CMakeLists.txt
│ ├── demo
│ │ └── classification_demo.m
│ └── hdf5creation
│ │ ├── .gitignore
│ │ ├── demo.m
│ │ └── store2hdf5.m
├── python
│ ├── CMakeLists.txt
│ ├── caffe
│ │ ├── __init__.py
│ │ ├── _caffe.cpp
│ │ ├── classifier.py
│ │ ├── coord_map.py
│ │ ├── detector.py
│ │ ├── draw.py
│ │ ├── imagenet
│ │ │ └── ilsvrc_2012_mean.npy
│ │ ├── io.py
│ │ ├── net_spec.py
│ │ ├── pycaffe.py
│ │ └── test
│ │ │ ├── test_coord_map.py
│ │ │ ├── test_draw.py
│ │ │ ├── test_gradient_for_python_layer.py
│ │ │ ├── test_io.py
│ │ │ ├── test_layer_type_list.py
│ │ │ ├── test_nccl.py
│ │ │ ├── test_net.py
│ │ │ ├── test_net_spec.py
│ │ │ ├── test_proposal.py
│ │ │ ├── test_python_layer.py
│ │ │ ├── test_python_layer_with_param_str.py
│ │ │ ├── test_solver.py
│ │ │ └── test_w_pooling.py
│ ├── classify.py
│ ├── detect.py
│ ├── draw_net.py
│ ├── requirements.txt
│ └── train.py
├── scripts
│ ├── build_docs.sh
│ ├── caffe
│ ├── copy_notebook.py
│ ├── cpp_lint.py
│ ├── deploy_docs.sh
│ ├── download_model_binary.py
│ ├── download_model_from_gist.sh
│ ├── gather_examples.sh
│ ├── split_caffe_proto.py
│ ├── travis
│ │ ├── build.sh
│ │ ├── configure-cmake.sh
│ │ ├── configure-make.sh
│ │ ├── configure.sh
│ │ ├── defaults.sh
│ │ ├── install-deps.sh
│ │ ├── install-python-deps.sh
│ │ ├── setup-venv.sh
│ │ └── test.sh
│ └── upload_model_to_gist.sh
├── src
│ ├── caffe
│ │ ├── CMakeLists.txt
│ │ ├── blob.cpp
│ │ ├── common.cpp
│ │ ├── data_transformer.cpp
│ │ ├── internal_thread.cpp
│ │ ├── layer.cpp
│ │ ├── layer_factory.cpp
│ │ ├── layers
│ │ │ ├── absval_layer.cpp
│ │ │ ├── absval_layer.cu
│ │ │ ├── accuracy_layer.cpp
│ │ │ ├── argmax_layer.cpp
│ │ │ ├── at_layer.cpp
│ │ │ ├── at_layer.cu
│ │ │ ├── attention_lstm_layer.cpp
│ │ │ ├── base_conv_layer.cpp
│ │ │ ├── base_data_layer.cpp
│ │ │ ├── base_data_layer.cu
│ │ │ ├── batch_norm_layer.cpp
│ │ │ ├── batch_norm_layer.cu
│ │ │ ├── batch_reindex_layer.cpp
│ │ │ ├── batch_reindex_layer.cu
│ │ │ ├── bias_layer.cpp
│ │ │ ├── bias_layer.cu
│ │ │ ├── bnll_layer.cpp
│ │ │ ├── bnll_layer.cu
│ │ │ ├── concat_layer.cpp
│ │ │ ├── concat_layer.cu
│ │ │ ├── contrastive_loss_layer.cpp
│ │ │ ├── contrastive_loss_layer.cu
│ │ │ ├── conv_layer.cpp
│ │ │ ├── conv_layer.cu
│ │ │ ├── cosinangle_loss_layer.cpp
│ │ │ ├── cosinangle_loss_layer.cu
│ │ │ ├── crop_layer.cpp
│ │ │ ├── crop_layer.cu
│ │ │ ├── cudnn_conv_layer.cpp
│ │ │ ├── cudnn_conv_layer.cu
│ │ │ ├── cudnn_lcn_layer.cpp
│ │ │ ├── cudnn_lcn_layer.cu
│ │ │ ├── cudnn_lrn_layer.cpp
│ │ │ ├── cudnn_lrn_layer.cu
│ │ │ ├── cudnn_pooling_layer.cpp
│ │ │ ├── cudnn_pooling_layer.cu
│ │ │ ├── cudnn_relu_layer.cpp
│ │ │ ├── cudnn_relu_layer.cu
│ │ │ ├── cudnn_sigmoid_layer.cpp
│ │ │ ├── cudnn_sigmoid_layer.cu
│ │ │ ├── cudnn_softmax_layer.cpp
│ │ │ ├── cudnn_softmax_layer.cu
│ │ │ ├── cudnn_tanh_layer.cpp
│ │ │ ├── cudnn_tanh_layer.cu
│ │ │ ├── data_layer.cpp
│ │ │ ├── deconv_layer.cpp
│ │ │ ├── deconv_layer.cu
│ │ │ ├── dropout_layer.cpp
│ │ │ ├── dropout_layer.cu
│ │ │ ├── dummy_data_layer.cpp
│ │ │ ├── eltwise_layer.cpp
│ │ │ ├── eltwise_layer.cu
│ │ │ ├── elu_layer.cpp
│ │ │ ├── elu_layer.cu
│ │ │ ├── embed_layer.cpp
│ │ │ ├── embed_layer.cu
│ │ │ ├── euclidean_loss_layer.cpp
│ │ │ ├── euclidean_loss_layer.cu
│ │ │ ├── exp_layer.cpp
│ │ │ ├── exp_layer.cu
│ │ │ ├── filter_layer.cpp
│ │ │ ├── filter_layer.cu
│ │ │ ├── flatten_layer.cpp
│ │ │ ├── hdf5_data_layer.cpp
│ │ │ ├── hdf5_data_layer.cu
│ │ │ ├── hdf5_output_layer.cpp
│ │ │ ├── hdf5_output_layer.cu
│ │ │ ├── hinge_loss_layer.cpp
│ │ │ ├── im2col_layer.cpp
│ │ │ ├── im2col_layer.cu
│ │ │ ├── image_data_layer.cpp
│ │ │ ├── infogain_loss_layer.cpp
│ │ │ ├── inner_product_layer.cpp
│ │ │ ├── inner_product_layer.cu
│ │ │ ├── input_layer.cpp
│ │ │ ├── log_layer.cpp
│ │ │ ├── log_layer.cu
│ │ │ ├── loss_layer.cpp
│ │ │ ├── lrn_layer.cpp
│ │ │ ├── lrn_layer.cu
│ │ │ ├── lstm_layer.cpp
│ │ │ ├── lstm_layer.cu
│ │ │ ├── lstm_new_layer.cpp
│ │ │ ├── lstm_unit_layer.cpp
│ │ │ ├── lstm_unit_layer.cu
│ │ │ ├── memory_data_layer.cpp
│ │ │ ├── multinomial_logistic_loss_layer.cpp
│ │ │ ├── mvn_layer.cpp
│ │ │ ├── mvn_layer.cu
│ │ │ ├── neuron_layer.cpp
│ │ │ ├── parameter_layer.cpp
│ │ │ ├── point_bilinear_layer.cpp
│ │ │ ├── pooling_layer.cpp
│ │ │ ├── pooling_layer.cu
│ │ │ ├── power_layer.cpp
│ │ │ ├── power_layer.cu
│ │ │ ├── prelu_layer.cpp
│ │ │ ├── prelu_layer.cu
│ │ │ ├── recurrent_layer.cpp
│ │ │ ├── recurrent_layer.cu
│ │ │ ├── reduction_layer.cpp
│ │ │ ├── reduction_layer.cu
│ │ │ ├── relu_layer.cpp
│ │ │ ├── relu_layer.cu
│ │ │ ├── reshape_layer.cpp
│ │ │ ├── reverse_axis_layer.cpp
│ │ │ ├── reverse_axis_layer.cu
│ │ │ ├── rnn_layer.cpp
│ │ │ ├── roi_pooling_layer.cpp
│ │ │ ├── roi_pooling_layer.cu
│ │ │ ├── scale_layer.cpp
│ │ │ ├── scale_layer.cu
│ │ │ ├── sigmoid_cross_entropy_loss_layer.cpp
│ │ │ ├── sigmoid_cross_entropy_loss_layer.cu
│ │ │ ├── sigmoid_layer.cpp
│ │ │ ├── sigmoid_layer.cu
│ │ │ ├── silence_layer.cpp
│ │ │ ├── silence_layer.cu
│ │ │ ├── slice_layer.cpp
│ │ │ ├── slice_layer.cu
│ │ │ ├── smooth_L1_loss_layer.cpp
│ │ │ ├── smooth_L1_loss_layer.cu
│ │ │ ├── softmax_layer.cpp
│ │ │ ├── softmax_layer.cu
│ │ │ ├── softmax_loss_layer.cpp
│ │ │ ├── softmax_loss_layer.cu
│ │ │ ├── split_layer.cpp
│ │ │ ├── split_layer.cu
│ │ │ ├── spp_layer.cpp
│ │ │ ├── sum_layer.cpp
│ │ │ ├── tanh_layer.cpp
│ │ │ ├── tanh_layer.cu
│ │ │ ├── threshold_layer.cpp
│ │ │ ├── threshold_layer.cu
│ │ │ ├── tile_layer.cpp
│ │ │ ├── tile_layer.cu
│ │ │ ├── transpose_layer.cpp
│ │ │ ├── transpose_layer.cu
│ │ │ ├── unitbox_loss_layer.cpp
│ │ │ └── window_data_layer.cpp
│ │ ├── net.cpp
│ │ ├── parallel.cpp
│ │ ├── proto
│ │ │ └── caffe.proto
│ │ ├── solver.cpp
│ │ ├── solvers
│ │ │ ├── adadelta_solver.cpp
│ │ │ ├── adadelta_solver.cu
│ │ │ ├── adagrad_solver.cpp
│ │ │ ├── adagrad_solver.cu
│ │ │ ├── adam_solver.cpp
│ │ │ ├── adam_solver.cu
│ │ │ ├── nesterov_solver.cpp
│ │ │ ├── nesterov_solver.cu
│ │ │ ├── rmsprop_solver.cpp
│ │ │ ├── rmsprop_solver.cu
│ │ │ ├── sgd_solver.cpp
│ │ │ └── sgd_solver.cu
│ │ ├── syncedmem.cpp
│ │ ├── test
│ │ │ ├── CMakeLists.txt
│ │ │ ├── test_accuracy_layer.cpp
│ │ │ ├── test_argmax_layer.cpp
│ │ │ ├── test_attlstm_layer.cpp
│ │ │ ├── test_batch_norm_layer.cpp
│ │ │ ├── test_batch_reindex_layer.cpp
│ │ │ ├── test_benchmark.cpp
│ │ │ ├── test_bias_layer.cpp
│ │ │ ├── test_blob.cpp
│ │ │ ├── test_bn_layer.cpp
│ │ │ ├── test_caffe_main.cpp
│ │ │ ├── test_common.cpp
│ │ │ ├── test_concat_layer.cpp
│ │ │ ├── test_contrastive_loss_layer.cpp
│ │ │ ├── test_convolution_layer.cpp
│ │ │ ├── test_crop_layer.cpp
│ │ │ ├── test_data
│ │ │ │ ├── generate_sample_data.py
│ │ │ │ ├── sample_data.h5
│ │ │ │ ├── sample_data_2_gzip.h5
│ │ │ │ ├── sample_data_list.txt
│ │ │ │ ├── solver_data.h5
│ │ │ │ └── solver_data_list.txt
│ │ │ ├── test_data_layer.cpp
│ │ │ ├── test_data_transformer.cpp
│ │ │ ├── test_db.cpp
│ │ │ ├── test_deconvolution_layer.cpp
│ │ │ ├── test_deformconv_layer.cpp
│ │ │ ├── test_dummy_data_layer.cpp
│ │ │ ├── test_eltwise_layer.cpp
│ │ │ ├── test_embed_layer.cpp
│ │ │ ├── test_euclidean_loss_layer.cpp
│ │ │ ├── test_filler.cpp
│ │ │ ├── test_filter_layer.cpp
│ │ │ ├── test_flatten_layer.cpp
│ │ │ ├── test_gradient_based_solver.cpp
│ │ │ ├── test_hdf5_output_layer.cpp
│ │ │ ├── test_hdf5data_layer.cpp
│ │ │ ├── test_hinge_loss_layer.cpp
│ │ │ ├── test_im2col_kernel.cu
│ │ │ ├── test_im2col_layer.cpp
│ │ │ ├── test_image_data_layer.cpp
│ │ │ ├── test_infogain_loss_layer.cpp
│ │ │ ├── test_inner_product_layer.cpp
│ │ │ ├── test_internal_thread.cpp
│ │ │ ├── test_io.cpp
│ │ │ ├── test_layer_factory.cpp
│ │ │ ├── test_lrn_layer.cpp
│ │ │ ├── test_lstm_new_layer.cpp
│ │ │ ├── test_math_functions.cpp
│ │ │ ├── test_maxpool_dropout_layers.cpp
│ │ │ ├── test_memory_data_layer.cpp
│ │ │ ├── test_multinomial_logistic_loss_layer.cpp
│ │ │ ├── test_mvn_layer.cpp
│ │ │ ├── test_net.cpp
│ │ │ ├── test_neuron_layer.cpp
│ │ │ ├── test_platform.cpp
│ │ │ ├── test_point_bilinear_layer.cpp
│ │ │ ├── test_pooling_layer.cpp
│ │ │ ├── test_power_layer.cpp
│ │ │ ├── test_protobuf.cpp
│ │ │ ├── test_random_number_generator.cpp
│ │ │ ├── test_reduction_layer.cpp
│ │ │ ├── test_reshape_layer.cpp
│ │ │ ├── test_rnn_layer.cpp
│ │ │ ├── test_scale_layer.cpp
│ │ │ ├── test_sigmoid_cross_entropy_loss_layer.cpp
│ │ │ ├── test_slice_layer.cpp
│ │ │ ├── test_softmax_layer.cpp
│ │ │ ├── test_softmax_with_loss_layer.cpp
│ │ │ ├── test_solver.cpp
│ │ │ ├── test_solver_factory.cpp
│ │ │ ├── test_split_layer.cpp
│ │ │ ├── test_spp_layer.cpp
│ │ │ ├── test_stochastic_pooling.cpp
│ │ │ ├── test_sum_layer.cpp
│ │ │ ├── test_syncedmem.cpp
│ │ │ ├── test_tanh_layer.cpp
│ │ │ ├── test_threshold_layer.cpp
│ │ │ ├── test_tile_layer.cpp
│ │ │ ├── test_upgrade_proto.cpp
│ │ │ └── test_util_blas.cpp
│ │ └── util
│ │ │ ├── benchmark.cpp
│ │ │ ├── blocking_queue.cpp
│ │ │ ├── cudnn.cpp
│ │ │ ├── db.cpp
│ │ │ ├── db_leveldb.cpp
│ │ │ ├── db_lmdb.cpp
│ │ │ ├── hdf5.cpp
│ │ │ ├── im2col.cpp
│ │ │ ├── im2col.cu
│ │ │ ├── insert_splits.cpp
│ │ │ ├── io.cpp
│ │ │ ├── math_functions.cpp
│ │ │ ├── math_functions.cu
│ │ │ ├── signal_handler.cpp
│ │ │ └── upgrade_proto.cpp
│ └── gtest
│ │ ├── CMakeLists.txt
│ │ ├── gtest-all.cpp
│ │ ├── gtest.h
│ │ └── gtest_main.cc
└── tools
│ ├── CMakeLists.txt
│ ├── binary_to_text.cpp
│ ├── caffe.cpp
│ ├── compute_image_mean.cpp
│ ├── convert_imageset.cpp
│ ├── convert_model.cpp
│ ├── copy_layers.cpp
│ ├── device_query.cpp
│ ├── extra
│ ├── convert_deform_conv.py
│ ├── extract_seconds.py
│ ├── launch_resize_and_crop_images.sh
│ ├── parse_log.py
│ ├── parse_log.sh
│ ├── plot_log.gnuplot.example
│ ├── plot_training_log.py.example
│ ├── resize_and_crop_images.py
│ └── summarize.py
│ ├── extract_features.cpp
│ ├── finetune_net.cpp
│ ├── net_speed_benchmark.cpp
│ ├── test_net.cpp
│ ├── train_net.cpp
│ ├── upgrade_net_proto_binary.cpp
│ ├── upgrade_net_proto_text.cpp
│ └── upgrade_solver_proto_text.cpp
├── cfg.py
├── dicts
├── dict.txt
├── generic_lex.txt
└── weak_voc.txt
├── imgs
├── img_105.jpg
└── screenshot.png
├── models
├── test_iou.pt
├── test_lstm.pt
└── train.pt
├── pylayer
├── tool.py
└── tool_layers.py
├── results
└── res_img_105.txt
└── test.py
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/textspotter.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/caffe/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | Please use the [caffe-users list](https://groups.google.com/forum/#!forum/caffe-users) for usage, installation, or modeling questions, or other requests for help.
2 | _Do not post such requests to Issues._ Doing so interferes with the development of Caffe.
3 |
4 | Please read the [guidelines for contributing](https://github.com/BVLC/caffe/blob/master/CONTRIBUTING.md) before submitting this issue.
5 |
6 | ### Issue summary
7 |
8 |
9 | ### Steps to reproduce
10 |
11 | If you are having difficulty building Caffe or training a model, please ask the caffe-users mailing list. If you are reporting a build error that seems to be due to a bug in Caffe, please attach your build configuration (either Makefile.config or CMakeCache.txt) and the output of the make (or cmake) command.
12 |
13 | ### Your system configuration
14 | Operating system:
15 | Compiler:
16 | CUDA version (if applicable):
17 | CUDNN version (if applicable):
18 | BLAS:
19 | Python or MATLAB version (for pycaffe and matcaffe respectively):
20 |
--------------------------------------------------------------------------------
/caffe/CONTRIBUTORS.md:
--------------------------------------------------------------------------------
1 | # Contributors
2 |
3 | Caffe is developed by a core set of BAIR members and the open-source community.
4 |
5 | We thank all of our [contributors](https://github.com/BVLC/caffe/graphs/contributors)!
6 |
7 | **For the detailed history of contributions** of a given file, try
8 |
9 | git blame file
10 |
11 | to see line-by-line credits and
12 |
13 | git log --follow file
14 |
15 | to see the change log even across renames and rewrites.
16 |
17 | Please refer to the [acknowledgements](http://caffe.berkeleyvision.org/#acknowledgements) on the Caffe site for further details.
18 |
19 | **Copyright** is held by the original contributor according to the versioning history; see LICENSE.
20 |
--------------------------------------------------------------------------------
/caffe/INSTALL.md:
--------------------------------------------------------------------------------
1 | # Installation
2 |
3 | See http://caffe.berkeleyvision.org/installation.html for the latest
4 | installation instructions.
5 |
6 | Check the users group in case you need help:
7 | https://groups.google.com/forum/#!forum/caffe-users
8 |
--------------------------------------------------------------------------------
/caffe/README.md:
--------------------------------------------------------------------------------
1 | # caffe
2 |
--------------------------------------------------------------------------------
/caffe/caffe.cloc:
--------------------------------------------------------------------------------
1 | Bourne Shell
2 | filter remove_matches ^\s*#
3 | filter remove_inline #.*$
4 | extension sh
5 | script_exe sh
6 | C
7 | filter remove_matches ^\s*//
8 | filter call_regexp_common C
9 | filter remove_inline //.*$
10 | extension c
11 | extension ec
12 | extension pgc
13 | C++
14 | filter remove_matches ^\s*//
15 | filter remove_inline //.*$
16 | filter call_regexp_common C
17 | extension C
18 | extension cc
19 | extension cpp
20 | extension cxx
21 | extension pcc
22 | C/C++ Header
23 | filter remove_matches ^\s*//
24 | filter call_regexp_common C
25 | filter remove_inline //.*$
26 | extension H
27 | extension h
28 | extension hh
29 | extension hpp
30 | CUDA
31 | filter remove_matches ^\s*//
32 | filter remove_inline //.*$
33 | filter call_regexp_common C
34 | extension cu
35 | Python
36 | filter remove_matches ^\s*#
37 | filter docstring_to_C
38 | filter call_regexp_common C
39 | filter remove_inline #.*$
40 | extension py
41 | make
42 | filter remove_matches ^\s*#
43 | filter remove_inline #.*$
44 | extension Gnumakefile
45 | extension Makefile
46 | extension am
47 | extension gnumakefile
48 | extension makefile
49 | filename Gnumakefile
50 | filename Makefile
51 | filename gnumakefile
52 | filename makefile
53 | script_exe make
54 |
--------------------------------------------------------------------------------
/caffe/cmake/Modules/FindLMDB.cmake:
--------------------------------------------------------------------------------
1 | # Try to find the LMBD libraries and headers
2 | # LMDB_FOUND - system has LMDB lib
3 | # LMDB_INCLUDE_DIR - the LMDB include directory
4 | # LMDB_LIBRARIES - Libraries needed to use LMDB
5 |
6 | # FindCWD based on FindGMP by:
7 | # Copyright (c) 2006, Laurent Montel,
8 | #
9 | # Redistribution and use is allowed according to the terms of the BSD license.
10 |
11 | # Adapted from FindCWD by:
12 | # Copyright 2013 Conrad Steenberg
13 | # Aug 31, 2013
14 |
15 | find_path(LMDB_INCLUDE_DIR NAMES lmdb.h PATHS "$ENV{LMDB_DIR}/include")
16 | find_library(LMDB_LIBRARIES NAMES lmdb PATHS "$ENV{LMDB_DIR}/lib" )
17 |
18 | include(FindPackageHandleStandardArgs)
19 | find_package_handle_standard_args(LMDB DEFAULT_MSG LMDB_INCLUDE_DIR LMDB_LIBRARIES)
20 |
21 | if(LMDB_FOUND)
22 | message(STATUS "Found lmdb (include: ${LMDB_INCLUDE_DIR}, library: ${LMDB_LIBRARIES})")
23 | mark_as_advanced(LMDB_INCLUDE_DIR LMDB_LIBRARIES)
24 |
25 | caffe_parse_header(${LMDB_INCLUDE_DIR}/lmdb.h
26 | LMDB_VERSION_LINES MDB_VERSION_MAJOR MDB_VERSION_MINOR MDB_VERSION_PATCH)
27 | set(LMDB_VERSION "${MDB_VERSION_MAJOR}.${MDB_VERSION_MINOR}.${MDB_VERSION_PATCH}")
28 | endif()
29 |
--------------------------------------------------------------------------------
/caffe/cmake/Modules/FindNCCL.cmake:
--------------------------------------------------------------------------------
1 | set(NCCL_INC_PATHS
2 | /usr/include
3 | /usr/local/include
4 | $ENV{NCCL_DIR}/include
5 | )
6 |
7 | set(NCCL_LIB_PATHS
8 | /lib
9 | /lib64
10 | /usr/lib
11 | /usr/lib64
12 | /usr/local/lib
13 | /usr/local/lib64
14 | $ENV{NCCL_DIR}/lib
15 | )
16 |
17 | find_path(NCCL_INCLUDE_DIR NAMES nccl.h PATHS ${NCCL_INC_PATHS})
18 | find_library(NCCL_LIBRARIES NAMES nccl PATHS ${NCCL_LIB_PATHS})
19 |
20 | include(FindPackageHandleStandardArgs)
21 | find_package_handle_standard_args(NCCL DEFAULT_MSG NCCL_INCLUDE_DIR NCCL_LIBRARIES)
22 |
23 | if (NCCL_FOUND)
24 | message(STATUS "Found NCCL (include: ${NCCL_INCLUDE_DIR}, library: ${NCCL_LIBRARIES})")
25 | mark_as_advanced(NCCL_INCLUDE_DIR NCCL_LIBRARIES)
26 | endif ()
27 |
--------------------------------------------------------------------------------
/caffe/cmake/Modules/FindSnappy.cmake:
--------------------------------------------------------------------------------
1 | # Find the Snappy libraries
2 | #
3 | # The following variables are optionally searched for defaults
4 | # Snappy_ROOT_DIR: Base directory where all Snappy components are found
5 | #
6 | # The following are set after configuration is done:
7 | # SNAPPY_FOUND
8 | # Snappy_INCLUDE_DIR
9 | # Snappy_LIBRARIES
10 |
11 | find_path(Snappy_INCLUDE_DIR NAMES snappy.h
12 | PATHS ${SNAPPY_ROOT_DIR} ${SNAPPY_ROOT_DIR}/include)
13 |
14 | find_library(Snappy_LIBRARIES NAMES snappy
15 | PATHS ${SNAPPY_ROOT_DIR} ${SNAPPY_ROOT_DIR}/lib)
16 |
17 | include(FindPackageHandleStandardArgs)
18 | find_package_handle_standard_args(Snappy DEFAULT_MSG Snappy_INCLUDE_DIR Snappy_LIBRARIES)
19 |
20 | if(SNAPPY_FOUND)
21 | message(STATUS "Found Snappy (include: ${Snappy_INCLUDE_DIR}, library: ${Snappy_LIBRARIES})")
22 | mark_as_advanced(Snappy_INCLUDE_DIR Snappy_LIBRARIES)
23 |
24 | caffe_parse_header(${Snappy_INCLUDE_DIR}/snappy-stubs-public.h
25 | SNAPPY_VERION_LINES SNAPPY_MAJOR SNAPPY_MINOR SNAPPY_PATCHLEVEL)
26 | set(Snappy_VERSION "${SNAPPY_MAJOR}.${SNAPPY_MINOR}.${SNAPPY_PATCHLEVEL}")
27 | endif()
28 |
29 |
--------------------------------------------------------------------------------
/caffe/cmake/Modules/FindvecLib.cmake:
--------------------------------------------------------------------------------
1 | # Find the vecLib libraries as part of Accelerate.framework or as standalon framework
2 | #
3 | # The following are set after configuration is done:
4 | # VECLIB_FOUND
5 | # vecLib_INCLUDE_DIR
6 | # vecLib_LINKER_LIBS
7 |
8 |
9 | if(NOT APPLE)
10 | return()
11 | endif()
12 |
13 | set(__veclib_include_suffix "Frameworks/vecLib.framework/Versions/Current/Headers")
14 |
15 | find_path(vecLib_INCLUDE_DIR vecLib.h
16 | DOC "vecLib include directory"
17 | PATHS /System/Library/Frameworks/Accelerate.framework/Versions/Current/${__veclib_include_suffix}
18 | /System/Library/${__veclib_include_suffix}
19 | /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers/
20 | NO_DEFAULT_PATH)
21 |
22 | include(FindPackageHandleStandardArgs)
23 | find_package_handle_standard_args(vecLib DEFAULT_MSG vecLib_INCLUDE_DIR)
24 |
25 | if(VECLIB_FOUND)
26 | if(vecLib_INCLUDE_DIR MATCHES "^/System/Library/Frameworks/vecLib.framework.*")
27 | set(vecLib_LINKER_LIBS -lcblas "-framework vecLib")
28 | message(STATUS "Found standalone vecLib.framework")
29 | else()
30 | set(vecLib_LINKER_LIBS -lcblas "-framework Accelerate")
31 | message(STATUS "Found vecLib as part of Accelerate.framework")
32 | endif()
33 |
34 | mark_as_advanced(vecLib_INCLUDE_DIR)
35 | endif()
36 |
--------------------------------------------------------------------------------
/caffe/cmake/Templates/CaffeConfigVersion.cmake.in:
--------------------------------------------------------------------------------
1 | set(PACKAGE_VERSION "@Caffe_VERSION@")
2 |
3 | # Check whether the requested PACKAGE_FIND_VERSION is compatible
4 | if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
5 | set(PACKAGE_VERSION_COMPATIBLE FALSE)
6 | else()
7 | set(PACKAGE_VERSION_COMPATIBLE TRUE)
8 | if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
9 | set(PACKAGE_VERSION_EXACT TRUE)
10 | endif()
11 | endif()
12 |
--------------------------------------------------------------------------------
/caffe/cmake/Templates/caffe_config.h.in:
--------------------------------------------------------------------------------
1 | /* Sources directory */
2 | #define SOURCE_FOLDER "${PROJECT_SOURCE_DIR}"
3 |
4 | /* Binaries directory */
5 | #define BINARY_FOLDER "${PROJECT_BINARY_DIR}"
6 |
7 | /* This is an absolute path so that we can run test from any build
8 | * directory */
9 | #define ABS_TEST_DATA_DIR "${PROJECT_SOURCE_DIR}/src/caffe/test/test_data/"
10 |
11 | /* Test device */
12 | #define CUDA_TEST_DEVICE ${CUDA_TEST_DEVICE}
13 |
--------------------------------------------------------------------------------
/caffe/cmake/Uninstall.cmake.in:
--------------------------------------------------------------------------------
1 | if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
2 | message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
3 | endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
4 |
5 | if (NOT DEFINED CMAKE_INSTALL_PREFIX)
6 | set (CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
7 | endif ()
8 | message(${CMAKE_INSTALL_PREFIX})
9 |
10 | file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
11 | string(REGEX REPLACE "\n" ";" files "${files}")
12 | foreach(file ${files})
13 | message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
14 | if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
15 | exec_program(
16 | "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
17 | OUTPUT_VARIABLE rm_out
18 | RETURN_VALUE rm_retval
19 | )
20 | if(NOT "${rm_retval}" STREQUAL 0)
21 | message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
22 | endif(NOT "${rm_retval}" STREQUAL 0)
23 | else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
24 | message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
25 | endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
26 | endforeach(file)
--------------------------------------------------------------------------------
/caffe/docker/cpu/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu:16.04
2 | LABEL maintainer caffe-maint@googlegroups.com
3 |
4 | RUN apt-get update && apt-get install -y --no-install-recommends \
5 | build-essential \
6 | cmake \
7 | git \
8 | wget \
9 | libatlas-base-dev \
10 | libboost-all-dev \
11 | libgflags-dev \
12 | libgoogle-glog-dev \
13 | libhdf5-serial-dev \
14 | libleveldb-dev \
15 | liblmdb-dev \
16 | libopencv-dev \
17 | libprotobuf-dev \
18 | libsnappy-dev \
19 | protobuf-compiler \
20 | python-dev \
21 | python-numpy \
22 | python-pip \
23 | python-setuptools \
24 | python-scipy && \
25 | rm -rf /var/lib/apt/lists/*
26 |
27 | ENV CAFFE_ROOT=/opt/caffe
28 | WORKDIR $CAFFE_ROOT
29 |
30 | # FIXME: use ARG instead of ENV once DockerHub supports this
31 | # https://github.com/docker/hub-feedback/issues/460
32 | ENV CLONE_TAG=1.0
33 |
34 | RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git . && \
35 | pip install --upgrade pip && \
36 | cd python && for req in $(cat requirements.txt) pydot; do pip install $req; done && cd .. && \
37 | mkdir build && cd build && \
38 | cmake -DCPU_ONLY=1 .. && \
39 | make -j"$(nproc)"
40 |
41 | ENV PYCAFFE_ROOT $CAFFE_ROOT/python
42 | ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH
43 | ENV PATH $CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH
44 | RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig
45 |
46 | WORKDIR /workspace
47 |
--------------------------------------------------------------------------------
/caffe/docs/CNAME:
--------------------------------------------------------------------------------
1 | caffe.berkeleyvision.org
2 |
--------------------------------------------------------------------------------
/caffe/docs/README.md:
--------------------------------------------------------------------------------
1 | # Caffe Documentation
2 |
3 | To generate the documentation, run `$CAFFE_ROOT/scripts/build_docs.sh`.
4 |
5 | To push your changes to the documentation to the gh-pages branch of your or the BVLC repo, run `$CAFFE_ROOT/scripts/deploy_docs.sh `.
6 |
--------------------------------------------------------------------------------
/caffe/docs/_config.yml:
--------------------------------------------------------------------------------
1 | defaults:
2 | -
3 | scope:
4 | path: "" # an empty string here means all files in the project
5 | values:
6 | layout: "default"
7 |
8 |
--------------------------------------------------------------------------------
/caffe/docs/images/GitHub-Mark-64px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/docs/images/GitHub-Mark-64px.png
--------------------------------------------------------------------------------
/caffe/docs/images/caffeine-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/docs/images/caffeine-icon.png
--------------------------------------------------------------------------------
/caffe/docs/stylesheets/reset.css:
--------------------------------------------------------------------------------
1 | /* MeyerWeb Reset */
2 |
3 | html, body, div, span, applet, object, iframe,
4 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
5 | a, abbr, acronym, address, big, cite, code,
6 | del, dfn, em, img, ins, kbd, q, s, samp,
7 | small, strike, strong, sub, sup, tt, var,
8 | b, u, i, center,
9 | dl, dt, dd, ol, ul, li,
10 | fieldset, form, label, legend,
11 | table, caption, tbody, tfoot, thead, tr, th, td,
12 | article, aside, canvas, details, embed,
13 | figure, figcaption, footer, header, hgroup,
14 | menu, nav, output, ruby, section, summary,
15 | time, mark, audio, video {
16 | margin: 0;
17 | padding: 0;
18 | border: 0;
19 | font: inherit;
20 | vertical-align: baseline;
21 | }
22 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/convolution.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Convolution
3 | ---
4 | # Caffeinated Convolution
5 |
6 | The Caffe strategy for convolution is to reduce the problem to matrix-matrix multiplication.
7 | This linear algebra computation is highly-tuned in BLAS libraries and efficiently computed on GPU devices.
8 |
9 | For more details read Yangqing's [Convolution in Caffe: a memo](https://github.com/Yangqing/caffe/wiki/Convolution-in-Caffe:-a-memo).
10 |
11 | As it turns out, this same reduction was independently explored in the context of conv. nets by
12 |
13 | > K. Chellapilla, S. Puri, P. Simard, et al. High performance convolutional neural networks for document processing. In Tenth International Workshop on Frontiers in Handwriting Recognition, 2006.
14 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/fig/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/docs/tutorial/fig/.gitignore
--------------------------------------------------------------------------------
/caffe/docs/tutorial/fig/backward.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/docs/tutorial/fig/backward.jpg
--------------------------------------------------------------------------------
/caffe/docs/tutorial/fig/forward.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/docs/tutorial/fig/forward.jpg
--------------------------------------------------------------------------------
/caffe/docs/tutorial/fig/forward_backward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/docs/tutorial/fig/forward_backward.png
--------------------------------------------------------------------------------
/caffe/docs/tutorial/fig/layer.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/docs/tutorial/fig/layer.jpg
--------------------------------------------------------------------------------
/caffe/docs/tutorial/fig/logreg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/docs/tutorial/fig/logreg.jpg
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/absval.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Absolute Value Layer
3 | ---
4 |
5 | # Absolute Value Layer
6 |
7 | * Layer type: `AbsVal`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1AbsValLayer.html)
9 | * Header: [`./include/caffe/layers/absval_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/absval_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/absval_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/absval_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/absval_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/absval_layer.cu)
12 |
13 | * Sample
14 |
15 | layer {
16 | name: "layer"
17 | bottom: "in"
18 | top: "out"
19 | type: "AbsVal"
20 | }
21 |
22 | The `AbsVal` layer computes the output as abs(x) for each input element x.
23 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/accuracy.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Accuracy and Top-k
3 | ---
4 |
5 | # Accuracy and Top-k
6 |
7 | `Accuracy` scores the output as the accuracy of output with respect to target -- it is not actually a loss and has no backward step.
8 |
9 | * Layer type: `Accuracy`
10 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1AccuracyLayer.html)
11 | * Header: [`./include/caffe/layers/accuracy_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/accuracy_layer.hpp)
12 | * CPU implementation: [`./src/caffe/layers/accuracy_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/accuracy_layer.cpp)
13 |
14 | ## Parameters
15 | * Parameters (`AccuracyParameter accuracy_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/AccuracyParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/argmax.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ArgMax Layer
3 | ---
4 |
5 | # ArgMax Layer
6 |
7 | * Layer type: `ArgMax`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ArgMaxLayer.html)
9 | * Header: [`./include/caffe/layers/argmax_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/argmax_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/argmax_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/argmax_layer.cpp)
11 |
12 | ## Parameters
13 | * Parameters (`ArgMaxParameter argmax_param`)
14 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)):
15 |
16 | {% highlight Protobuf %}
17 | {% include proto/ArgMaxParameter.txt %}
18 | {% endhighlight %}
19 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/batchnorm.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Batch Norm Layer
3 | ---
4 |
5 | # Batch Norm Layer
6 |
7 | * Layer type: `BatchNorm`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BatchNormLayer.html)
9 | * Header: [`./include/caffe/layers/batch_norm_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/batch_norm_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/batch_norm_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_norm_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/batch_norm_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_norm_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`BatchNormParameter batch_norm_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/BatchNormParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/batchreindex.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Batch Reindex Layer
3 | ---
4 |
5 | # Batch Reindex Layer
6 |
7 | * Layer type: `BatchReindex`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BatchReindexLayer.html)
9 | * Header: [`./include/caffe/layers/batch_reindex_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/batch_reindex_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/batch_reindex_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_reindex_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/batch_reindex_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_reindex_layer.cu)
12 |
13 |
14 | ## Parameters
15 |
16 | No parameters.
17 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/bias.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Bias Layer
3 | ---
4 |
5 | # Bias Layer
6 |
7 | * Layer type: `Bias`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BiasLayer.html)
9 | * Header: [`./include/caffe/layers/bias_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/bias_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/bias_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bias_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/bias_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bias_layer.cu)
12 |
13 | ## Parameters
14 | * Parameters (`BiasParameter bias_param`)
15 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)):
16 |
17 | {% highlight Protobuf %}
18 | {% include proto/BiasParameter.txt %}
19 | {% endhighlight %}
20 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/bnll.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: BNLL Layer
3 | ---
4 |
5 | # BNLL Layer
6 |
7 | * Layer type: `BNLL`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BNLLLayer.html)
9 | * Header: [`./include/caffe/layers/bnll_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/bnll_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/bnll_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bnll_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/bnll_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bnll_layer.cu)
12 |
13 | The `BNLL` (binomial normal log likelihood) layer computes the output as log(1 + exp(x)) for each input element x.
14 |
15 | ## Parameters
16 | No parameters.
17 |
18 | ## Sample
19 |
20 | layer {
21 | name: "layer"
22 | bottom: "in"
23 | top: "out"
24 | type: BNLL
25 | }
26 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/contrastiveloss.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Contrastive Loss Layer
3 | ---
4 |
5 | # Contrastive Loss Layer
6 |
7 | * Layer type: `ContrastiveLoss`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ContrastiveLossLayer.html)
9 | * Header: [`./include/caffe/layers/contrastive_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/contrastive_loss_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/contrastive_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/contrastive_loss_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/contrastive_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/contrastive_loss_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`ContrastiveLossParameter contrastive_loss_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/ContrastiveLossParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/crop.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Crop Layer
3 | ---
4 |
5 | # Crop Layer
6 |
7 | * Layer type: `Crop`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1CropLayer.html)
9 | * Header: [`./include/caffe/layers/crop_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/crop_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/crop_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/crop_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/crop_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/crop_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`CropParameter crop_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/CropParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/data.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Database Layer
3 | ---
4 |
5 | # Database Layer
6 |
7 | * Layer type: `Data`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DataLayer.html)
9 | * Header: [`./include/caffe/layers/data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/data_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/data_layer.cpp)
11 |
12 |
13 | ## Parameters
14 |
15 | * Parameters (`DataParameter data_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/DataParameter.txt %}
20 | {% endhighlight %}
21 |
22 | * Parameters
23 | - Required
24 | - `source`: the name of the directory containing the database
25 | - `batch_size`: the number of inputs to process at one time
26 | - Optional
27 | - `rand_skip`: skip up to this number of inputs at the beginning; useful for asynchronous sgd
28 | - `backend` [default `LEVELDB`]: choose whether to use a `LEVELDB` or `LMDB`
29 |
30 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/deconvolution.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Deconvolution Layer
3 | ---
4 |
5 | # Deconvolution Layer
6 |
7 | * Layer type: `Deconvolution`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DeconvolutionLayer.html)
9 | * Header: [`./include/caffe/layers/deconv_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/deconv_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/deconv_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/deconv_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/deconv_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/deconv_layer.cu)
12 |
13 | ## Parameters
14 |
15 | Uses the same parameters as the Convolution layer.
16 |
17 | * Parameters (`ConvolutionParameter convolution_param`)
18 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)):
19 |
20 | {% highlight Protobuf %}
21 | {% include proto/ConvolutionParameter.txt %}
22 | {% endhighlight %}
23 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/dropout.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Dropout Layer
3 | ---
4 |
5 | # Dropout Layer
6 |
7 | * Layer type: `Dropout`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DropoutLayer.html)
9 | * Header: [`./include/caffe/layers/dropout_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/dropout_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/dropout_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/dropout_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/dropout_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/dropout_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`DropoutParameter dropout_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/DropoutParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/dummydata.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Dummy Data Layer
3 | ---
4 |
5 | # Dummy Data Layer
6 |
7 | * Layer type: `DummyData`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DummyDataLayer.html)
9 | * Header: [`./include/caffe/layers/dummy_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/dummy_data_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/dummy_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/dummy_data_layer.cpp)
11 |
12 |
13 | ## Parameters
14 |
15 | * Parameters (`DummyDataParameter dummy_data_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/DummyDataParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/eltwise.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Eltwise Layer
3 | ---
4 |
5 | # Eltwise Layer
6 |
7 | * Layer type: `Eltwise`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1EltwiseLayer.html)
9 | * Header: [`./include/caffe/layers/eltwise_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/eltwise_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/eltwise_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/eltwise_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/eltwise_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/eltwise_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`EltwiseParameter eltwise_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/EltwiseParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/elu.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ELU Layer
3 | ---
4 |
5 | # ELU Layer
6 |
7 | * Layer type: `ELU`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ELULayer.html)
9 | * Header: [`./include/caffe/layers/elu_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/elu_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/elu_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/elu_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/elu_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/elu_layer.cu)
12 |
13 | ## References
14 |
15 | * Clevert, Djork-Arne, Thomas Unterthiner, and Sepp Hochreiter.
16 | "Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs)" [arXiv:1511.07289](https://arxiv.org/abs/1511.07289). (2015).
17 |
18 | ## Parameters
19 |
20 | * Parameters (`ELUParameter elu_param`)
21 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
22 |
23 | {% highlight Protobuf %}
24 | {% include proto/ELUParameter.txt %}
25 | {% endhighlight %}
26 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/embed.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Embed Layer
3 | ---
4 |
5 | # Embed Layer
6 |
7 | * Layer type: `Embed`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1EmbedLayer.html)
9 | * Header: [`./include/caffe/layers/embed_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/embed_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/embed_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/embed_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/embed_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/embed_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`EmbedParameter embed_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/EmbedParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/euclideanloss.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Euclidean Loss Layer
3 | ---
4 | # Sum-of-Squares / Euclidean Loss Layer
5 |
6 | * Layer type: `EuclideanLoss`
7 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1EuclideanLossLayer.html)
8 | * Header: [`./include/caffe/layers/euclidean_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/euclidean_loss_layer.hpp)
9 | * CPU implementation: [`./src/caffe/layers/euclidean_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/euclidean_loss_layer.cpp)
10 | * CUDA GPU implementation: [`./src/caffe/layers/euclidean_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/euclidean_loss_layer.cu)
11 |
12 | The Euclidean loss layer computes the sum of squares of differences of its two inputs, $$\frac 1 {2N} \sum_{i=1}^N \| x^1_i - x^2_i \|_2^2$$.
13 |
14 | ## Parameters
15 |
16 | Does not take any parameters.
17 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/exp.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Exponential Layer
3 | ---
4 |
5 | # Exponential Layer
6 |
7 | * Layer type: `Exp`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ExpLayer.html)
9 | * Header: [`./include/caffe/layers/exp_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/exp_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/exp_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/exp_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/exp_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/exp_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`Parameter exp_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/ExpParameter.txt %}
20 | {% endhighlight %}
21 |
22 | ## See also
23 |
24 | * [Power layer](power.html)
25 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/filter.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Filter Layer
3 | ---
4 |
5 | # Filter Layer
6 |
7 | * Layer type: `Filter`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1FilterLayer.html)
9 | * Header: [`./include/caffe/layers/filter_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/filter_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/filter_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/filter_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/filter_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/filter_layer.cu)
12 |
13 | ## Parameters
14 |
15 | Does not take any parameters.
16 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/flatten.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Flatten Layer
3 | ---
4 |
5 | # Flatten Layer
6 |
7 | * Layer type: `Flatten`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1FlattenLayer.html)
9 | * Header: [`./include/caffe/layers/flatten_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/flatten_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/flatten_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/flatten_layer.cpp)
11 |
12 | The `Flatten` layer is a utility layer that flattens an input of shape `n * c * h * w` to a simple vector output of shape `n * (c*h*w)`.
13 |
14 | ## Parameters
15 |
16 | * Parameters (`FlattenParameter flatten_param`)
17 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
18 |
19 | {% highlight Protobuf %}
20 | {% include proto/FlattenParameter.txt %}
21 | {% endhighlight %}
22 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/hdf5data.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: HDF5 Data Layer
3 | ---
4 |
5 | # HDF5 Data Layer
6 |
7 | * Layer type: `HDF5Data`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1HDF5DataLayer.html)
9 | * Header: [`./include/caffe/layers/hdf5_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/hdf5_data_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/hdf5_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_data_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/hdf5_data_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_data_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`HDF5DataParameter hdf5_data_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/HDF5DataParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/hdf5output.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: HDF5 Output Layer
3 | ---
4 |
5 | # HDF5 Output Layer
6 |
7 | * Layer type: `HDF5Output`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1HDF5OutputLayer.html)
9 | * Header: [`./include/caffe/layers/hdf5_output_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/hdf5_output_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/hdf5_output_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_output_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/hdf5_output_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_output_layer.cu)
12 |
13 | The HDF5 output layer performs the opposite function of the other layers in this section: it writes its input blobs to disk.
14 |
15 | ## Parameters
16 |
17 | * Parameters (`HDF5OutputParameter hdf5_output_param`)
18 | - Required
19 | - `file_name`: name of file to write to
20 |
21 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
22 |
23 | {% highlight Protobuf %}
24 | {% include proto/HDF5OutputParameter.txt %}
25 | {% endhighlight %}
26 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/hingeloss.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Hinge Loss Layer
3 | ---
4 |
5 | # Hinge (L1, L2) Loss Layer
6 |
7 | * Layer type: `HingeLoss`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1HingeLossLayer.html)
9 | * Header: [`./include/caffe/layers/hinge_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/hinge_loss_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/hinge_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hinge_loss_layer.cpp)
11 |
12 | ## Parameters
13 |
14 | * Parameters (`HingeLossParameter hinge_loss_param`)
15 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
16 |
17 | {% highlight Protobuf %}
18 | {% include proto/HingeLossParameter.txt %}
19 | {% endhighlight %}
20 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/im2col.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Im2col Layer
3 | ---
4 |
5 | # im2col
6 |
7 | * File type: `Im2col`
8 | * Header: [`./include/caffe/layers/im2col_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/im2col_layer.hpp)
9 | * CPU implementation: [`./src/caffe/layers/im2col_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/im2col_layer.cpp)
10 | * CUDA GPU implementation: [`./src/caffe/layers/im2col_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/im2col_layer.cu)
11 |
12 | `Im2col` is a helper for doing the image-to-column transformation that you most
13 | likely do not need to know about. This is used in Caffe's original convolution
14 | to do matrix multiplication by laying out all patches into a matrix.
15 |
16 |
17 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/imagedata.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ImageData Layer
3 | ---
4 |
5 | # ImageData Layer
6 |
7 | * Layer type: `ImageData`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ImageDataLayer.html)
9 | * Header: [`./include/caffe/layers/image_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/image_data_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/image_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/image_data_layer.cpp)
11 |
12 | ## Parameters
13 |
14 | * Parameters (`ImageDataParameter image_data_parameter`)
15 | - Required
16 | - `source`: name of a text file, with each line giving an image filename and label
17 | - `batch_size`: number of images to batch together
18 | - Optional
19 | - `rand_skip`
20 | - `shuffle` [default false]
21 | - `new_height`, `new_width`: if provided, resize all images to this size
22 |
23 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
24 |
25 | {% highlight Protobuf %}
26 | {% include proto/ImageDataParameter.txt %}
27 | {% endhighlight %}
28 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/infogainloss.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Infogain Loss Layer
3 | ---
4 |
5 | # Infogain Loss Layer
6 |
7 | * Layer type: `InfogainLoss`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1InfogainLossLayer.html)
9 | * Header: [`./include/caffe/layers/infogain_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/infogain_loss_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/infogain_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/infogain_loss_layer.cpp)
11 |
12 | A generalization of [MultinomialLogisticLossLayer](multinomiallogisticloss.html) that takes an "information gain" (infogain) matrix specifying the "value" of all label pairs.
13 |
14 | Equivalent to the [MultinomialLogisticLossLayer](multinomiallogisticloss.html) if the infogain matrix is the identity.
15 |
16 | ## Parameters
17 |
18 | * Parameters (`Parameter infogain_param`)
19 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
20 |
21 | {% highlight Protobuf %}
22 | {% include proto/InfogainLossParameter.txt %}
23 | {% endhighlight %}
24 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/input.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Input Layer
3 | ---
4 |
5 | # Input Layer
6 |
7 | * Layer type: `Input`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1InputLayer.html)
9 | * Header: [`./include/caffe/layers/input_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/input_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/input_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/input_layer.cpp)
11 |
12 | ## Parameters
13 |
14 | * Parameters (`InputParameter input_param`)
15 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)):
16 |
17 | {% highlight Protobuf %}
18 | {% include proto/InputParameter.txt %}
19 | {% endhighlight %}
20 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/log.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Log Layer
3 | ---
4 |
5 | # Log Layer
6 |
7 | * Layer type: `Log`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1LogLayer.html)
9 | * Header: [`./include/caffe/layers/log_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/log_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/log_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/log_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/log_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/log_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`Parameter log_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/LogParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/lstm.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: LSTM Layer
3 | ---
4 |
5 | # LSTM Layer
6 |
7 | * Layer type: `LSTM`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1LSTMLayer.html)
9 | * Header: [`./include/caffe/layers/lstm_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/lstm_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/lstm_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lstm_layer.cpp)
11 | * CPU implementation (helper): [`./src/caffe/layers/lstm_unit_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lstm_unit_layer.cpp)
12 | * CUDA GPU implementation (helper): [`./src/caffe/layers/lstm_unit_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lstm_unit_layer.cu)
13 |
14 | ## Parameters
15 |
16 | * Parameters (`Parameter recurrent_param`)
17 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
18 |
19 | {% highlight Protobuf %}
20 | {% include proto/RecurrentParameter.txt %}
21 | {% endhighlight %}
22 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/memorydata.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Memory Data Layer
3 | ---
4 |
5 | # Memory Data Layer
6 |
7 | * Layer type: `MemoryData`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MemoryDataLayer.html)
9 | * Header: [`./include/caffe/layers/memory_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/memory_data_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/memory_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/memory_data_layer.cpp)
11 |
12 | The memory data layer reads data directly from memory, without copying it. In order to use it, one must call `MemoryDataLayer::Reset` (from C++) or `Net.set_input_arrays` (from Python) in order to specify a source of contiguous data (as 4D row major array), which is read one batch-sized chunk at a time.
13 |
14 | # Parameters
15 |
16 | * Parameters (`MemoryDataParameter memory_data_param`)
17 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
18 |
19 | {% highlight Protobuf %}
20 | {% include proto/MemoryDataParameter.txt %}
21 | {% endhighlight %}
22 |
23 | * Parameters
24 | - Required
25 | - `batch_size`, `channels`, `height`, `width`: specify the size of input chunks to read from memory
26 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/multinomiallogisticloss.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Multinomial Logistic Loss Layer
3 | ---
4 |
5 | # Multinomial Logistic Loss Layer
6 |
7 | * Layer type: `MultinomialLogisticLoss`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html)
9 | * Header: [`./include/caffe/layers/multinomial_logistic_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/multinomial_logistic_loss_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/multinomial_logistic_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/multinomial_logistic_loss_layer.cpp)
11 |
12 | ## Parameters
13 |
14 | * Parameters (`LossParameter loss_param`)
15 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
16 |
17 | {% highlight Protobuf %}
18 | {% include proto/LossParameter.txt %}
19 | {% endhighlight %}
20 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/mvn.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Mean-Variance Normalization (MVN) Layer
3 | ---
4 |
5 | # Mean-Variance Normalization (MVN) Layer
6 |
7 | * Layer type: `MVN`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MVNLayer.html)
9 | * Header: [`./include/caffe/layers/mvn_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/mvn_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/mvn_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/mvn_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/mvn_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/mvn_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`MVNParameter mvn_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/MVNParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/parameter.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Parameter Layer
3 | ---
4 |
5 | # Parameter Layer
6 |
7 | * Layer type: `Parameter`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ParameterLayer.html)
9 | * Header: [`./include/caffe/layers/parameter_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/parameter_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/parameter_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/parameter_layer.cpp)
11 |
12 | See [https://github.com/BVLC/caffe/pull/2079](https://github.com/BVLC/caffe/pull/2079).
13 |
14 | ## Parameters
15 |
16 | * Parameters (`ParameterParameter parameter_param`)
17 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
18 |
19 | {% highlight Protobuf %}
20 | {% include proto/ParameterParameter.txt %}
21 | {% endhighlight %}
22 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/power.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Power Layer
3 | ---
4 |
5 | # Power Layer
6 |
7 | * Layer type: `Power`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PowerLayer.html)
9 | * Header: [`./include/caffe/layers/power_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/power_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/power_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/power_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/power_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/power_layer.cu)
12 |
13 | The `Power` layer computes the output as (shift + scale * x) ^ power for each input element x.
14 |
15 | ## Parameters
16 | * Parameters (`PowerParameter power_param`)
17 | - Optional
18 | - `power` [default 1]
19 | - `scale` [default 1]
20 | - `shift` [default 0]
21 |
22 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
23 |
24 | {% highlight Protobuf %}
25 | {% include proto/PowerParameter.txt %}
26 | {% endhighlight %}
27 |
28 |
29 |
30 | ## Sample
31 |
32 | layer {
33 | name: "layer"
34 | bottom: "in"
35 | top: "out"
36 | type: "Power"
37 | power_param {
38 | power: 1
39 | scale: 1
40 | shift: 0
41 | }
42 | }
43 |
44 | ## See also
45 |
46 | * [Exponential layer](exp.html)
47 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/prelu.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: PReLU Layer
3 | ---
4 |
5 | # PReLU Layer
6 |
7 | * Layer type: `PReLU`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PReLULayer.html)
9 | * Header: [`./include/caffe/layers/prelu_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/prelu_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/prelu_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/prelu_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/prelu_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/prelu_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`PReLUParameter prelu_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/PReLUParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/python.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Python Layer
3 | ---
4 |
5 | # Python Layer
6 |
7 | * Layer type: `Python`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PythonLayer.html)
9 | * Header: [`./include/caffe/layers/python_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/python_layer.hpp)
10 |
11 | The Python layer allows users to add customized layers without modifying the Caffe core code.
12 |
13 | ## Parameters
14 |
15 | * Parameters (`PythonParameter python_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/PythonParameter.txt %}
20 | {% endhighlight %}
21 |
22 | ## Examples and tutorials
23 |
24 | * Simple Euclidean loss example
25 | ** [Python code](https://github.com/BVLC/caffe/blob/master/examples/pycaffe/layers/pyloss.py)
26 | ** [Prototxt](https://github.com/BVLC/caffe/blob/master/examples/pycaffe/linreg.prototxt)
27 | * [Tutorial for writing Python layers with DIGITS](https://github.com/NVIDIA/DIGITS/tree/master/examples/python-layer)
28 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/recurrent.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Recurrent Layer
3 | ---
4 |
5 | # Recurrent Layer
6 |
7 | * Layer type: `Recurrent`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1RecurrentLayer.html)
9 | * Header: [`./include/caffe/layers/recurrent_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/recurrent_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/recurrent_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/recurrent_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/recurrent_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/recurrent_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`RecurrentParameter recurrent_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/RecurrentParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/reduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Reduction Layer
3 | ---
4 |
5 | # Reduction Layer
6 |
7 | * Layer type: `Reduction`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ReductionLayer.html)
9 | * Header: [`./include/caffe/layers/reduction_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/reduction_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/reduction_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/reduction_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/reduction_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/reduction_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`ReductionParameter reduction_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/ReductionParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/rnn.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: RNN Layer
3 | ---
4 |
5 | # RNN Layer
6 |
7 | * Layer type: `RNN`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1RNNLayer.html)
9 | * Header: [`./include/caffe/layers/rnn_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/rnn_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/rnn_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/rnn_layer.cpp)
11 |
12 | ## Parameters
13 |
14 | * Parameters (`RecurrentParameter recurrent_param`)
15 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
16 |
17 | {% highlight Protobuf %}
18 | {% include proto/RecurrentParameter.txt %}
19 | {% endhighlight %}
20 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/scale.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Scale Layer
3 | ---
4 |
5 | # Scale Layer
6 |
7 | * Layer type: `Scale`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ScaleLayer.html)
9 | * Header: [`./include/caffe/layers/scale_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/scale_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/scale_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/scale_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/scale_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/scale_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`ScaleParameter scale_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/ScaleParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/sigmoid.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Sigmoid Layer
3 | ---
4 |
5 | # Sigmoid Layer
6 |
7 | * Layer type: `Sigmoid`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SigmoidLayer.html)
9 | * Header: [`./include/caffe/layers/sigmoid_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/sigmoid_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/sigmoid_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/sigmoid_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_layer.cu)
12 | * Example (from [`./examples/mnist/mnist_autoencoder.prototxt`](https://github.com/BVLC/caffe/blob/master/examples/mnist/mnist_autoencoder.prototxt)):
13 |
14 | layer {
15 | name: "encode1neuron"
16 | bottom: "encode1"
17 | top: "encode1neuron"
18 | type: "Sigmoid"
19 | }
20 |
21 | The `Sigmoid` layer computes `sigmoid(x)` for each element `x` in the bottom blob.
22 |
23 | ## Parameters
24 |
25 | * Parameters (`SigmoidParameter sigmoid_param`)
26 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
27 |
28 | {% highlight Protobuf %}
29 | {% include proto/SigmoidParameter.txt %}
30 | {% endhighlight %}
31 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/sigmoidcrossentropyloss.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Sigmoid Cross-Entropy Loss Layer
3 | ---
4 |
5 | # Sigmoid Cross-Entropy Loss Layer
6 |
7 | * Layer type: `SigmoidCrossEntropyLoss`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html)
9 | * Header: [`./include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu)
12 |
13 | To-do.
14 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/silence.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Silence Layer
3 | ---
4 |
5 | # Silence Layer
6 |
7 | * Layer type: `Silence`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SilenceLayer.html)
9 | * Header: [`./include/caffe/layers/silence_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/silence_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/silence_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/silence_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/silence_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/silence_layer.cu)
12 |
13 | Silences a blob, so that it is not printed.
14 |
15 | ## Parameters
16 |
17 | No parameters.
18 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/softmax.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Softmax Layer
3 | ---
4 |
5 | # Softmax Layer
6 |
7 | * Layer type: `Softmax`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SoftmaxLayer.html)
9 | * Header: [`./include/caffe/layers/softmax_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/softmax_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/softmax_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/softmax_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/softmax_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/softmax_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`SoftmaxParameter softmax_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/SoftmaxParameter.txt %}
20 | {% endhighlight %}
21 |
22 | ## See also
23 |
24 | * [Softmax loss layer](softmaxwithloss.html)
25 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/split.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Split Layer
3 | ---
4 |
5 | # Split Layer
6 |
7 | * Layer type: `Split`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SplitLayer.html)
9 | * Header: [`./include/caffe/layers/split_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/split_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/split_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/split_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/split_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/split_layer.cu)
12 |
13 | The `Split` layer is a utility layer that splits an input blob to multiple output blobs. This is used when a blob is fed into multiple output layers.
14 |
15 | ## Parameters
16 |
17 | Does not take any parameters.
18 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/spp.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Spatial Pyramid Pooling Layer
3 | ---
4 |
5 | # Spatial Pyramid Pooling Layer
6 |
7 | * Layer type: `SPP`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SPPLayer.html)
9 | * Header: [`./include/caffe/layers/spp_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/spp_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/spp_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/spp_layer.cpp)
11 |
12 |
13 | ## Parameters
14 |
15 | * Parameters (`SPPParameter spp_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/SPPParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/tanh.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: TanH Layer
3 | ---
4 |
5 | # TanH Layer
6 |
7 | * Header: [`./include/caffe/layers/tanh_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/tanh_layer.hpp)
8 | * CPU implementation: [`./src/caffe/layers/tanh_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tanh_layer.cpp)
9 | * CUDA GPU implementation: [`./src/caffe/layers/tanh_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tanh_layer.cu)
10 |
11 | ## Parameters
12 |
13 | * Parameters (`TanHParameter tanh_param`)
14 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
15 |
16 | {% highlight Protobuf %}
17 | {% include proto/TanHParameter.txt %}
18 | {% endhighlight %}
19 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/threshold.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Threshold Layer
3 | ---
4 |
5 | # Threshold Layer
6 |
7 | * Header: [`./include/caffe/layers/threshold_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/threshold_layer.hpp)
8 | * CPU implementation: [`./src/caffe/layers/threshold_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/threshold_layer.cpp)
9 | * CUDA GPU implementation: [`./src/caffe/layers/threshold_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/threshold_layer.cu)
10 |
11 | ## Parameters
12 |
13 | * Parameters (`ThresholdParameter threshold_param`)
14 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
15 |
16 | {% highlight Protobuf %}
17 | {% include proto/ThresholdParameter.txt %}
18 | {% endhighlight %}
19 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/tile.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Tile Layer
3 | ---
4 |
5 | # Tile Layer
6 |
7 | * Layer type: `Tile`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1TileLayer.html)
9 | * Header: [`./include/caffe/layers/tile_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/tile_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/tile_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tile_layer.cpp)
11 | * CUDA GPU implementation: [`./src/caffe/layers/tile_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tile_layer.cu)
12 |
13 | ## Parameters
14 |
15 | * Parameters (`TileParameter tile_param`)
16 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
17 |
18 | {% highlight Protobuf %}
19 | {% include proto/TileParameter.txt %}
20 | {% endhighlight %}
21 |
--------------------------------------------------------------------------------
/caffe/docs/tutorial/layers/windowdata.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: WindowData Layer
3 | ---
4 |
5 | # WindowData Layer
6 |
7 | * Layer type: `WindowData`
8 | * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1WindowDataLayer.html)
9 | * Header: [`./include/caffe/layers/window_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/window_data_layer.hpp)
10 | * CPU implementation: [`./src/caffe/layers/window_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/window_data_layer.cpp)
11 |
12 | ## Parameters
13 |
14 | * Parameters (`WindowDataParameter`)
15 | * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto):
16 |
17 | {% highlight Protobuf %}
18 | {% include proto/WindowDataParameter.txt %}
19 | {% endhighlight %}
20 |
--------------------------------------------------------------------------------
/caffe/examples/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | file(GLOB_RECURSE examples_srcs "${PROJECT_SOURCE_DIR}/examples/*.cpp")
2 |
3 | foreach(source_file ${examples_srcs})
4 | # get file name
5 | get_filename_component(name ${source_file} NAME_WE)
6 |
7 | # get folder name
8 | get_filename_component(path ${source_file} PATH)
9 | get_filename_component(folder ${path} NAME_WE)
10 |
11 | add_executable(${name} ${source_file})
12 | target_link_libraries(${name} ${Caffe_LINK})
13 | caffe_default_properties(${name})
14 |
15 | # set back RUNTIME_OUTPUT_DIRECTORY
16 | set_target_properties(${name} PROPERTIES
17 | RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/examples/${folder}")
18 |
19 | caffe_set_solution_folder(${name} examples)
20 |
21 | # install
22 | install(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_BINDIR})
23 |
24 |
25 | if(UNIX OR APPLE)
26 | # Funny command to make tutorials work
27 | # TODO: remove in future as soon as naming is standardized everywhere
28 | set(__outname ${PROJECT_BINARY_DIR}/examples/${folder}/${name}${Caffe_POSTFIX})
29 | add_custom_command(TARGET ${name} POST_BUILD
30 | COMMAND ln -sf "${__outname}" "${__outname}.bin")
31 | endif()
32 | endforeach()
33 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/cifar10_full_sigmoid_solver.prototxt:
--------------------------------------------------------------------------------
1 | # reduce learning rate after 120 epochs (60000 iters) by factor 0f 10
2 | # then another factor of 10 after 10 more epochs (5000 iters)
3 |
4 | # The train/test net protocol buffer definition
5 | net: "examples/cifar10/cifar10_full_sigmoid_train_test.prototxt"
6 | # test_iter specifies how many forward passes the test should carry out.
7 | # In the case of CIFAR10, we have test batch size 100 and 100 test iterations,
8 | # covering the full 10,000 testing images.
9 | test_iter: 10
10 | # Carry out testing every 1000 training iterations.
11 | test_interval: 1000
12 | # The base learning rate, momentum and the weight decay of the network.
13 | base_lr: 0.001
14 | momentum: 0.9
15 | #weight_decay: 0.004
16 | # The learning rate policy
17 | lr_policy: "step"
18 | gamma: 1
19 | stepsize: 5000
20 | # Display every 100 iterations
21 | display: 100
22 | # The maximum number of iterations
23 | max_iter: 60000
24 | # snapshot intermediate results
25 | snapshot: 10000
26 | snapshot_prefix: "examples/cifar10_full_sigmoid"
27 | # solver mode: CPU or GPU
28 | solver_mode: GPU
29 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt:
--------------------------------------------------------------------------------
1 | # reduce learning rate after 120 epochs (60000 iters) by factor 0f 10
2 | # then another factor of 10 after 10 more epochs (5000 iters)
3 |
4 | # The train/test net protocol buffer definition
5 | net: "examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt"
6 | # test_iter specifies how many forward passes the test should carry out.
7 | # In the case of CIFAR10, we have test batch size 100 and 100 test iterations,
8 | # covering the full 10,000 testing images.
9 | test_iter: 10
10 | # Carry out testing every 1000 training iterations.
11 | test_interval: 1000
12 | # The base learning rate, momentum and the weight decay of the network.
13 | base_lr: 0.001
14 | momentum: 0.9
15 | #weight_decay: 0.004
16 | # The learning rate policy
17 | lr_policy: "step"
18 | gamma: 1
19 | stepsize: 5000
20 | # Display every 100 iterations
21 | display: 100
22 | # The maximum number of iterations
23 | max_iter: 60000
24 | # snapshot intermediate results
25 | snapshot: 10000
26 | snapshot_prefix: "examples/cifar10_full_sigmoid_bn"
27 | # solver mode: CPU or GPU
28 | solver_mode: GPU
29 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/cifar10_full_solver.prototxt:
--------------------------------------------------------------------------------
1 | # reduce learning rate after 120 epochs (60000 iters) by factor 0f 10
2 | # then another factor of 10 after 10 more epochs (5000 iters)
3 |
4 | # The train/test net protocol buffer definition
5 | net: "examples/cifar10/cifar10_full_train_test.prototxt"
6 | # test_iter specifies how many forward passes the test should carry out.
7 | # In the case of CIFAR10, we have test batch size 100 and 100 test iterations,
8 | # covering the full 10,000 testing images.
9 | test_iter: 100
10 | # Carry out testing every 1000 training iterations.
11 | test_interval: 1000
12 | # The base learning rate, momentum and the weight decay of the network.
13 | base_lr: 0.001
14 | momentum: 0.9
15 | weight_decay: 0.004
16 | # The learning rate policy
17 | lr_policy: "fixed"
18 | # Display every 200 iterations
19 | display: 200
20 | # The maximum number of iterations
21 | max_iter: 60000
22 | # snapshot intermediate results
23 | snapshot: 10000
24 | snapshot_format: HDF5
25 | snapshot_prefix: "examples/cifar10/cifar10_full"
26 | # solver mode: CPU or GPU
27 | solver_mode: GPU
28 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/cifar10_full_solver_lr1.prototxt:
--------------------------------------------------------------------------------
1 | # reduce learning rate after 120 epochs (60000 iters) by factor 0f 10
2 | # then another factor of 10 after 10 more epochs (5000 iters)
3 |
4 | # The train/test net protocol buffer definition
5 | net: "examples/cifar10/cifar10_full_train_test.prototxt"
6 | # test_iter specifies how many forward passes the test should carry out.
7 | # In the case of CIFAR10, we have test batch size 100 and 100 test iterations,
8 | # covering the full 10,000 testing images.
9 | test_iter: 100
10 | # Carry out testing every 1000 training iterations.
11 | test_interval: 1000
12 | # The base learning rate, momentum and the weight decay of the network.
13 | base_lr: 0.0001
14 | momentum: 0.9
15 | weight_decay: 0.004
16 | # The learning rate policy
17 | lr_policy: "fixed"
18 | # Display every 200 iterations
19 | display: 200
20 | # The maximum number of iterations
21 | max_iter: 65000
22 | # snapshot intermediate results
23 | snapshot: 5000
24 | snapshot_format: HDF5
25 | snapshot_prefix: "examples/cifar10/cifar10_full"
26 | # solver mode: CPU or GPU
27 | solver_mode: GPU
28 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/cifar10_full_solver_lr2.prototxt:
--------------------------------------------------------------------------------
1 | # reduce learning rate after 120 epochs (60000 iters) by factor 0f 10
2 | # then another factor of 10 after 10 more epochs (5000 iters)
3 |
4 | # The train/test net protocol buffer definition
5 | net: "examples/cifar10/cifar10_full_train_test.prototxt"
6 | # test_iter specifies how many forward passes the test should carry out.
7 | # In the case of CIFAR10, we have test batch size 100 and 100 test iterations,
8 | # covering the full 10,000 testing images.
9 | test_iter: 100
10 | # Carry out testing every 1000 training iterations.
11 | test_interval: 1000
12 | # The base learning rate, momentum and the weight decay of the network.
13 | base_lr: 0.00001
14 | momentum: 0.9
15 | weight_decay: 0.004
16 | # The learning rate policy
17 | lr_policy: "fixed"
18 | # Display every 200 iterations
19 | display: 200
20 | # The maximum number of iterations
21 | max_iter: 70000
22 | # snapshot intermediate results
23 | snapshot: 5000
24 | snapshot_format: HDF5
25 | snapshot_prefix: "examples/cifar10/cifar10_full"
26 | # solver mode: CPU or GPU
27 | solver_mode: GPU
28 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/cifar10_quick_solver.prototxt:
--------------------------------------------------------------------------------
1 | # reduce the learning rate after 8 epochs (4000 iters) by a factor of 10
2 |
3 | # The train/test net protocol buffer definition
4 | net: "examples/cifar10/cifar10_quick_train_test.prototxt"
5 | # test_iter specifies how many forward passes the test should carry out.
6 | # In the case of MNIST, we have test batch size 100 and 100 test iterations,
7 | # covering the full 10,000 testing images.
8 | test_iter: 100
9 | # Carry out testing every 500 training iterations.
10 | test_interval: 500
11 | # The base learning rate, momentum and the weight decay of the network.
12 | base_lr: 0.001
13 | momentum: 0.9
14 | weight_decay: 0.004
15 | # The learning rate policy
16 | lr_policy: "fixed"
17 | # Display every 100 iterations
18 | display: 100
19 | # The maximum number of iterations
20 | max_iter: 4000
21 | # snapshot intermediate results
22 | snapshot: 4000
23 | snapshot_prefix: "examples/cifar10/cifar10_quick"
24 | # solver mode: CPU or GPU
25 | solver_mode: GPU
26 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/cifar10_quick_solver_lr1.prototxt:
--------------------------------------------------------------------------------
1 | # reduce the learning rate after 8 epochs (4000 iters) by a factor of 10
2 |
3 | # The train/test net protocol buffer definition
4 | net: "examples/cifar10/cifar10_quick_train_test.prototxt"
5 | # test_iter specifies how many forward passes the test should carry out.
6 | # In the case of MNIST, we have test batch size 100 and 100 test iterations,
7 | # covering the full 10,000 testing images.
8 | test_iter: 100
9 | # Carry out testing every 500 training iterations.
10 | test_interval: 500
11 | # The base learning rate, momentum and the weight decay of the network.
12 | base_lr: 0.0001
13 | momentum: 0.9
14 | weight_decay: 0.004
15 | # The learning rate policy
16 | lr_policy: "fixed"
17 | # Display every 100 iterations
18 | display: 100
19 | # The maximum number of iterations
20 | max_iter: 5000
21 | # snapshot intermediate results
22 | snapshot: 5000
23 | snapshot_format: HDF5
24 | snapshot_prefix: "examples/cifar10/cifar10_quick"
25 | # solver mode: CPU or GPU
26 | solver_mode: GPU
27 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/create_cifar10.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # This script converts the cifar data into leveldb format.
3 | set -e
4 |
5 | EXAMPLE=examples/cifar10
6 | DATA=data/cifar10
7 | DBTYPE=lmdb
8 |
9 | echo "Creating $DBTYPE..."
10 |
11 | rm -rf $EXAMPLE/cifar10_train_$DBTYPE $EXAMPLE/cifar10_test_$DBTYPE
12 |
13 | ./build/examples/cifar10/convert_cifar_data.bin $DATA $EXAMPLE $DBTYPE
14 |
15 | echo "Computing image mean..."
16 |
17 | ./build/tools/compute_image_mean -backend=$DBTYPE \
18 | $EXAMPLE/cifar10_train_$DBTYPE $EXAMPLE/mean.binaryproto
19 |
20 | echo "Done."
21 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/train_full.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | TOOLS=./build/tools
5 |
6 | $TOOLS/caffe train \
7 | --solver=examples/cifar10/cifar10_full_solver.prototxt $@
8 |
9 | # reduce learning rate by factor of 10
10 | $TOOLS/caffe train \
11 | --solver=examples/cifar10/cifar10_full_solver_lr1.prototxt \
12 | --snapshot=examples/cifar10/cifar10_full_iter_60000.solverstate $@
13 |
14 | # reduce learning rate by factor of 10
15 | $TOOLS/caffe train \
16 | --solver=examples/cifar10/cifar10_full_solver_lr2.prototxt \
17 | --snapshot=examples/cifar10/cifar10_full_iter_65000.solverstate $@
18 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/train_full_sigmoid.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | TOOLS=./build/tools
5 |
6 | $TOOLS/caffe train \
7 | --solver=examples/cifar10/cifar10_full_sigmoid_solver.prototxt $@
8 |
9 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/train_full_sigmoid_bn.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | TOOLS=./build/tools
5 |
6 | $TOOLS/caffe train \
7 | --solver=examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt $@
8 |
9 |
--------------------------------------------------------------------------------
/caffe/examples/cifar10/train_quick.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | TOOLS=./build/tools
5 |
6 | $TOOLS/caffe train \
7 | --solver=examples/cifar10/cifar10_quick_solver.prototxt $@
8 |
9 | # reduce learning rate by factor of 10 after 8 epochs
10 | $TOOLS/caffe train \
11 | --solver=examples/cifar10/cifar10_quick_solver_lr1.prototxt \
12 | --snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate $@
13 |
--------------------------------------------------------------------------------
/caffe/examples/finetune_flickr_style/flickr_style.csv.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/examples/finetune_flickr_style/flickr_style.csv.gz
--------------------------------------------------------------------------------
/caffe/examples/finetune_flickr_style/style_names.txt:
--------------------------------------------------------------------------------
1 | Detailed
2 | Pastel
3 | Melancholy
4 | Noir
5 | HDR
6 | Vintage
7 | Long Exposure
8 | Horror
9 | Sunny
10 | Bright
11 | Hazy
12 | Bokeh
13 | Serene
14 | Texture
15 | Ethereal
16 | Macro
17 | Depth of Field
18 | Geometric Composition
19 | Minimal
20 | Romantic
21 |
--------------------------------------------------------------------------------
/caffe/examples/finetune_pascal_detection/pascal_finetune_solver.prototxt:
--------------------------------------------------------------------------------
1 | net: "examples/finetune_pascal_detection/pascal_finetune_trainval_test.prototxt"
2 | test_iter: 100
3 | test_interval: 1000
4 | base_lr: 0.001
5 | lr_policy: "step"
6 | gamma: 0.1
7 | stepsize: 20000
8 | display: 20
9 | max_iter: 100000
10 | momentum: 0.9
11 | weight_decay: 0.0005
12 | snapshot: 10000
13 | snapshot_prefix: "examples/finetune_pascal_detection/pascal_det_finetune"
14 |
--------------------------------------------------------------------------------
/caffe/examples/hdf5_classification/nonlinear_auto_test.prototxt:
--------------------------------------------------------------------------------
1 | layer {
2 | name: "data"
3 | type: "HDF5Data"
4 | top: "data"
5 | top: "label"
6 | hdf5_data_param {
7 | source: "examples/hdf5_classification/data/test.txt"
8 | batch_size: 10
9 | }
10 | }
11 | layer {
12 | name: "ip1"
13 | type: "InnerProduct"
14 | bottom: "data"
15 | top: "ip1"
16 | inner_product_param {
17 | num_output: 40
18 | weight_filler {
19 | type: "xavier"
20 | }
21 | }
22 | }
23 | layer {
24 | name: "relu1"
25 | type: "ReLU"
26 | bottom: "ip1"
27 | top: "ip1"
28 | }
29 | layer {
30 | name: "ip2"
31 | type: "InnerProduct"
32 | bottom: "ip1"
33 | top: "ip2"
34 | inner_product_param {
35 | num_output: 2
36 | weight_filler {
37 | type: "xavier"
38 | }
39 | }
40 | }
41 | layer {
42 | name: "accuracy"
43 | type: "Accuracy"
44 | bottom: "ip2"
45 | bottom: "label"
46 | top: "accuracy"
47 | }
48 | layer {
49 | name: "loss"
50 | type: "SoftmaxWithLoss"
51 | bottom: "ip2"
52 | bottom: "label"
53 | top: "loss"
54 | }
55 |
--------------------------------------------------------------------------------
/caffe/examples/hdf5_classification/nonlinear_auto_train.prototxt:
--------------------------------------------------------------------------------
1 | layer {
2 | name: "data"
3 | type: "HDF5Data"
4 | top: "data"
5 | top: "label"
6 | hdf5_data_param {
7 | source: "examples/hdf5_classification/data/train.txt"
8 | batch_size: 10
9 | }
10 | }
11 | layer {
12 | name: "ip1"
13 | type: "InnerProduct"
14 | bottom: "data"
15 | top: "ip1"
16 | inner_product_param {
17 | num_output: 40
18 | weight_filler {
19 | type: "xavier"
20 | }
21 | }
22 | }
23 | layer {
24 | name: "relu1"
25 | type: "ReLU"
26 | bottom: "ip1"
27 | top: "ip1"
28 | }
29 | layer {
30 | name: "ip2"
31 | type: "InnerProduct"
32 | bottom: "ip1"
33 | top: "ip2"
34 | inner_product_param {
35 | num_output: 2
36 | weight_filler {
37 | type: "xavier"
38 | }
39 | }
40 | }
41 | layer {
42 | name: "accuracy"
43 | type: "Accuracy"
44 | bottom: "ip2"
45 | bottom: "label"
46 | top: "accuracy"
47 | }
48 | layer {
49 | name: "loss"
50 | type: "SoftmaxWithLoss"
51 | bottom: "ip2"
52 | bottom: "label"
53 | top: "loss"
54 | }
55 |
--------------------------------------------------------------------------------
/caffe/examples/hdf5_classification/train_val.prototxt:
--------------------------------------------------------------------------------
1 | name: "LogisticRegressionNet"
2 | layer {
3 | name: "data"
4 | type: "HDF5Data"
5 | top: "data"
6 | top: "label"
7 | include {
8 | phase: TRAIN
9 | }
10 | hdf5_data_param {
11 | source: "examples/hdf5_classification/data/train.txt"
12 | batch_size: 10
13 | }
14 | }
15 | layer {
16 | name: "data"
17 | type: "HDF5Data"
18 | top: "data"
19 | top: "label"
20 | include {
21 | phase: TEST
22 | }
23 | hdf5_data_param {
24 | source: "examples/hdf5_classification/data/test.txt"
25 | batch_size: 10
26 | }
27 | }
28 | layer {
29 | name: "fc1"
30 | type: "InnerProduct"
31 | bottom: "data"
32 | top: "fc1"
33 | param {
34 | lr_mult: 1
35 | decay_mult: 1
36 | }
37 | param {
38 | lr_mult: 2
39 | decay_mult: 0
40 | }
41 | inner_product_param {
42 | num_output: 2
43 | weight_filler {
44 | type: "xavier"
45 | }
46 | bias_filler {
47 | type: "constant"
48 | value: 0
49 | }
50 | }
51 | }
52 | layer {
53 | name: "loss"
54 | type: "SoftmaxWithLoss"
55 | bottom: "fc1"
56 | bottom: "label"
57 | top: "loss"
58 | }
59 | layer {
60 | name: "accuracy"
61 | type: "Accuracy"
62 | bottom: "fc1"
63 | bottom: "label"
64 | top: "accuracy"
65 | include {
66 | phase: TEST
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/caffe/examples/imagenet/make_imagenet_mean.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # Compute the mean image from the imagenet training lmdb
3 | # N.B. this is available in data/ilsvrc12
4 |
5 | EXAMPLE=examples/imagenet
6 | DATA=data/ilsvrc12
7 | TOOLS=build/tools
8 |
9 | $TOOLS/compute_image_mean $EXAMPLE/ilsvrc12_train_lmdb \
10 | $DATA/imagenet_mean.binaryproto
11 |
12 | echo "Done."
13 |
--------------------------------------------------------------------------------
/caffe/examples/imagenet/resume_training.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | ./build/tools/caffe train \
5 | --solver=models/bvlc_reference_caffenet/solver.prototxt \
6 | --snapshot=models/bvlc_reference_caffenet/caffenet_train_10000.solverstate.h5 \
7 | $@
8 |
--------------------------------------------------------------------------------
/caffe/examples/imagenet/train_caffenet.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | ./build/tools/caffe train \
5 | --solver=models/bvlc_reference_caffenet/solver.prototxt $@
6 |
--------------------------------------------------------------------------------
/caffe/examples/images/cat gray.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/examples/images/cat gray.jpg
--------------------------------------------------------------------------------
/caffe/examples/images/cat.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/examples/images/cat.jpg
--------------------------------------------------------------------------------
/caffe/examples/images/cat_gray.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/examples/images/cat_gray.jpg
--------------------------------------------------------------------------------
/caffe/examples/images/fish-bike.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/examples/images/fish-bike.jpg
--------------------------------------------------------------------------------
/caffe/examples/mnist/create_mnist.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # This script converts the mnist data into lmdb/leveldb format,
3 | # depending on the value assigned to $BACKEND.
4 | set -e
5 |
6 | EXAMPLE=examples/mnist
7 | DATA=data/mnist
8 | BUILD=build/examples/mnist
9 |
10 | BACKEND="lmdb"
11 |
12 | echo "Creating ${BACKEND}..."
13 |
14 | rm -rf $EXAMPLE/mnist_train_${BACKEND}
15 | rm -rf $EXAMPLE/mnist_test_${BACKEND}
16 |
17 | $BUILD/convert_mnist_data.bin $DATA/train-images-idx3-ubyte \
18 | $DATA/train-labels-idx1-ubyte $EXAMPLE/mnist_train_${BACKEND} --backend=${BACKEND}
19 | $BUILD/convert_mnist_data.bin $DATA/t10k-images-idx3-ubyte \
20 | $DATA/t10k-labels-idx1-ubyte $EXAMPLE/mnist_test_${BACKEND} --backend=${BACKEND}
21 |
22 | echo "Done."
23 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/lenet_adadelta_solver.prototxt:
--------------------------------------------------------------------------------
1 | # The train/test net protocol buffer definition
2 | net: "examples/mnist/lenet_train_test.prototxt"
3 | # test_iter specifies how many forward passes the test should carry out.
4 | # In the case of MNIST, we have test batch size 100 and 100 test iterations,
5 | # covering the full 10,000 testing images.
6 | test_iter: 100
7 | # Carry out testing every 500 training iterations.
8 | test_interval: 500
9 | # The base learning rate, momentum and the weight decay of the network.
10 | base_lr: 1.0
11 | lr_policy: "fixed"
12 | momentum: 0.95
13 | weight_decay: 0.0005
14 | # Display every 100 iterations
15 | display: 100
16 | # The maximum number of iterations
17 | max_iter: 10000
18 | # snapshot intermediate results
19 | snapshot: 5000
20 | snapshot_prefix: "examples/mnist/lenet_adadelta"
21 | # solver mode: CPU or GPU
22 | solver_mode: GPU
23 | type: "AdaDelta"
24 | delta: 1e-6
25 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/lenet_auto_solver.prototxt:
--------------------------------------------------------------------------------
1 | # The train/test net protocol buffer definition
2 | train_net: "mnist/lenet_auto_train.prototxt"
3 | test_net: "mnist/lenet_auto_test.prototxt"
4 | # test_iter specifies how many forward passes the test should carry out.
5 | # In the case of MNIST, we have test batch size 100 and 100 test iterations,
6 | # covering the full 10,000 testing images.
7 | test_iter: 100
8 | # Carry out testing every 500 training iterations.
9 | test_interval: 500
10 | # The base learning rate, momentum and the weight decay of the network.
11 | base_lr: 0.01
12 | momentum: 0.9
13 | weight_decay: 0.0005
14 | # The learning rate policy
15 | lr_policy: "inv"
16 | gamma: 0.0001
17 | power: 0.75
18 | # Display every 100 iterations
19 | display: 100
20 | # The maximum number of iterations
21 | max_iter: 10000
22 | # snapshot intermediate results
23 | snapshot: 5000
24 | snapshot_prefix: "mnist/lenet"
25 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/lenet_multistep_solver.prototxt:
--------------------------------------------------------------------------------
1 | # The train/test net protocol buffer definition
2 | net: "examples/mnist/lenet_train_test.prototxt"
3 | # test_iter specifies how many forward passes the test should carry out.
4 | # In the case of MNIST, we have test batch size 100 and 100 test iterations,
5 | # covering the full 10,000 testing images.
6 | test_iter: 100
7 | # Carry out testing every 500 training iterations.
8 | test_interval: 500
9 | # The base learning rate, momentum and the weight decay of the network.
10 | base_lr: 0.01
11 | momentum: 0.9
12 | weight_decay: 0.0005
13 | # The learning rate policy
14 | lr_policy: "multistep"
15 | gamma: 0.9
16 | stepvalue: 5000
17 | stepvalue: 7000
18 | stepvalue: 8000
19 | stepvalue: 9000
20 | stepvalue: 9500
21 | # Display every 100 iterations
22 | display: 100
23 | # The maximum number of iterations
24 | max_iter: 10000
25 | # snapshot intermediate results
26 | snapshot: 5000
27 | snapshot_prefix: "examples/mnist/lenet_multistep"
28 | # solver mode: CPU or GPU
29 | solver_mode: GPU
30 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/lenet_solver.prototxt:
--------------------------------------------------------------------------------
1 | # The train/test net protocol buffer definition
2 | net: "examples/mnist/lenet_train_test.prototxt"
3 | # test_iter specifies how many forward passes the test should carry out.
4 | # In the case of MNIST, we have test batch size 100 and 100 test iterations,
5 | # covering the full 10,000 testing images.
6 | test_iter: 100
7 | # Carry out testing every 500 training iterations.
8 | test_interval: 500
9 | # The base learning rate, momentum and the weight decay of the network.
10 | base_lr: 0.01
11 | momentum: 0.9
12 | weight_decay: 0.0005
13 | # The learning rate policy
14 | lr_policy: "inv"
15 | gamma: 0.0001
16 | power: 0.75
17 | # Display every 100 iterations
18 | display: 100
19 | # The maximum number of iterations
20 | max_iter: 10000
21 | # snapshot intermediate results
22 | snapshot: 5000
23 | snapshot_prefix: "examples/mnist/lenet"
24 | # solver mode: CPU or GPU
25 | solver_mode: GPU
26 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/lenet_solver_adam.prototxt:
--------------------------------------------------------------------------------
1 | # The train/test net protocol buffer definition
2 | # this follows "ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION"
3 | net: "examples/mnist/lenet_train_test.prototxt"
4 | # test_iter specifies how many forward passes the test should carry out.
5 | # In the case of MNIST, we have test batch size 100 and 100 test iterations,
6 | # covering the full 10,000 testing images.
7 | test_iter: 100
8 | # Carry out testing every 500 training iterations.
9 | test_interval: 500
10 | # All parameters are from the cited paper above
11 | base_lr: 0.001
12 | momentum: 0.9
13 | momentum2: 0.999
14 | # since Adam dynamically changes the learning rate, we set the base learning
15 | # rate to a fixed value
16 | lr_policy: "fixed"
17 | # Display every 100 iterations
18 | display: 100
19 | # The maximum number of iterations
20 | max_iter: 10000
21 | # snapshot intermediate results
22 | snapshot: 5000
23 | snapshot_prefix: "examples/mnist/lenet"
24 | # solver mode: CPU or GPU
25 | type: "Adam"
26 | solver_mode: GPU
27 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/lenet_solver_rmsprop.prototxt:
--------------------------------------------------------------------------------
1 | # The train/test net protocol buffer definition
2 | net: "examples/mnist/lenet_train_test.prototxt"
3 | # test_iter specifies how many forward passes the test should carry out.
4 | # In the case of MNIST, we have test batch size 100 and 100 test iterations,
5 | # covering the full 10,000 testing images.
6 | test_iter: 100
7 | # Carry out testing every 500 training iterations.
8 | test_interval: 500
9 | # The base learning rate, momentum and the weight decay of the network.
10 | base_lr: 0.01
11 | momentum: 0.0
12 | weight_decay: 0.0005
13 | # The learning rate policy
14 | lr_policy: "inv"
15 | gamma: 0.0001
16 | power: 0.75
17 | # Display every 100 iterations
18 | display: 100
19 | # The maximum number of iterations
20 | max_iter: 10000
21 | # snapshot intermediate results
22 | snapshot: 5000
23 | snapshot_prefix: "examples/mnist/lenet_rmsprop"
24 | # solver mode: CPU or GPU
25 | solver_mode: GPU
26 | type: "RMSProp"
27 | rms_decay: 0.98
28 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/mnist_autoencoder_solver.prototxt:
--------------------------------------------------------------------------------
1 | net: "examples/mnist/mnist_autoencoder.prototxt"
2 | test_state: { stage: 'test-on-train' }
3 | test_iter: 500
4 | test_state: { stage: 'test-on-test' }
5 | test_iter: 100
6 | test_interval: 500
7 | test_compute_loss: true
8 | base_lr: 0.01
9 | lr_policy: "step"
10 | gamma: 0.1
11 | stepsize: 10000
12 | display: 100
13 | max_iter: 65000
14 | weight_decay: 0.0005
15 | snapshot: 10000
16 | snapshot_prefix: "examples/mnist/mnist_autoencoder"
17 | momentum: 0.9
18 | # solver mode: CPU or GPU
19 | solver_mode: GPU
20 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/mnist_autoencoder_solver_adadelta.prototxt:
--------------------------------------------------------------------------------
1 | net: "examples/mnist/mnist_autoencoder.prototxt"
2 | test_state: { stage: 'test-on-train' }
3 | test_iter: 500
4 | test_state: { stage: 'test-on-test' }
5 | test_iter: 100
6 | test_interval: 500
7 | test_compute_loss: true
8 | base_lr: 1.0
9 | lr_policy: "fixed"
10 | momentum: 0.95
11 | delta: 1e-8
12 | display: 100
13 | max_iter: 65000
14 | weight_decay: 0.0005
15 | snapshot: 10000
16 | snapshot_prefix: "examples/mnist/mnist_autoencoder_adadelta_train"
17 | # solver mode: CPU or GPU
18 | solver_mode: GPU
19 | type: "AdaDelta"
20 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/mnist_autoencoder_solver_adagrad.prototxt:
--------------------------------------------------------------------------------
1 | net: "examples/mnist/mnist_autoencoder.prototxt"
2 | test_state: { stage: 'test-on-train' }
3 | test_iter: 500
4 | test_state: { stage: 'test-on-test' }
5 | test_iter: 100
6 | test_interval: 500
7 | test_compute_loss: true
8 | base_lr: 0.01
9 | lr_policy: "fixed"
10 | display: 100
11 | max_iter: 65000
12 | weight_decay: 0.0005
13 | snapshot: 10000
14 | snapshot_prefix: "examples/mnist/mnist_autoencoder_adagrad_train"
15 | # solver mode: CPU or GPU
16 | solver_mode: GPU
17 | type: "AdaGrad"
18 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/mnist_autoencoder_solver_nesterov.prototxt:
--------------------------------------------------------------------------------
1 | net: "examples/mnist/mnist_autoencoder.prototxt"
2 | test_state: { stage: 'test-on-train' }
3 | test_iter: 500
4 | test_state: { stage: 'test-on-test' }
5 | test_iter: 100
6 | test_interval: 500
7 | test_compute_loss: true
8 | base_lr: 0.01
9 | lr_policy: "step"
10 | gamma: 0.1
11 | stepsize: 10000
12 | display: 100
13 | max_iter: 65000
14 | weight_decay: 0.0005
15 | snapshot: 10000
16 | snapshot_prefix: "examples/mnist/mnist_autoencoder_nesterov_train"
17 | momentum: 0.95
18 | # solver mode: CPU or GPU
19 | solver_mode: GPU
20 | type: "Nesterov"
21 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/train_lenet.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | ./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt $@
5 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/train_lenet_adam.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | ./build/tools/caffe train --solver=examples/mnist/lenet_solver_adam.prototxt $@
5 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/train_lenet_consolidated.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | ./build/tools/caffe train \
5 | --solver=examples/mnist/lenet_consolidated_solver.prototxt $@
6 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/train_lenet_rmsprop.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | ./build/tools/caffe train \
5 | --solver=examples/mnist/lenet_solver_rmsprop.prototxt $@
6 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/train_mnist_autoencoder.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | ./build/tools/caffe train \
5 | --solver=examples/mnist/mnist_autoencoder_solver.prototxt $@
6 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/train_mnist_autoencoder_adadelta.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e
3 |
4 | ./build/tools/caffe train \
5 | --solver=examples/mnist/mnist_autoencoder_solver_adadelta.prototxt $@
6 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/train_mnist_autoencoder_adagrad.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e
3 |
4 | ./build/tools/caffe train \
5 | --solver=examples/mnist/mnist_autoencoder_solver_adagrad.prototxt $@
6 |
--------------------------------------------------------------------------------
/caffe/examples/mnist/train_mnist_autoencoder_nesterov.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e
3 |
4 | ./build/tools/caffe train \
5 | --solver=examples/mnist/mnist_autoencoder_solver_nesterov.prototxt $@
6 |
--------------------------------------------------------------------------------
/caffe/examples/net_surgery/conv.prototxt:
--------------------------------------------------------------------------------
1 | # Simple single-layer network to showcase editing model parameters.
2 | name: "convolution"
3 | layer {
4 | name: "data"
5 | type: "Input"
6 | top: "data"
7 | input_param { shape: { dim: 1 dim: 1 dim: 100 dim: 100 } }
8 | }
9 | layer {
10 | name: "conv"
11 | type: "Convolution"
12 | bottom: "data"
13 | top: "conv"
14 | convolution_param {
15 | num_output: 3
16 | kernel_size: 5
17 | stride: 1
18 | weight_filler {
19 | type: "gaussian"
20 | std: 0.01
21 | }
22 | bias_filler {
23 | type: "constant"
24 | value: 0
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/caffe/examples/pycaffe/layers/pyloss.py:
--------------------------------------------------------------------------------
1 | import caffe
2 | import numpy as np
3 |
4 |
5 | class EuclideanLossLayer(caffe.Layer):
6 | """
7 | Compute the Euclidean Loss in the same manner as the C++ EuclideanLossLayer
8 | to demonstrate the class interface for developing layers in Python.
9 | """
10 |
11 | def setup(self, bottom, top):
12 | # check input pair
13 | if len(bottom) != 2:
14 | raise Exception("Need two inputs to compute distance.")
15 |
16 | def reshape(self, bottom, top):
17 | # check input dimensions match
18 | if bottom[0].count != bottom[1].count:
19 | raise Exception("Inputs must have the same dimension.")
20 | # difference is shape of inputs
21 | self.diff = np.zeros_like(bottom[0].data, dtype=np.float32)
22 | # loss output is scalar
23 | top[0].reshape(1)
24 |
25 | def forward(self, bottom, top):
26 | self.diff[...] = bottom[0].data - bottom[1].data
27 | top[0].data[...] = np.sum(self.diff**2) / bottom[0].num / 2.
28 |
29 | def backward(self, top, propagate_down, bottom):
30 | for i in range(2):
31 | if not propagate_down[i]:
32 | continue
33 | if i == 0:
34 | sign = 1
35 | else:
36 | sign = -1
37 | bottom[i].diff[...] = sign * self.diff / bottom[i].num
38 |
--------------------------------------------------------------------------------
/caffe/examples/pycaffe/linreg.prototxt:
--------------------------------------------------------------------------------
1 | name: 'LinearRegressionExample'
2 | # define a simple network for linear regression on dummy data
3 | # that computes the loss by a PythonLayer.
4 | layer {
5 | type: 'DummyData'
6 | name: 'x'
7 | top: 'x'
8 | dummy_data_param {
9 | shape: { dim: 10 dim: 3 dim: 2 }
10 | data_filler: { type: 'gaussian' }
11 | }
12 | }
13 | layer {
14 | type: 'DummyData'
15 | name: 'y'
16 | top: 'y'
17 | dummy_data_param {
18 | shape: { dim: 10 dim: 3 dim: 2 }
19 | data_filler: { type: 'gaussian' }
20 | }
21 | }
22 | # include InnerProduct layers for parameters
23 | # so the net will need backward
24 | layer {
25 | type: 'InnerProduct'
26 | name: 'ipx'
27 | top: 'ipx'
28 | bottom: 'x'
29 | inner_product_param {
30 | num_output: 10
31 | weight_filler { type: 'xavier' }
32 | }
33 | }
34 | layer {
35 | type: 'InnerProduct'
36 | name: 'ipy'
37 | top: 'ipy'
38 | bottom: 'y'
39 | inner_product_param {
40 | num_output: 10
41 | weight_filler { type: 'xavier' }
42 | }
43 | }
44 | layer {
45 | type: 'Python'
46 | name: 'loss'
47 | top: 'loss'
48 | bottom: 'ipx'
49 | bottom: 'ipy'
50 | python_param {
51 | # the module name -- usually the filename -- that needs to be in $PYTHONPATH
52 | module: 'pyloss'
53 | # the layer name -- the class name in the module
54 | layer: 'EuclideanLossLayer'
55 | }
56 | # set loss weight so Caffe knows this is a loss layer.
57 | # since PythonLayer inherits directly from Layer, this isn't automatically
58 | # known to Caffe
59 | loss_weight: 1
60 | }
61 |
--------------------------------------------------------------------------------
/caffe/examples/siamese/create_mnist_siamese.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # This script converts the mnist data into leveldb format.
3 | set -e
4 |
5 | EXAMPLES=./build/examples/siamese
6 | DATA=./data/mnist
7 |
8 | echo "Creating leveldb..."
9 |
10 | rm -rf ./examples/siamese/mnist_siamese_train_leveldb
11 | rm -rf ./examples/siamese/mnist_siamese_test_leveldb
12 |
13 | $EXAMPLES/convert_mnist_siamese_data.bin \
14 | $DATA/train-images-idx3-ubyte \
15 | $DATA/train-labels-idx1-ubyte \
16 | ./examples/siamese/mnist_siamese_train_leveldb
17 | $EXAMPLES/convert_mnist_siamese_data.bin \
18 | $DATA/t10k-images-idx3-ubyte \
19 | $DATA/t10k-labels-idx1-ubyte \
20 | ./examples/siamese/mnist_siamese_test_leveldb
21 |
22 | echo "Done."
23 |
--------------------------------------------------------------------------------
/caffe/examples/siamese/mnist_siamese_solver.prototxt:
--------------------------------------------------------------------------------
1 | # The train/test net protocol buffer definition
2 | net: "examples/siamese/mnist_siamese_train_test.prototxt"
3 | # test_iter specifies how many forward passes the test should carry out.
4 | # In the case of MNIST, we have test batch size 100 and 100 test iterations,
5 | # covering the full 10,000 testing images.
6 | test_iter: 100
7 | # Carry out testing every 500 training iterations.
8 | test_interval: 500
9 | # The base learning rate, momentum and the weight decay of the network.
10 | base_lr: 0.01
11 | momentum: 0.9
12 | weight_decay: 0.0000
13 | # The learning rate policy
14 | lr_policy: "inv"
15 | gamma: 0.0001
16 | power: 0.75
17 | # Display every 100 iterations
18 | display: 100
19 | # The maximum number of iterations
20 | max_iter: 50000
21 | # snapshot intermediate results
22 | snapshot: 5000
23 | snapshot_prefix: "examples/siamese/mnist_siamese"
24 | # solver mode: CPU or GPU
25 | solver_mode: GPU
26 |
--------------------------------------------------------------------------------
/caffe/examples/siamese/train_mnist_siamese.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set -e
3 |
4 | TOOLS=./build/tools
5 |
6 | $TOOLS/caffe train --solver=examples/siamese/mnist_siamese_solver.prototxt $@
7 |
--------------------------------------------------------------------------------
/caffe/examples/web_demo/exifutil.py:
--------------------------------------------------------------------------------
1 | """
2 | This script handles the skimage exif problem.
3 | """
4 |
5 | from PIL import Image
6 | import numpy as np
7 |
8 | ORIENTATIONS = { # used in apply_orientation
9 | 2: (Image.FLIP_LEFT_RIGHT,),
10 | 3: (Image.ROTATE_180,),
11 | 4: (Image.FLIP_TOP_BOTTOM,),
12 | 5: (Image.FLIP_LEFT_RIGHT, Image.ROTATE_90),
13 | 6: (Image.ROTATE_270,),
14 | 7: (Image.FLIP_LEFT_RIGHT, Image.ROTATE_270),
15 | 8: (Image.ROTATE_90,)
16 | }
17 |
18 |
19 | def open_oriented_im(im_path):
20 | im = Image.open(im_path)
21 | if hasattr(im, '_getexif'):
22 | exif = im._getexif()
23 | if exif is not None and 274 in exif:
24 | orientation = exif[274]
25 | im = apply_orientation(im, orientation)
26 | img = np.asarray(im).astype(np.float32) / 255.
27 | if img.ndim == 2:
28 | img = img[:, :, np.newaxis]
29 | img = np.tile(img, (1, 1, 3))
30 | elif img.shape[2] == 4:
31 | img = img[:, :, :3]
32 | return img
33 |
34 |
35 | def apply_orientation(im, orientation):
36 | if orientation in ORIENTATIONS:
37 | for method in ORIENTATIONS[orientation]:
38 | im = im.transpose(method)
39 | return im
40 |
--------------------------------------------------------------------------------
/caffe/examples/web_demo/requirements.txt:
--------------------------------------------------------------------------------
1 | werkzeug
2 | flask
3 | tornado
4 | numpy
5 | pandas
6 | pillow
7 | pyyaml
8 |
--------------------------------------------------------------------------------
/caffe/include/caffe/caffe.hpp:
--------------------------------------------------------------------------------
1 | // caffe.hpp is the header file that you need to include in your code. It wraps
2 | // all the internal caffe header files into one for simpler inclusion.
3 |
4 | #ifndef CAFFE_CAFFE_HPP_
5 | #define CAFFE_CAFFE_HPP_
6 |
7 | #include "caffe/blob.hpp"
8 | #include "caffe/common.hpp"
9 | #include "caffe/filler.hpp"
10 | #include "caffe/layer.hpp"
11 | #include "caffe/layer_factory.hpp"
12 | #include "caffe/net.hpp"
13 | #include "caffe/parallel.hpp"
14 | #include "caffe/proto/caffe.pb.h"
15 | #include "caffe/solver.hpp"
16 | #include "caffe/solver_factory.hpp"
17 | #include "caffe/util/benchmark.hpp"
18 | #include "caffe/util/io.hpp"
19 | #include "caffe/util/upgrade_proto.hpp"
20 |
21 | #endif // CAFFE_CAFFE_HPP_
22 |
--------------------------------------------------------------------------------
/caffe/include/caffe/layers/cudnn_lcn_layer.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_CUDNN_LCN_LAYER_HPP_
2 | #define CAFFE_CUDNN_LCN_LAYER_HPP_
3 |
4 | #include
5 |
6 | #include "caffe/blob.hpp"
7 | #include "caffe/layer.hpp"
8 | #include "caffe/proto/caffe.pb.h"
9 |
10 | #include "caffe/layers/lrn_layer.hpp"
11 | #include "caffe/layers/power_layer.hpp"
12 |
13 | namespace caffe {
14 |
15 | #ifdef USE_CUDNN
16 | template
17 | class CuDNNLCNLayer : public LRNLayer {
18 | public:
19 | explicit CuDNNLCNLayer(const LayerParameter& param)
20 | : LRNLayer(param), handles_setup_(false), tempDataSize(0),
21 | tempData1(NULL), tempData2(NULL) {}
22 | virtual void LayerSetUp(const vector*>& bottom,
23 | const vector*>& top);
24 | virtual void Reshape(const vector*>& bottom,
25 | const vector*>& top);
26 | virtual ~CuDNNLCNLayer();
27 |
28 | protected:
29 | virtual void Forward_gpu(const vector*>& bottom,
30 | const vector*>& top);
31 | virtual void Backward_gpu(const vector*>& top,
32 | const vector& propagate_down, const vector*>& bottom);
33 |
34 | bool handles_setup_;
35 | cudnnHandle_t handle_;
36 | cudnnLRNDescriptor_t norm_desc_;
37 | cudnnTensorDescriptor_t bottom_desc_, top_desc_;
38 |
39 | int size_, pre_pad_;
40 | Dtype alpha_, beta_, k_;
41 |
42 | size_t tempDataSize;
43 | void *tempData1, *tempData2;
44 | };
45 | #endif
46 |
47 | } // namespace caffe
48 |
49 | #endif // CAFFE_CUDNN_LCN_LAYER_HPP_
50 |
--------------------------------------------------------------------------------
/caffe/include/caffe/layers/cudnn_lrn_layer.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_CUDNN_LRN_LAYER_HPP_
2 | #define CAFFE_CUDNN_LRN_LAYER_HPP_
3 |
4 | #include
5 |
6 | #include "caffe/blob.hpp"
7 | #include "caffe/layer.hpp"
8 | #include "caffe/proto/caffe.pb.h"
9 |
10 | #include "caffe/layers/lrn_layer.hpp"
11 |
12 | namespace caffe {
13 |
14 | #ifdef USE_CUDNN
15 | template
16 | class CuDNNLRNLayer : public LRNLayer {
17 | public:
18 | explicit CuDNNLRNLayer(const LayerParameter& param)
19 | : LRNLayer(param), handles_setup_(false) {}
20 | virtual void LayerSetUp(const vector*>& bottom,
21 | const vector*>& top);
22 | virtual void Reshape(const vector*>& bottom,
23 | const vector*>& top);
24 | virtual ~CuDNNLRNLayer();
25 |
26 | protected:
27 | virtual void Forward_gpu(const vector*>& bottom,
28 | const vector*>& top);
29 | virtual void Backward_gpu(const vector*>& top,
30 | const vector& propagate_down, const vector*>& bottom);
31 |
32 | bool handles_setup_;
33 | cudnnHandle_t handle_;
34 | cudnnLRNDescriptor_t norm_desc_;
35 | cudnnTensorDescriptor_t bottom_desc_, top_desc_;
36 |
37 | int size_;
38 | Dtype alpha_, beta_, k_;
39 | };
40 | #endif
41 |
42 | } // namespace caffe
43 |
44 | #endif // CAFFE_CUDNN_LRN_LAYER_HPP_
45 |
--------------------------------------------------------------------------------
/caffe/include/caffe/layers/cudnn_relu_layer.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_CUDNN_RELU_LAYER_HPP_
2 | #define CAFFE_CUDNN_RELU_LAYER_HPP_
3 |
4 | #include
5 |
6 | #include "caffe/blob.hpp"
7 | #include "caffe/layer.hpp"
8 | #include "caffe/proto/caffe.pb.h"
9 |
10 | #include "caffe/layers/neuron_layer.hpp"
11 | #include "caffe/layers/relu_layer.hpp"
12 |
13 | namespace caffe {
14 |
15 | #ifdef USE_CUDNN
16 | /**
17 | * @brief CuDNN acceleration of ReLULayer.
18 | */
19 | template
20 | class CuDNNReLULayer : public ReLULayer {
21 | public:
22 | explicit CuDNNReLULayer(const LayerParameter& param)
23 | : ReLULayer(param), handles_setup_(false) {}
24 | virtual void LayerSetUp(const vector*>& bottom,
25 | const vector*>& top);
26 | virtual void Reshape(const vector*>& bottom,
27 | const vector*>& top);
28 | virtual ~CuDNNReLULayer();
29 |
30 | protected:
31 | virtual void Forward_gpu(const vector*>& bottom,
32 | const vector*>& top);
33 | virtual void Backward_gpu(const vector*>& top,
34 | const vector& propagate_down, const vector*>& bottom);
35 |
36 | bool handles_setup_;
37 | cudnnHandle_t handle_;
38 | cudnnTensorDescriptor_t bottom_desc_;
39 | cudnnTensorDescriptor_t top_desc_;
40 | cudnnActivationDescriptor_t activ_desc_;
41 | };
42 | #endif
43 |
44 | } // namespace caffe
45 |
46 | #endif // CAFFE_CUDNN_RELU_LAYER_HPP_
47 |
--------------------------------------------------------------------------------
/caffe/include/caffe/layers/cudnn_sigmoid_layer.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_CUDNN_SIGMOID_LAYER_HPP_
2 | #define CAFFE_CUDNN_SIGMOID_LAYER_HPP_
3 |
4 | #include
5 |
6 | #include "caffe/blob.hpp"
7 | #include "caffe/layer.hpp"
8 | #include "caffe/proto/caffe.pb.h"
9 |
10 | #include "caffe/layers/neuron_layer.hpp"
11 | #include "caffe/layers/sigmoid_layer.hpp"
12 |
13 | namespace caffe {
14 |
15 | #ifdef USE_CUDNN
16 | /**
17 | * @brief CuDNN acceleration of SigmoidLayer.
18 | */
19 | template
20 | class CuDNNSigmoidLayer : public SigmoidLayer {
21 | public:
22 | explicit CuDNNSigmoidLayer(const LayerParameter& param)
23 | : SigmoidLayer(param), handles_setup_(false) {}
24 | virtual void LayerSetUp(const vector*>& bottom,
25 | const vector*>& top);
26 | virtual void Reshape(const vector*>& bottom,
27 | const vector*>& top);
28 | virtual ~CuDNNSigmoidLayer();
29 |
30 | protected:
31 | virtual void Forward_gpu(const vector*>& bottom,
32 | const vector*>& top);
33 | virtual void Backward_gpu(const vector*>& top,
34 | const vector& propagate_down, const vector*>& bottom);
35 |
36 | bool handles_setup_;
37 | cudnnHandle_t handle_;
38 | cudnnTensorDescriptor_t bottom_desc_;
39 | cudnnTensorDescriptor_t top_desc_;
40 | cudnnActivationDescriptor_t activ_desc_;
41 | };
42 | #endif
43 |
44 | } // namespace caffe
45 |
46 | #endif // CAFFE_CUDNN_SIGMOID_LAYER_HPP_
47 |
--------------------------------------------------------------------------------
/caffe/include/caffe/layers/cudnn_softmax_layer.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_CUDNN_SOFTMAX_LAYER_HPP_
2 | #define CAFFE_CUDNN_SOFTMAX_LAYER_HPP_
3 |
4 | #include
5 |
6 | #include "caffe/blob.hpp"
7 | #include "caffe/layer.hpp"
8 | #include "caffe/proto/caffe.pb.h"
9 |
10 | #include "caffe/layers/softmax_layer.hpp"
11 |
12 | namespace caffe {
13 |
14 | #ifdef USE_CUDNN
15 | /**
16 | * @brief cuDNN implementation of SoftmaxLayer.
17 | * Fallback to SoftmaxLayer for CPU mode.
18 | */
19 | template
20 | class CuDNNSoftmaxLayer : public SoftmaxLayer {
21 | public:
22 | explicit CuDNNSoftmaxLayer(const LayerParameter& param)
23 | : SoftmaxLayer(param), handles_setup_(false) {}
24 | virtual void LayerSetUp(const vector*>& bottom,
25 | const vector*>& top);
26 | virtual void Reshape(const vector*>& bottom,
27 | const vector*>& top);
28 | virtual ~CuDNNSoftmaxLayer();
29 |
30 | protected:
31 | virtual void Forward_gpu(const vector*>& bottom,
32 | const vector*>& top);
33 | virtual void Backward_gpu(const vector*>& top,
34 | const vector& propagate_down, const vector*>& bottom);
35 |
36 | bool handles_setup_;
37 | cudnnHandle_t handle_;
38 | cudnnTensorDescriptor_t bottom_desc_;
39 | cudnnTensorDescriptor_t top_desc_;
40 | };
41 | #endif
42 |
43 | } // namespace caffe
44 |
45 | #endif // CAFFE_CUDNN_SOFTMAX_LAYER_HPP_
46 |
--------------------------------------------------------------------------------
/caffe/include/caffe/layers/cudnn_tanh_layer.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_CUDNN_TANH_LAYER_HPP_
2 | #define CAFFE_CUDNN_TANH_LAYER_HPP_
3 |
4 | #include
5 |
6 | #include "caffe/blob.hpp"
7 | #include "caffe/layer.hpp"
8 | #include "caffe/proto/caffe.pb.h"
9 |
10 | #include "caffe/layers/neuron_layer.hpp"
11 | #include "caffe/layers/tanh_layer.hpp"
12 |
13 | namespace caffe {
14 |
15 | #ifdef USE_CUDNN
16 | /**
17 | * @brief CuDNN acceleration of TanHLayer.
18 | */
19 | template
20 | class CuDNNTanHLayer : public TanHLayer {
21 | public:
22 | explicit CuDNNTanHLayer(const LayerParameter& param)
23 | : TanHLayer(param), handles_setup_(false) {}
24 | virtual void LayerSetUp(const vector*>& bottom,
25 | const vector*>& top);
26 | virtual void Reshape(const vector*>& bottom,
27 | const vector*>& top);
28 | virtual ~CuDNNTanHLayer();
29 |
30 | protected:
31 | virtual void Forward_gpu(const vector*>& bottom,
32 | const vector*>& top);
33 | virtual void Backward_gpu(const vector*>& top,
34 | const vector& propagate_down, const vector*>& bottom);
35 |
36 | bool handles_setup_;
37 | cudnnHandle_t handle_;
38 | cudnnTensorDescriptor_t bottom_desc_;
39 | cudnnTensorDescriptor_t top_desc_;
40 | cudnnActivationDescriptor_t activ_desc_;
41 | };
42 | #endif
43 |
44 | } // namespace caffe
45 |
46 | #endif // CAFFE_CUDNN_TANH_LAYER_HPP_
47 |
--------------------------------------------------------------------------------
/caffe/include/caffe/layers/data_layer.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_DATA_LAYER_HPP_
2 | #define CAFFE_DATA_LAYER_HPP_
3 |
4 | #include
5 |
6 | #include "caffe/blob.hpp"
7 | #include "caffe/data_transformer.hpp"
8 | #include "caffe/internal_thread.hpp"
9 | #include "caffe/layer.hpp"
10 | #include "caffe/layers/base_data_layer.hpp"
11 | #include "caffe/proto/caffe.pb.h"
12 | #include "caffe/util/db.hpp"
13 |
14 | namespace caffe {
15 |
16 | template
17 | class DataLayer : public BasePrefetchingDataLayer {
18 | public:
19 | explicit DataLayer(const LayerParameter& param);
20 | virtual ~DataLayer();
21 | virtual void DataLayerSetUp(const vector*>& bottom,
22 | const vector*>& top);
23 | virtual inline const char* type() const { return "Data"; }
24 | virtual inline int ExactNumBottomBlobs() const { return 0; }
25 | virtual inline int MinTopBlobs() const { return 1; }
26 | virtual inline int MaxTopBlobs() const { return 2; }
27 |
28 | protected:
29 | void Next();
30 | bool Skip();
31 | virtual void load_batch(Batch* batch);
32 |
33 | shared_ptr db_;
34 | shared_ptr cursor_;
35 | uint64_t offset_;
36 | };
37 |
38 | } // namespace caffe
39 |
40 | #endif // CAFFE_DATA_LAYER_HPP_
41 |
--------------------------------------------------------------------------------
/caffe/include/caffe/layers/image_data_layer.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_IMAGE_DATA_LAYER_HPP_
2 | #define CAFFE_IMAGE_DATA_LAYER_HPP_
3 |
4 | #include
5 | #include
6 | #include
7 |
8 | #include "caffe/blob.hpp"
9 | #include "caffe/data_transformer.hpp"
10 | #include "caffe/internal_thread.hpp"
11 | #include "caffe/layer.hpp"
12 | #include "caffe/layers/base_data_layer.hpp"
13 | #include "caffe/proto/caffe.pb.h"
14 |
15 | namespace caffe {
16 |
17 | /**
18 | * @brief Provides data to the Net from image files.
19 | *
20 | * TODO(dox): thorough documentation for Forward and proto params.
21 | */
22 | template
23 | class ImageDataLayer : public BasePrefetchingDataLayer {
24 | public:
25 | explicit ImageDataLayer(const LayerParameter& param)
26 | : BasePrefetchingDataLayer(param) {}
27 | virtual ~ImageDataLayer();
28 | virtual void DataLayerSetUp(const vector*>& bottom,
29 | const vector*>& top);
30 |
31 | virtual inline const char* type() const { return "ImageData"; }
32 | virtual inline int ExactNumBottomBlobs() const { return 0; }
33 | virtual inline int ExactNumTopBlobs() const { return 2; }
34 |
35 | protected:
36 | shared_ptr prefetch_rng_;
37 | virtual void ShuffleImages();
38 | virtual void load_batch(Batch* batch);
39 |
40 | vector > lines_;
41 | int lines_id_;
42 | };
43 |
44 |
45 | } // namespace caffe
46 |
47 | #endif // CAFFE_IMAGE_DATA_LAYER_HPP_
48 |
--------------------------------------------------------------------------------
/caffe/include/caffe/layers/input_layer.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_INPUT_LAYER_HPP_
2 | #define CAFFE_INPUT_LAYER_HPP_
3 |
4 | #include
5 |
6 | #include "caffe/blob.hpp"
7 | #include "caffe/layer.hpp"
8 | #include "caffe/proto/caffe.pb.h"
9 |
10 | namespace caffe {
11 |
12 | /**
13 | * @brief Provides data to the Net by assigning tops directly.
14 | *
15 | * This data layer is a container that merely holds the data assigned to it;
16 | * forward, backward, and reshape are all no-ops.
17 | */
18 | template
19 | class InputLayer : public Layer {
20 | public:
21 | explicit InputLayer(const LayerParameter& param)
22 | : Layer(param) {}
23 | virtual void LayerSetUp(const vector*>& bottom,
24 | const vector*>& top);
25 | // Data layers have no bottoms, so reshaping is trivial.
26 | virtual void Reshape(const vector*>& bottom,
27 | const vector*>& top) {}
28 |
29 | virtual inline const char* type() const { return "Input"; }
30 | virtual inline int ExactNumBottomBlobs() const { return 0; }
31 | virtual inline int MinTopBlobs() const { return 1; }
32 |
33 | protected:
34 | virtual void Forward_cpu(const vector*>& bottom,
35 | const vector*>& top) {}
36 | virtual void Backward_cpu(const vector*>& top,
37 | const vector& propagate_down, const vector*>& bottom) {}
38 | };
39 |
40 | } // namespace caffe
41 |
42 | #endif // CAFFE_INPUT_LAYER_HPP_
43 |
--------------------------------------------------------------------------------
/caffe/include/caffe/layers/neuron_layer.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_NEURON_LAYER_HPP_
2 | #define CAFFE_NEURON_LAYER_HPP_
3 |
4 | #include
5 |
6 | #include "caffe/blob.hpp"
7 | #include "caffe/layer.hpp"
8 | #include "caffe/proto/caffe.pb.h"
9 |
10 | namespace caffe {
11 |
12 | /**
13 | * @brief An interface for layers that take one blob as input (@f$ x @f$)
14 | * and produce one equally-sized blob as output (@f$ y @f$), where
15 | * each element of the output depends only on the corresponding input
16 | * element.
17 | */
18 | template
19 | class NeuronLayer : public Layer {
20 | public:
21 | explicit NeuronLayer(const LayerParameter& param)
22 | : Layer(param) {}
23 | virtual void Reshape(const vector*>& bottom,
24 | const vector*>& top);
25 |
26 | virtual inline int ExactNumBottomBlobs() const { return 1; }
27 | virtual inline int ExactNumTopBlobs() const { return 1; }
28 | };
29 |
30 | } // namespace caffe
31 |
32 | #endif // CAFFE_NEURON_LAYER_HPP_
33 |
--------------------------------------------------------------------------------
/caffe/include/caffe/layers/tile_layer.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_TILE_LAYER_HPP_
2 | #define CAFFE_TILE_LAYER_HPP_
3 |
4 | #include
5 |
6 | #include "caffe/blob.hpp"
7 | #include "caffe/layer.hpp"
8 | #include "caffe/proto/caffe.pb.h"
9 |
10 | namespace caffe {
11 |
12 | /**
13 | * @brief Copy a Blob along specified dimensions.
14 | */
15 | template
16 | class TileLayer : public Layer {
17 | public:
18 | explicit TileLayer(const LayerParameter& param)
19 | : Layer(param) {}
20 | virtual void Reshape(const vector*>& bottom,
21 | const vector*>& top);
22 |
23 | virtual inline const char* type() const { return "Tile"; }
24 | virtual inline int ExactNumBottomBlobs() const { return 1; }
25 | virtual inline int ExactNumTopBlobs() const { return 1; }
26 |
27 | protected:
28 | virtual void Forward_cpu(const vector*>& bottom,
29 | const vector*>& top);
30 | virtual void Forward_gpu(const vector*>& bottom,
31 | const vector*>& top);
32 |
33 | virtual void Backward_cpu(const vector*>& top,
34 | const vector& propagate_down, const vector*>& bottom);
35 | virtual void Backward_gpu(const vector*>& top,
36 | const vector& propagate_down, const vector*>& bottom);
37 |
38 | unsigned int axis_, tiles_, outer_dim_, inner_dim_;
39 | };
40 |
41 | } // namespace caffe
42 |
43 | #endif // CAFFE_TILE_LAYER_HPP_
44 |
--------------------------------------------------------------------------------
/caffe/include/caffe/util/benchmark.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_UTIL_BENCHMARK_H_
2 | #define CAFFE_UTIL_BENCHMARK_H_
3 |
4 | #include
5 |
6 | #include "caffe/util/device_alternate.hpp"
7 |
8 | namespace caffe {
9 |
10 | class Timer {
11 | public:
12 | Timer();
13 | virtual ~Timer();
14 | virtual void Start();
15 | virtual void Stop();
16 | virtual float MilliSeconds();
17 | virtual float MicroSeconds();
18 | virtual float Seconds();
19 |
20 | inline bool initted() { return initted_; }
21 | inline bool running() { return running_; }
22 | inline bool has_run_at_least_once() { return has_run_at_least_once_; }
23 |
24 | protected:
25 | void Init();
26 |
27 | bool initted_;
28 | bool running_;
29 | bool has_run_at_least_once_;
30 | #ifndef CPU_ONLY
31 | cudaEvent_t start_gpu_;
32 | cudaEvent_t stop_gpu_;
33 | #endif
34 | boost::posix_time::ptime start_cpu_;
35 | boost::posix_time::ptime stop_cpu_;
36 | float elapsed_milliseconds_;
37 | float elapsed_microseconds_;
38 | };
39 |
40 | class CPUTimer : public Timer {
41 | public:
42 | explicit CPUTimer();
43 | virtual ~CPUTimer() {}
44 | virtual void Start();
45 | virtual void Stop();
46 | virtual float MilliSeconds();
47 | virtual float MicroSeconds();
48 | };
49 |
50 | } // namespace caffe
51 |
52 | #endif // CAFFE_UTIL_BENCHMARK_H_
53 |
--------------------------------------------------------------------------------
/caffe/include/caffe/util/blocking_queue.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_UTIL_BLOCKING_QUEUE_HPP_
2 | #define CAFFE_UTIL_BLOCKING_QUEUE_HPP_
3 |
4 | #include
5 | #include
6 |
7 | namespace caffe {
8 |
9 | template
10 | class BlockingQueue {
11 | public:
12 | explicit BlockingQueue();
13 |
14 | void push(const T& t);
15 |
16 | bool try_pop(T* t);
17 |
18 | // This logs a message if the threads needs to be blocked
19 | // useful for detecting e.g. when data feeding is too slow
20 | T pop(const string& log_on_wait = "");
21 |
22 | bool try_peek(T* t);
23 |
24 | // Return element without removing it
25 | T peek();
26 |
27 | size_t size() const;
28 |
29 | protected:
30 | /**
31 | Move synchronization fields out instead of including boost/thread.hpp
32 | to avoid a boost/NVCC issues (#1009, #1010) on OSX. Also fails on
33 | Linux CUDA 7.0.18.
34 | */
35 | class sync;
36 |
37 | std::queue queue_;
38 | shared_ptr sync_;
39 |
40 | DISABLE_COPY_AND_ASSIGN(BlockingQueue);
41 | };
42 |
43 | } // namespace caffe
44 |
45 | #endif
46 |
--------------------------------------------------------------------------------
/caffe/include/caffe/util/db.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_UTIL_DB_HPP
2 | #define CAFFE_UTIL_DB_HPP
3 |
4 | #include
5 |
6 | #include "caffe/common.hpp"
7 | #include "caffe/proto/caffe.pb.h"
8 |
9 | namespace caffe { namespace db {
10 |
11 | enum Mode { READ, WRITE, NEW };
12 |
13 | class Cursor {
14 | public:
15 | Cursor() { }
16 | virtual ~Cursor() { }
17 | virtual void SeekToFirst() = 0;
18 | virtual void Next() = 0;
19 | virtual string key() = 0;
20 | virtual string value() = 0;
21 | virtual bool valid() = 0;
22 |
23 | DISABLE_COPY_AND_ASSIGN(Cursor);
24 | };
25 |
26 | class Transaction {
27 | public:
28 | Transaction() { }
29 | virtual ~Transaction() { }
30 | virtual void Put(const string& key, const string& value) = 0;
31 | virtual void Commit() = 0;
32 |
33 | DISABLE_COPY_AND_ASSIGN(Transaction);
34 | };
35 |
36 | class DB {
37 | public:
38 | DB() { }
39 | virtual ~DB() { }
40 | virtual void Open(const string& source, Mode mode) = 0;
41 | virtual void Close() = 0;
42 | virtual Cursor* NewCursor() = 0;
43 | virtual Transaction* NewTransaction() = 0;
44 |
45 | DISABLE_COPY_AND_ASSIGN(DB);
46 | };
47 |
48 | DB* GetDB(DataParameter::DB backend);
49 | DB* GetDB(const string& backend);
50 |
51 | } // namespace db
52 | } // namespace caffe
53 |
54 | #endif // CAFFE_UTIL_DB_HPP
55 |
--------------------------------------------------------------------------------
/caffe/include/caffe/util/format.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_UTIL_FORMAT_H_
2 | #define CAFFE_UTIL_FORMAT_H_
3 |
4 | #include // NOLINT(readability/streams)
5 | #include // NOLINT(readability/streams)
6 | #include
7 |
8 | namespace caffe {
9 |
10 | inline std::string format_int(int n, int numberOfLeadingZeros = 0 ) {
11 | std::ostringstream s;
12 | s << std::setw(numberOfLeadingZeros) << std::setfill('0') << n;
13 | return s.str();
14 | }
15 |
16 | }
17 |
18 | #endif // CAFFE_UTIL_FORMAT_H_
19 |
--------------------------------------------------------------------------------
/caffe/include/caffe/util/gpu_util.cuh:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_UTIL_GPU_UTIL_H_
2 | #define CAFFE_UTIL_GPU_UTIL_H_
3 |
4 | namespace caffe {
5 |
6 | template
7 | inline __device__ Dtype caffe_gpu_atomic_add(const Dtype val, Dtype* address);
8 |
9 | template <>
10 | inline __device__
11 | float caffe_gpu_atomic_add(const float val, float* address) {
12 | return atomicAdd(address, val);
13 | }
14 |
15 | // double atomicAdd implementation taken from:
16 | // http://docs.nvidia.com/cuda/cuda-c-programming-guide/#axzz3PVCpVsEG
17 | template <>
18 | inline __device__
19 | double caffe_gpu_atomic_add(const double val, double* address) {
20 | unsigned long long int* address_as_ull = // NOLINT(runtime/int)
21 | // NOLINT_NEXT_LINE(runtime/int)
22 | reinterpret_cast(address);
23 | unsigned long long int old = *address_as_ull; // NOLINT(runtime/int)
24 | unsigned long long int assumed; // NOLINT(runtime/int)
25 | do {
26 | assumed = old;
27 | old = atomicCAS(address_as_ull, assumed,
28 | __double_as_longlong(val + __longlong_as_double(assumed)));
29 | } while (assumed != old);
30 | return __longlong_as_double(old);
31 | }
32 |
33 | } // namespace caffe
34 |
35 | #endif // CAFFE_UTIL_GPU_UTIL_H_
36 |
--------------------------------------------------------------------------------
/caffe/include/caffe/util/hdf5.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_UTIL_HDF5_H_
2 | #define CAFFE_UTIL_HDF5_H_
3 |
4 | #include
5 |
6 | #include "hdf5.h"
7 | #include "hdf5_hl.h"
8 |
9 | #include "caffe/blob.hpp"
10 |
11 | namespace caffe {
12 |
13 | template
14 | void hdf5_load_nd_dataset_helper(
15 | hid_t file_id, const char* dataset_name_, int min_dim, int max_dim,
16 | Blob* blob, bool reshape);
17 |
18 | template
19 | void hdf5_load_nd_dataset(
20 | hid_t file_id, const char* dataset_name_, int min_dim, int max_dim,
21 | Blob* blob, bool reshape = false);
22 |
23 | template
24 | void hdf5_save_nd_dataset(
25 | const hid_t file_id, const string& dataset_name, const Blob& blob,
26 | bool write_diff = false);
27 |
28 | int hdf5_load_int(hid_t loc_id, const string& dataset_name);
29 | void hdf5_save_int(hid_t loc_id, const string& dataset_name, int i);
30 | string hdf5_load_string(hid_t loc_id, const string& dataset_name);
31 | void hdf5_save_string(hid_t loc_id, const string& dataset_name,
32 | const string& s);
33 |
34 | int hdf5_get_num_links(hid_t loc_id);
35 | string hdf5_get_name_by_idx(hid_t loc_id, int idx);
36 |
37 | } // namespace caffe
38 |
39 | #endif // CAFFE_UTIL_HDF5_H_
40 |
--------------------------------------------------------------------------------
/caffe/include/caffe/util/insert_splits.hpp:
--------------------------------------------------------------------------------
1 | #ifndef _CAFFE_UTIL_INSERT_SPLITS_HPP_
2 | #define _CAFFE_UTIL_INSERT_SPLITS_HPP_
3 |
4 | #include
5 |
6 | #include "caffe/proto/caffe.pb.h"
7 |
8 | namespace caffe {
9 |
10 | // Copy NetParameters with SplitLayers added to replace any shared bottom
11 | // blobs with unique bottom blobs provided by the SplitLayer.
12 | void InsertSplits(const NetParameter& param, NetParameter* param_split);
13 |
14 | void ConfigureSplitLayer(const string& layer_name, const string& blob_name,
15 | const int blob_idx, const int split_count, const float loss_weight,
16 | LayerParameter* split_layer_param);
17 |
18 | string SplitLayerName(const string& layer_name, const string& blob_name,
19 | const int blob_idx);
20 |
21 | string SplitBlobName(const string& layer_name, const string& blob_name,
22 | const int blob_idx, const int split_idx);
23 |
24 | } // namespace caffe
25 |
26 | #endif // CAFFE_UTIL_INSERT_SPLITS_HPP_
27 |
--------------------------------------------------------------------------------
/caffe/include/caffe/util/nccl.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_UTIL_NCCL_H_
2 | #define CAFFE_UTIL_NCCL_H_
3 | #ifdef USE_NCCL
4 |
5 | #include
6 |
7 | #include "caffe/common.hpp"
8 |
9 | #define NCCL_CHECK(condition) \
10 | { \
11 | ncclResult_t result = condition; \
12 | CHECK_EQ(result, ncclSuccess) << " " \
13 | << ncclGetErrorString(result); \
14 | }
15 |
16 | namespace caffe {
17 |
18 | namespace nccl {
19 |
20 | template class dataType;
21 |
22 | template<> class dataType {
23 | public:
24 | static const ncclDataType_t type = ncclFloat;
25 | };
26 | template<> class dataType {
27 | public:
28 | static const ncclDataType_t type = ncclDouble;
29 | };
30 |
31 | } // namespace nccl
32 |
33 | } // namespace caffe
34 |
35 | #endif // end USE_NCCL
36 |
37 | #endif // CAFFE_UTIL_NCCL_H_
38 |
--------------------------------------------------------------------------------
/caffe/include/caffe/util/rng.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CAFFE_RNG_CPP_HPP_
2 | #define CAFFE_RNG_CPP_HPP_
3 |
4 | #include
5 | #include
6 |
7 | #include "boost/random/mersenne_twister.hpp"
8 | #include "boost/random/uniform_int.hpp"
9 |
10 | #include "caffe/common.hpp"
11 |
12 | namespace caffe {
13 |
14 | typedef boost::mt19937 rng_t;
15 |
16 | inline rng_t* caffe_rng() {
17 | return static_cast(Caffe::rng_stream().generator());
18 | }
19 |
20 | // Fisher–Yates algorithm
21 | template
22 | inline void shuffle(RandomAccessIterator begin, RandomAccessIterator end,
23 | RandomGenerator* gen) {
24 | typedef typename std::iterator_traits::difference_type
25 | difference_type;
26 | typedef typename boost::uniform_int dist_type;
27 |
28 | difference_type length = std::distance(begin, end);
29 | if (length <= 0) return;
30 |
31 | for (difference_type i = length - 1; i > 0; --i) {
32 | dist_type dist(0, i);
33 | std::iter_swap(begin + i, begin + dist(*gen));
34 | }
35 | }
36 |
37 | template
38 | inline void shuffle(RandomAccessIterator begin, RandomAccessIterator end) {
39 | shuffle(begin, end, caffe_rng());
40 | }
41 | } // namespace caffe
42 |
43 | #endif // CAFFE_RNG_HPP_
44 |
--------------------------------------------------------------------------------
/caffe/include/caffe/util/signal_handler.h:
--------------------------------------------------------------------------------
1 | #ifndef INCLUDE_CAFFE_UTIL_SIGNAL_HANDLER_H_
2 | #define INCLUDE_CAFFE_UTIL_SIGNAL_HANDLER_H_
3 |
4 | #include "caffe/proto/caffe.pb.h"
5 | #include "caffe/solver.hpp"
6 |
7 | namespace caffe {
8 |
9 | class SignalHandler {
10 | public:
11 | // Contructor. Specify what action to take when a signal is received.
12 | SignalHandler(SolverAction::Enum SIGINT_action,
13 | SolverAction::Enum SIGHUP_action);
14 | ~SignalHandler();
15 | ActionCallback GetActionFunction();
16 | private:
17 | SolverAction::Enum CheckForSignals() const;
18 | SolverAction::Enum SIGINT_action_;
19 | SolverAction::Enum SIGHUP_action_;
20 | };
21 |
22 | } // namespace caffe
23 |
24 | #endif // INCLUDE_CAFFE_UTIL_SIGNAL_HANDLER_H_
25 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/+test/test_io.m:
--------------------------------------------------------------------------------
1 | classdef test_io < matlab.unittest.TestCase
2 | methods (Test)
3 | function test_read_write_mean(self)
4 | % randomly generate mean data
5 | width = 200;
6 | height = 300;
7 | channels = 3;
8 | mean_data_write = 255 * rand(width, height, channels, 'single');
9 | % write mean data to binary proto
10 | mean_proto_file = tempname();
11 | caffe.io.write_mean(mean_data_write, mean_proto_file);
12 | % read mean data from saved binary proto and test whether they are equal
13 | mean_data_read = caffe.io.read_mean(mean_proto_file);
14 | self.verifyEqual(mean_data_write, mean_data_read)
15 | delete(mean_proto_file);
16 | end
17 | end
18 | end
19 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/Layer.m:
--------------------------------------------------------------------------------
1 | classdef Layer < handle
2 | % Wrapper class of caffe::Layer in matlab
3 |
4 | properties (Access = private)
5 | hLayer_self
6 | attributes
7 | % attributes fields:
8 | % hBlob_blobs
9 | end
10 | properties (SetAccess = private)
11 | params
12 | end
13 |
14 | methods
15 | function self = Layer(hLayer_layer)
16 | CHECK(is_valid_handle(hLayer_layer), 'invalid Layer handle');
17 |
18 | % setup self handle and attributes
19 | self.hLayer_self = hLayer_layer;
20 | self.attributes = caffe_('layer_get_attr', self.hLayer_self);
21 |
22 | % setup weights
23 | self.params = caffe.Blob.empty();
24 | for n = 1:length(self.attributes.hBlob_blobs)
25 | self.params(n) = caffe.Blob(self.attributes.hBlob_blobs(n));
26 | end
27 | end
28 | function layer_type = type(self)
29 | layer_type = caffe_('layer_get_type', self.hLayer_self);
30 | end
31 | end
32 | end
33 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/get_net.m:
--------------------------------------------------------------------------------
1 | function net = get_net(varargin)
2 | % net = get_net(model_file, phase_name) or
3 | % net = get_net(model_file, weights_file, phase_name)
4 | % Construct a net from model_file, and load weights from weights_file
5 | % phase_name can only be 'train' or 'test'
6 |
7 | CHECK(nargin == 2 || nargin == 3, ['usage: ' ...
8 | 'net = get_net(model_file, phase_name) or ' ...
9 | 'net = get_net(model_file, weights_file, phase_name)']);
10 | if nargin == 3
11 | model_file = varargin{1};
12 | weights_file = varargin{2};
13 | phase_name = varargin{3};
14 | elseif nargin == 2
15 | model_file = varargin{1};
16 | phase_name = varargin{2};
17 | end
18 |
19 | CHECK(ischar(model_file), 'model_file must be a string');
20 | CHECK(ischar(phase_name), 'phase_name must be a string');
21 | CHECK_FILE_EXIST(model_file);
22 | CHECK(strcmp(phase_name, 'train') || strcmp(phase_name, 'test'), ...
23 | sprintf('phase_name can only be %strain%s or %stest%s', ...
24 | char(39), char(39), char(39), char(39)));
25 |
26 | % construct caffe net from model_file
27 | hNet = caffe_('get_net', model_file, phase_name);
28 | net = caffe.Net(hNet);
29 |
30 | % load weights from weights_file
31 | if nargin == 3
32 | CHECK(ischar(weights_file), 'weights_file must be a string');
33 | CHECK_FILE_EXIST(weights_file);
34 | net.copy_from(weights_file);
35 | end
36 |
37 | end
38 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/get_solver.m:
--------------------------------------------------------------------------------
1 | function solver = get_solver(solver_file)
2 | % solver = get_solver(solver_file)
3 | % Construct a Solver object from solver_file
4 |
5 | CHECK(ischar(solver_file), 'solver_file must be a string');
6 | CHECK_FILE_EXIST(solver_file);
7 | pSolver = caffe_('get_solver', solver_file);
8 | solver = caffe.Solver(pSolver);
9 |
10 | end
11 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/imagenet/ilsvrc_2012_mean.mat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/matlab/+caffe/imagenet/ilsvrc_2012_mean.mat
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/private/CHECK.m:
--------------------------------------------------------------------------------
1 | function CHECK(expr, error_msg)
2 |
3 | if ~expr
4 | error(error_msg);
5 | end
6 |
7 | end
8 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/private/CHECK_FILE_EXIST.m:
--------------------------------------------------------------------------------
1 | function CHECK_FILE_EXIST(filename)
2 |
3 | if exist(filename, 'file') == 0
4 | error('%s does not exist', filename);
5 | end
6 |
7 | end
8 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/private/is_valid_handle.m:
--------------------------------------------------------------------------------
1 | function valid = is_valid_handle(hObj)
2 | % valid = is_valid_handle(hObj) or is_valid_handle('get_new_init_key')
3 | % Check if a handle is valid (has the right data type and init_key matches)
4 | % Use is_valid_handle('get_new_init_key') to get new init_key from C++;
5 |
6 | % a handle is a struct array with the following fields
7 | % (uint64) ptr : the pointer to the C++ object
8 | % (double) init_key : caffe initialization key
9 |
10 | persistent init_key;
11 | if isempty(init_key)
12 | init_key = caffe_('get_init_key');
13 | end
14 |
15 | % is_valid_handle('get_new_init_key') to get new init_key from C++;
16 | if ischar(hObj) && strcmp(hObj, 'get_new_init_key')
17 | init_key = caffe_('get_init_key');
18 | return
19 | else
20 | % check whether data types are correct and init_key matches
21 | valid = isstruct(hObj) ...
22 | && isscalar(hObj.ptr) && isa(hObj.ptr, 'uint64') ...
23 | && isscalar(hObj.init_key) && isa(hObj.init_key, 'double') ...
24 | && hObj.init_key == init_key;
25 | end
26 |
27 | end
28 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/reset_all.m:
--------------------------------------------------------------------------------
1 | function reset_all()
2 | % reset_all()
3 | % clear all solvers and stand-alone nets and reset Caffe to initial status
4 |
5 | caffe_('reset');
6 | is_valid_handle('get_new_init_key');
7 |
8 | end
9 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/run_tests.m:
--------------------------------------------------------------------------------
1 | function results = run_tests()
2 | % results = run_tests()
3 | % run all tests in this caffe matlab wrapper package
4 |
5 | % use CPU for testing
6 | caffe.set_mode_cpu();
7 |
8 | % reset caffe before testing
9 | caffe.reset_all();
10 |
11 | % put all test cases here
12 | results = [...
13 | run(caffe.test.test_net) ...
14 | run(caffe.test.test_solver) ...
15 | run(caffe.test.test_io) ];
16 |
17 | % reset caffe after testing
18 | caffe.reset_all();
19 |
20 | end
21 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/set_device.m:
--------------------------------------------------------------------------------
1 | function set_device(device_id)
2 | % set_device(device_id)
3 | % set Caffe's GPU device ID
4 |
5 | CHECK(isscalar(device_id) && device_id >= 0, ...
6 | 'device_id must be non-negative integer');
7 | device_id = double(device_id);
8 |
9 | caffe_('set_device', device_id);
10 |
11 | end
12 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/set_mode_cpu.m:
--------------------------------------------------------------------------------
1 | function set_mode_cpu()
2 | % set_mode_cpu()
3 | % set Caffe to CPU mode
4 |
5 | caffe_('set_mode_cpu');
6 |
7 | end
8 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/set_mode_gpu.m:
--------------------------------------------------------------------------------
1 | function set_mode_gpu()
2 | % set_mode_gpu()
3 | % set Caffe to GPU mode
4 |
5 | caffe_('set_mode_gpu');
6 |
7 | end
8 |
--------------------------------------------------------------------------------
/caffe/matlab/+caffe/version.m:
--------------------------------------------------------------------------------
1 | function version_str = version()
2 | % version()
3 | % show Caffe's version.
4 |
5 | version_str = caffe_('version');
6 |
7 | end
8 |
--------------------------------------------------------------------------------
/caffe/matlab/hdf5creation/.gitignore:
--------------------------------------------------------------------------------
1 | *.h5
2 | list.txt
3 |
--------------------------------------------------------------------------------
/caffe/python/caffe/__init__.py:
--------------------------------------------------------------------------------
1 | from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer
2 | from ._caffe import init_log, log, set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed, solver_count, set_solver_count, solver_rank, set_solver_rank, set_multiprocess
3 | from ._caffe import __version__
4 | from .proto.caffe_pb2 import TRAIN, TEST
5 | from .classifier import Classifier
6 | from .detector import Detector
7 | from . import io
8 | from .net_spec import layers, params, NetSpec, to_proto
9 |
--------------------------------------------------------------------------------
/caffe/python/caffe/imagenet/ilsvrc_2012_mean.npy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tonghe90/textspotter/aa36bbc11229c76bf53b5479ff6453bca1fce11b/caffe/python/caffe/imagenet/ilsvrc_2012_mean.npy
--------------------------------------------------------------------------------
/caffe/python/caffe/test/test_draw.py:
--------------------------------------------------------------------------------
1 | import os
2 | import unittest
3 |
4 | from google.protobuf import text_format
5 |
6 | import caffe.draw
7 | from caffe.proto import caffe_pb2
8 |
9 | def getFilenames():
10 | """Yields files in the source tree which are Net prototxts."""
11 | result = []
12 |
13 | root_dir = os.path.abspath(os.path.join(
14 | os.path.dirname(__file__), '..', '..', '..'))
15 | assert os.path.exists(root_dir)
16 |
17 | for dirname in ('models', 'examples'):
18 | dirname = os.path.join(root_dir, dirname)
19 | assert os.path.exists(dirname)
20 | for cwd, _, filenames in os.walk(dirname):
21 | for filename in filenames:
22 | filename = os.path.join(cwd, filename)
23 | if filename.endswith('.prototxt') and 'solver' not in filename:
24 | yield os.path.join(dirname, filename)
25 |
26 |
27 | class TestDraw(unittest.TestCase):
28 | def test_draw_net(self):
29 | for filename in getFilenames():
30 | net = caffe_pb2.NetParameter()
31 | with open(filename) as infile:
32 | text_format.Merge(infile.read(), net)
33 | caffe.draw.draw_net(net, 'LR')
34 |
35 |
36 | if __name__ == "__main__":
37 | unittest.main()
38 |
--------------------------------------------------------------------------------
/caffe/python/caffe/test/test_layer_type_list.py:
--------------------------------------------------------------------------------
1 | import unittest
2 |
3 | import caffe
4 |
5 | class TestLayerTypeList(unittest.TestCase):
6 |
7 | def test_standard_types(self):
8 | #removing 'Data' from list
9 | for type_name in ['Data', 'Convolution', 'InnerProduct']:
10 | self.assertIn(type_name, caffe.layer_type_list(),
11 | '%s not in layer_type_list()' % type_name)
12 |
--------------------------------------------------------------------------------
/caffe/python/caffe/test/test_nccl.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import unittest
3 |
4 | import caffe
5 |
6 |
7 | class TestNCCL(unittest.TestCase):
8 |
9 | def test_newuid(self):
10 | """
11 | Test that NCCL uids are of the proper type
12 | according to python version
13 | """
14 | if caffe.has_nccl():
15 | uid = caffe.NCCL.new_uid()
16 | if sys.version_info.major >= 3:
17 | self.assertTrue(isinstance(uid, bytes))
18 | else:
19 | self.assertTrue(isinstance(uid, str))
20 |
--------------------------------------------------------------------------------
/caffe/python/caffe/test/test_proposal.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 | from test_gradient_for_python_layer import test_gradient_for_python_layer
3 |
4 | N = 4
5 | H = 4
6 | W = 4
7 | for i in range(10):
8 | # set the inputs
9 | input_names_and_values = [('score_4s_softmax', np.random.rand(N,2,H,W)), ('pre_bbox_orient', np.random.rand(N,5,H,W) + 1), ('gt_bbox', np.random.rand(N,1,5,9)), ('ignore_bbox', np.random.rand(N,1,6,9))]
10 | output_names = ['out1', 'out2', 'out3', 'out4']
11 | py_module = 'layers.proposal'
12 | py_layer = 'ProposalLayer'
13 | param_str = "'max_w': 128 \n'phase': 1 \n'threshold': 0.7 \n'bbox_scale': 1 \n'num_proposal': 16 \n'fg_iou': 0.7 \n'bg_iou': 0.3 \n'ignore_iou': 0.3 \n'out_height': 8 \n'nms_score': 0.15 \n'scale': 0.125"
14 | propagate_down = [False, True, False, False]
15 | bp_top = [False, False, True, False]
16 |
17 | # call the test
18 | test_gradient_for_python_layer(input_names_and_values, output_names, py_module, py_layer, param_str, propagate_down, bp_top)
19 |
20 | # you are done!
--------------------------------------------------------------------------------
/caffe/python/caffe/test/test_w_pooling.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 | from test_gradient_for_python_layer import test_gradient_for_python_layer
3 |
4 | N = 4
5 | C = 4
6 | H = 4
7 | W = 4
8 | for i in range(1):
9 | # set the inputs
10 | input_names_and_values = [('lstm_output', np.random.rand(N,C,H,W)), ('cont', -np.random.rand(W,N)*W)]
11 | output_names = ['out1']
12 | py_module = 'layers.w_pooling'
13 | py_layer = 'WPoolingLayer'
14 | param_str = "'pooling_method': ave"
15 | propagate_down = [True, False]
16 | bp_top = [True]
17 |
18 | # call the test
19 | test_gradient_for_python_layer(input_names_and_values, output_names, py_module, py_layer, param_str, propagate_down, bp_top)
20 |
21 | # you are done!
--------------------------------------------------------------------------------
/caffe/python/requirements.txt:
--------------------------------------------------------------------------------
1 | Cython>=0.19.2
2 | numpy>=1.7.1
3 | scipy>=0.13.2
4 | scikit-image>=0.9.3
5 | matplotlib>=1.3.1
6 | ipython>=3.0.0
7 | h5py>=2.2.0
8 | leveldb>=0.191
9 | networkx>=1.8.1
10 | nose>=1.3.0
11 | pandas>=0.12.0
12 | python-dateutil>=1.4,<2
13 | protobuf>=2.5.0
14 | python-gflags>=2.0
15 | pyyaml>=3.10
16 | Pillow>=2.3.0
17 | six>=1.1.0
--------------------------------------------------------------------------------
/caffe/scripts/build_docs.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Build documentation for display in web browser.
3 |
4 | PORT=${1:-4000}
5 |
6 | echo "usage: build_docs.sh [port]"
7 |
8 | # Find the docs dir, no matter where the script is called
9 | ROOT_DIR="$( cd "$(dirname "$0")"/.. ; pwd -P )"
10 | cd $ROOT_DIR
11 |
12 | # Gather docs.
13 | scripts/gather_examples.sh
14 |
15 | # Split caffe.proto for inclusion by layer catalogue.
16 | scripts/split_caffe_proto.py
17 |
18 | # Generate developer docs.
19 | make docs
20 |
21 | # Display docs using web server.
22 | cd docs
23 | jekyll serve -w -s . -d _site --port=$PORT
24 |
--------------------------------------------------------------------------------
/caffe/scripts/copy_notebook.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | """
3 | Takes as arguments:
4 | 1. the path to a JSON file (such as an IPython notebook).
5 | 2. the path to output file
6 |
7 | If 'metadata' dict in the JSON file contains 'include_in_docs': true,
8 | then copies the file to output file, appending the 'metadata' property
9 | as YAML front-matter, adding the field 'category' with value 'notebook'.
10 | """
11 | import os
12 | import sys
13 | import json
14 |
15 | filename = sys.argv[1]
16 | output_filename = sys.argv[2]
17 | content = json.load(open(filename))
18 |
19 | if 'include_in_docs' in content['metadata'] and content['metadata']['include_in_docs']:
20 | yaml_frontmatter = ['---']
21 | for key, val in content['metadata'].iteritems():
22 | if key == 'example_name':
23 | key = 'title'
24 | if val == '':
25 | val = os.path.basename(filename)
26 | yaml_frontmatter.append('{}: {}'.format(key, val))
27 | yaml_frontmatter += ['category: notebook']
28 | yaml_frontmatter += ['original_path: ' + filename]
29 |
30 | with open(output_filename, 'w') as fo:
31 | fo.write('\n'.join(yaml_frontmatter + ['---']) + '\n')
32 | fo.write(open(filename).read())
33 |
--------------------------------------------------------------------------------
/caffe/scripts/download_model_from_gist.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | GIST=$1
4 | DIRNAME=${2:-./models}
5 |
6 | if [ -z $GIST ]; then
7 | echo "usage: download_model_from_gist.sh "
8 | exit
9 | fi
10 |
11 | GIST_DIR=$(echo $GIST | tr '/' '-')
12 | MODEL_DIR="$DIRNAME/$GIST_DIR"
13 |
14 | if [ -d $MODEL_DIR ]; then
15 | echo "$MODEL_DIR already exists! Please make sure you're not overwriting anything important!"
16 | exit
17 | fi
18 |
19 | echo "Downloading Caffe model info to $MODEL_DIR ..."
20 | mkdir -p $MODEL_DIR
21 | wget https://gist.github.com/$GIST/download -O $MODEL_DIR/gist.zip
22 | unzip -j $MODEL_DIR/gist.zip -d $MODEL_DIR
23 | rm $MODEL_DIR/gist.zip
24 | echo "Done"
25 |
--------------------------------------------------------------------------------
/caffe/scripts/gather_examples.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Assemble documentation for the project into one directory via symbolic links.
3 |
4 | # Find the docs dir, no matter where the script is called
5 | ROOT_DIR="$( cd "$(dirname "$0")"/.. ; pwd -P )"
6 | cd $ROOT_DIR
7 |
8 | # Gather docs from examples/**/readme.md
9 | GATHERED_DIR=docs/gathered
10 | rm -r $GATHERED_DIR
11 | mkdir $GATHERED_DIR
12 | for README_FILENAME in $(find examples -iname "readme.md"); do
13 | # Only use file if it is to be included in docs.
14 | if grep -Fxq "include_in_docs: true" $README_FILENAME; then
15 | # Make link to readme.md in docs/gathered/.
16 | # Since everything is called readme.md, rename it by its dirname.
17 | README_DIRNAME=`dirname $README_FILENAME`
18 | DOCS_FILENAME=$GATHERED_DIR/$README_DIRNAME.md
19 | mkdir -p `dirname $DOCS_FILENAME`
20 | ln -s $ROOT_DIR/$README_FILENAME $DOCS_FILENAME
21 | fi
22 | done
23 |
24 | # Gather docs from examples/*.ipynb and add YAML front-matter.
25 | for NOTEBOOK_FILENAME in $(find examples -depth -iname "*.ipynb"); do
26 | DOCS_FILENAME=$GATHERED_DIR/$NOTEBOOK_FILENAME
27 | mkdir -p `dirname $DOCS_FILENAME`
28 | python scripts/copy_notebook.py $NOTEBOOK_FILENAME $DOCS_FILENAME
29 | done
30 |
--------------------------------------------------------------------------------
/caffe/scripts/split_caffe_proto.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import mmap
3 | import re
4 | import os
5 | import errno
6 |
7 | script_path = os.path.dirname(os.path.realpath(__file__))
8 |
9 | # a regex to match the parameter definitions in caffe.proto
10 | r = re.compile(r'(?://.*\n)*message ([^ ]*) \{\n(?: .*\n|\n)*\}')
11 |
12 | # create directory to put caffe.proto fragments
13 | try:
14 | os.mkdir(
15 | os.path.join(script_path,
16 | '../docs/_includes/'))
17 | os.mkdir(
18 | os.path.join(script_path,
19 | '../docs/_includes/proto/'))
20 | except OSError as exception:
21 | if exception.errno != errno.EEXIST:
22 | raise
23 |
24 | caffe_proto_fn = os.path.join(
25 | script_path,
26 | '../src/caffe/proto/caffe.proto')
27 |
28 | with open(caffe_proto_fn, 'r') as fin:
29 |
30 | for m in r.finditer(fin.read(), re.MULTILINE):
31 | fn = os.path.join(
32 | script_path,
33 | '../docs/_includes/proto/%s.txt' % m.group(1))
34 | with open(fn, 'w') as fout:
35 | fout.write(m.group(0))
36 |
--------------------------------------------------------------------------------
/caffe/scripts/travis/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # build the project
3 |
4 | BASEDIR=$(dirname $0)
5 | source $BASEDIR/defaults.sh
6 |
7 | if ! $WITH_CMAKE ; then
8 | make --jobs $NUM_THREADS all test pycaffe warn
9 | else
10 | cd build
11 | make --jobs $NUM_THREADS all test.testbin
12 | fi
13 | make lint
14 |
--------------------------------------------------------------------------------
/caffe/scripts/travis/configure-cmake.sh:
--------------------------------------------------------------------------------
1 | # CMake configuration
2 |
3 | mkdir -p build
4 | cd build
5 |
6 | ARGS="-DCMAKE_BUILD_TYPE=Release -DBLAS=Open"
7 |
8 | if $WITH_PYTHON3 ; then
9 | ARGS="$ARGS -Dpython_version=3"
10 | fi
11 |
12 | if $WITH_IO ; then
13 | ARGS="$ARGS -DUSE_OPENCV=On -DUSE_LMDB=On -DUSE_LEVELDB=On"
14 | else
15 | ARGS="$ARGS -DUSE_OPENCV=Off -DUSE_LMDB=Off -DUSE_LEVELDB=Off"
16 | fi
17 |
18 | if $WITH_CUDA ; then
19 | # Only build SM50
20 | ARGS="$ARGS -DCPU_ONLY=Off -DCUDA_ARCH_NAME=Manual -DCUDA_ARCH_BIN=\"50\" -DCUDA_ARCH_PTX=\"\""
21 | else
22 | ARGS="$ARGS -DCPU_ONLY=On"
23 | fi
24 |
25 | if $WITH_CUDNN ; then
26 | ARGS="$ARGS -DUSE_CUDNN=On"
27 | else
28 | ARGS="$ARGS -DUSE_CUDNN=Off"
29 | fi
30 |
31 | cmake .. $ARGS
32 |
33 |
--------------------------------------------------------------------------------
/caffe/scripts/travis/configure-make.sh:
--------------------------------------------------------------------------------
1 | # raw Makefile configuration
2 |
3 | LINE () {
4 | echo "$@" >> Makefile.config
5 | }
6 |
7 | cp Makefile.config.example Makefile.config
8 |
9 | LINE "BLAS := open"
10 | LINE "WITH_PYTHON_LAYER := 1"
11 |
12 | if $WITH_PYTHON3 ; then
13 | # TODO(lukeyeager) this path is currently disabled because of test errors like:
14 | # ImportError: dynamic module does not define init function (PyInit__caffe)
15 | LINE "PYTHON_LIBRARIES := python3.4m boost_python-py34"
16 | LINE "PYTHON_INCLUDE := /usr/include/python3.4 /usr/lib/python3/dist-packages/numpy/core/include"
17 | LINE "INCLUDE_DIRS := \$(INCLUDE_DIRS) \$(PYTHON_INCLUDE)"
18 | fi
19 |
20 | if ! $WITH_IO ; then
21 | LINE "USE_OPENCV := 0"
22 | LINE "USE_LEVELDB := 0"
23 | LINE "USE_LMDB := 0"
24 | fi
25 |
26 | if $WITH_CUDA ; then
27 | # Only build SM50
28 | LINE "CUDA_ARCH := -gencode arch=compute_50,code=sm_50"
29 | else
30 | LINE "CPU_ONLY := 1"
31 | fi
32 |
33 | if $WITH_CUDNN ; then
34 | LINE "USE_CUDNN := 1"
35 | fi
36 |
37 |
--------------------------------------------------------------------------------
/caffe/scripts/travis/configure.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # configure the project
3 |
4 | BASEDIR=$(dirname $0)
5 | source $BASEDIR/defaults.sh
6 |
7 | if ! $WITH_CMAKE ; then
8 | source $BASEDIR/configure-make.sh
9 | else
10 | source $BASEDIR/configure-cmake.sh
11 | fi
12 |
--------------------------------------------------------------------------------
/caffe/scripts/travis/defaults.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # set default environment variables
3 |
4 | set -e
5 |
6 | WITH_CMAKE=${WITH_CMAKE:-false}
7 | WITH_PYTHON3=${WITH_PYTHON3:-false}
8 | WITH_IO=${WITH_IO:-true}
9 | WITH_CUDA=${WITH_CUDA:-false}
10 | WITH_CUDNN=${WITH_CUDNN:-false}
11 |
--------------------------------------------------------------------------------
/caffe/scripts/travis/install-python-deps.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # install extra Python dependencies
3 | # (must come after setup-venv)
4 |
5 | BASEDIR=$(dirname $0)
6 | source $BASEDIR/defaults.sh
7 |
8 | if ! $WITH_PYTHON3 ; then
9 | # Python2
10 | :
11 | else
12 | # Python3
13 | pip install --pre protobuf==3.0.0b3
14 | pip install pydot
15 | fi
16 |
--------------------------------------------------------------------------------
/caffe/scripts/travis/setup-venv.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # setup a Python virtualenv
3 | # (must come after install-deps)
4 |
5 | BASEDIR=$(dirname $0)
6 | source $BASEDIR/defaults.sh
7 |
8 | VENV_DIR=${1:-~/venv}
9 |
10 | # setup our own virtualenv
11 | if $WITH_PYTHON3; then
12 | PYTHON_EXE='/usr/bin/python3'
13 | else
14 | PYTHON_EXE='/usr/bin/python2'
15 | fi
16 |
17 | # use --system-site-packages so that Python will use deb packages
18 | virtualenv $VENV_DIR -p $PYTHON_EXE --system-site-packages
19 |
--------------------------------------------------------------------------------
/caffe/scripts/travis/test.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # test the project
3 |
4 | BASEDIR=$(dirname $0)
5 | source $BASEDIR/defaults.sh
6 |
7 | if $WITH_CUDA ; then
8 | echo "Skipping tests for CUDA build"
9 | exit 0
10 | fi
11 |
12 | if ! $WITH_CMAKE ; then
13 | make runtest
14 | make pytest
15 | else
16 | cd build
17 | make runtest
18 | make pytest
19 | fi
20 |
--------------------------------------------------------------------------------
/caffe/scripts/upload_model_to_gist.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Check for valid directory
4 | DIRNAME=$1
5 | if [ ! -f $DIRNAME/readme.md ]; then
6 | echo "usage: upload_model_to_gist.sh "
7 | echo " /readme.md must exist"
8 | fi
9 | cd $DIRNAME
10 | FILES=`find . -maxdepth 1 -type f ! -name "*.caffemodel*" | xargs echo`
11 |
12 | # Check for gist tool.
13 | gist -v >/dev/null 2>&1 || { echo >&2 "I require 'gist' but it's not installed. Do 'gem install gist'."; exit 1; }
14 |
15 | NAME=`sed -n 's/^name:[[:space:]]*//p' readme.md`
16 | if [ -z "$NAME" ]; then
17 | echo " /readme.md must contain name field in the front-matter."
18 | fi
19 |
20 | GIST=`sed -n 's/^gist_id:[[:space:]]*//p' readme.md`
21 | if [ -z "$GIST" ]; then
22 | echo "Uploading new Gist"
23 | gist -p -d "$NAME" $FILES
24 | else
25 | echo "Updating existing Gist, id $GIST"
26 | gist -u $GIST -d "$NAME" $FILES
27 | fi
28 |
29 | RESULT=$?
30 | if [ $RESULT -eq 0 ]; then
31 | echo "You've uploaded your model!"
32 | echo "Don't forget to add the gist_id field to your /readme.md now!"
33 | echo "Run the command again after you do that, to make sure the Gist id propagates."
34 | echo ""
35 | echo "And do share your model over at https://github.com/BVLC/caffe/wiki/Model-Zoo"
36 | else
37 | echo "Something went wrong!"
38 | fi
39 |
--------------------------------------------------------------------------------
/caffe/src/caffe/layer.cpp:
--------------------------------------------------------------------------------
1 | #include "caffe/layer.hpp"
2 |
3 | namespace caffe {
4 |
5 | INSTANTIATE_CLASS(Layer);
6 |
7 | } // namespace caffe
8 |
--------------------------------------------------------------------------------
/caffe/src/caffe/layers/absval_layer.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include "caffe/layers/absval_layer.hpp"
4 | #include "caffe/util/math_functions.hpp"
5 |
6 | namespace caffe {
7 |
8 | template
9 | void AbsValLayer::LayerSetUp(const vector*>& bottom,
10 | const vector*>& top) {
11 | NeuronLayer::LayerSetUp(bottom, top);
12 | CHECK_NE(top[0], bottom[0]) << this->type() << " Layer does not "
13 | "allow in-place computation.";
14 | }
15 |
16 | template
17 | void AbsValLayer::Forward_cpu(
18 | const vector*>& bottom, const vector*>& top) {
19 | const int count = top[0]->count();
20 | Dtype* top_data = top[0]->mutable_cpu_data();
21 | caffe_abs(count, bottom[0]->cpu_data(), top_data);
22 | }
23 |
24 | template
25 | void AbsValLayer::Backward_cpu(const vector*>& top,
26 | const vector& propagate_down, const vector*>& bottom) {
27 | const int count = top[0]->count();
28 | const Dtype* top_diff = top[0]->cpu_diff();
29 | if (propagate_down[0]) {
30 | const Dtype* bottom_data = bottom[0]->cpu_data();
31 | Dtype* bottom_diff = bottom[0]->mutable_cpu_diff();
32 | caffe_cpu_sign(count, bottom_data, bottom_diff);
33 | caffe_mul(count, bottom_diff, top_diff, bottom_diff);
34 | }
35 | }
36 |
37 | #ifdef CPU_ONLY
38 | STUB_GPU(AbsValLayer);
39 | #endif
40 |
41 | INSTANTIATE_CLASS(AbsValLayer);
42 | REGISTER_LAYER_CLASS(AbsVal);
43 |
44 | } // namespace caffe
45 |
--------------------------------------------------------------------------------
/caffe/src/caffe/layers/absval_layer.cu:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include "caffe/layers/absval_layer.hpp"
4 | #include "caffe/util/math_functions.hpp"
5 |
6 | namespace caffe {
7 |
8 | template
9 | void AbsValLayer::Forward_gpu(
10 | const vector*>& bottom, const vector*>& top) {
11 | const int count = top[0]->count();
12 | Dtype* top_data = top[0]->mutable_gpu_data();
13 | caffe_gpu_abs(count, bottom[0]->gpu_data(), top_data);
14 | }
15 |
16 | template
17 | void AbsValLayer::Backward_gpu(const vector*>& top,
18 | const vector& propagate_down, const vector*>& bottom) {
19 | const int count = top[0]->count();
20 | const Dtype* top_diff = top[0]->gpu_diff();
21 | if (propagate_down[0]) {
22 | const Dtype* bottom_data = bottom[0]->gpu_data();
23 | Dtype* bottom_diff = bottom[0]->mutable_gpu_diff();
24 | caffe_gpu_sign(count, bottom_data, bottom_diff);
25 | caffe_gpu_mul(count, bottom_diff, top_diff, bottom_diff);
26 | }
27 | }
28 |
29 | INSTANTIATE_LAYER_GPU_FUNCS(AbsValLayer);
30 |
31 |
32 | } // namespace caffe
33 |
--------------------------------------------------------------------------------
/caffe/src/caffe/layers/base_data_layer.cu:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include "caffe/layers/base_data_layer.hpp"
4 |
5 | namespace caffe {
6 |
7 | template
8 | void BasePrefetchingDataLayer::Forward_gpu(
9 | const vector*>& bottom, const vector*>& top) {
10 | if (prefetch_current_) {
11 | prefetch_free_.push(prefetch_current_);
12 | }
13 | prefetch_current_ = prefetch_full_.pop("Waiting for data");
14 | // Reshape to loaded data.
15 | top[0]->ReshapeLike(prefetch_current_->data_);
16 | top[0]->set_gpu_data(prefetch_current_->data_.mutable_gpu_data());
17 | if (this->output_labels_) {
18 | // Reshape to loaded labels.
19 | top[1]->ReshapeLike(prefetch_current_->label_);
20 | top[1]->set_gpu_data(prefetch_current_->label_.mutable_gpu_data());
21 | }
22 | }
23 |
24 | INSTANTIATE_LAYER_GPU_FORWARD(BasePrefetchingDataLayer);
25 |
26 | } // namespace caffe
27 |
--------------------------------------------------------------------------------
/caffe/src/caffe/layers/bnll_layer.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 |
4 | #include "caffe/layers/bnll_layer.hpp"
5 |
6 | namespace caffe {
7 |
8 | const float kBNLL_THRESHOLD = 50.;
9 |
10 | template
11 | void BNLLLayer::Forward_cpu(const vector*>& bottom,
12 | const vector*>& top) {
13 | const Dtype* bottom_data = bottom[0]->cpu_data();
14 | Dtype* top_data = top[0]->mutable_cpu_data();
15 | const int count = bottom[0]->count();
16 | for (int i = 0; i < count; ++i) {
17 | top_data[i] = bottom_data[i] > 0 ?
18 | bottom_data[i] + log(1. + exp(-bottom_data[i])) :
19 | log(1. + exp(bottom_data[i]));
20 | }
21 | }
22 |
23 | template
24 | void BNLLLayer::Backward_cpu(const vector*>& top,
25 | const vector& propagate_down,
26 | const vector*>& bottom) {
27 | if (propagate_down[0]) {
28 | const Dtype* bottom_data = bottom[0]->cpu_data();
29 | const Dtype* top_diff = top[0]->cpu_diff();
30 | Dtype* bottom_diff = bottom[0]->mutable_cpu_diff();
31 | const int count = bottom[0]->count();
32 | Dtype expval;
33 | for (int i = 0; i < count; ++i) {
34 | expval = exp(std::min(bottom_data[i], Dtype(kBNLL_THRESHOLD)));
35 | bottom_diff[i] = top_diff[i] * expval / (expval + 1.);
36 | }
37 | }
38 | }
39 |
40 | #ifdef CPU_ONLY
41 | STUB_GPU(BNLLLayer);
42 | #endif
43 |
44 | INSTANTIATE_CLASS(BNLLLayer);
45 | REGISTER_LAYER_CLASS(BNLL);
46 |
47 | } // namespace caffe
48 |
--------------------------------------------------------------------------------
/caffe/src/caffe/layers/cudnn_lrn_layer.cu:
--------------------------------------------------------------------------------
1 | #ifdef USE_CUDNN
2 | #include
3 |
4 | #include "caffe/layers/cudnn_lrn_layer.hpp"
5 |
6 | namespace caffe {
7 |
8 | template
9 | void CuDNNLRNLayer::Forward_gpu(const vector*>& bottom,
10 | const vector*>& top) {
11 | const Dtype* bottom_data = bottom[0]->gpu_data();
12 | Dtype* top_data = top[0]->mutable_gpu_data();
13 |
14 | CUDNN_CHECK(cudnnLRNCrossChannelForward(
15 | handle_, norm_desc_, CUDNN_LRN_CROSS_CHANNEL_DIM1,
16 | cudnn::dataType::one,
17 | bottom_desc_, bottom_data,
18 | cudnn::dataType::zero,
19 | top_desc_, top_data) );
20 | }
21 |
22 | template
23 | void CuDNNLRNLayer::Backward_gpu(const vector*>& top,
24 | const vector& propagate_down, const vector*>& bottom) {
25 | const Dtype* top_diff = top[0]->gpu_diff();
26 | const Dtype* top_data = top[0]->gpu_data();
27 | const Dtype* bottom_data = bottom[0]->gpu_data();
28 | Dtype* bottom_diff = bottom[0]->mutable_gpu_diff();
29 |
30 | CUDNN_CHECK(cudnnLRNCrossChannelBackward(
31 | handle_, norm_desc_, CUDNN_LRN_CROSS_CHANNEL_DIM1,
32 | cudnn::dataType::one,
33 | top_desc_, top_data,
34 | top_desc_, top_diff,
35 | bottom_desc_, bottom_data,
36 | cudnn::dataType::zero,
37 | bottom_desc_, bottom_diff) );
38 | }
39 |
40 | INSTANTIATE_LAYER_GPU_FUNCS(CuDNNLRNLayer);
41 |
42 | }; // namespace caffe
43 |
44 | #endif
45 |
--------------------------------------------------------------------------------
/caffe/src/caffe/layers/cudnn_pooling_layer.cu:
--------------------------------------------------------------------------------
1 | #ifdef USE_CUDNN
2 | #include
3 |
4 | #include "caffe/layers/cudnn_pooling_layer.hpp"
5 |
6 | namespace caffe {
7 |
8 | template
9 | void CuDNNPoolingLayer::Forward_gpu(const vector*>& bottom,
10 | const vector*>& top) {
11 | const Dtype* bottom_data = bottom[0]->gpu_data();
12 | Dtype* top_data = top[0]->mutable_gpu_data();
13 | CUDNN_CHECK(cudnnPoolingForward(handle_, pooling_desc_,
14 | cudnn::dataType::one,
15 | bottom_desc_, bottom_data,
16 | cudnn::dataType::zero,
17 | top_desc_, top_data));
18 | }
19 |
20 | template
21 | void CuDNNPoolingLayer::Backward_gpu(const vector*>& top,
22 | const vector& propagate_down, const vector*>& bottom) {
23 | if (!propagate_down[0]) {
24 | return;
25 | }
26 | const Dtype* top_diff = top[0]->gpu_diff();
27 | const Dtype* top_data = top[0]->gpu_data();
28 | const Dtype* bottom_data = bottom[0]->gpu_data();
29 | Dtype* bottom_diff = bottom[0]->mutable_gpu_diff();
30 | CUDNN_CHECK(cudnnPoolingBackward(handle_, pooling_desc_,
31 | cudnn::dataType::one,
32 | top_desc_, top_data, top_desc_, top_diff,
33 | bottom_desc_, bottom_data,
34 | cudnn::dataType::zero,
35 | bottom_desc_, bottom_diff));
36 | }
37 |
38 | INSTANTIATE_LAYER_GPU_FUNCS(CuDNNPoolingLayer);
39 |
40 | } // namespace caffe
41 | #endif
42 |
--------------------------------------------------------------------------------
/caffe/src/caffe/layers/cudnn_softmax_layer.cpp:
--------------------------------------------------------------------------------
1 | #ifdef USE_CUDNN
2 | #include
3 |
4 | #include "thrust/device_vector.h"
5 |
6 | #include "caffe/layers/cudnn_softmax_layer.hpp"
7 |
8 | namespace caffe {
9 |
10 | template
11 | void CuDNNSoftmaxLayer::LayerSetUp(const vector*>& bottom,
12 | const vector*>& top) {
13 | SoftmaxLayer::LayerSetUp(bottom, top);
14 | // Initialize CUDNN.
15 | CUDNN_CHECK(cudnnCreate(&handle_));
16 | cudnn::createTensor4dDesc(&bottom_desc_);
17 | cudnn::createTensor4dDesc(&top_desc_);
18 | handles_setup_ = true;
19 | }
20 |
21 | template
22 | void CuDNNSoftmaxLayer::Reshape(const vector*>& bottom,
23 | const vector*>& top) {
24 | SoftmaxLayer::Reshape(bottom, top);
25 | int N = this->outer_num_;
26 | int K = bottom[0]->shape(this->softmax_axis_);
27 | int H = this->inner_num_;
28 | int W = 1;
29 | cudnn::setTensor4dDesc