Optimized (for size and speed) Caffe lib for iOS and Android with out-of-the-box demo APP.
Optimized (for size and speed) Caffe lib for iOS and Android with demo APP. (CPU_ONLY, NO_BACKWARD, NO_BOOST, NO_HDF5, NO_LEVELDB)
iPhone5s | Meizu M3 note |
---|---|
NOTE: Cmake version 3.7.2 builds faster lib than version 3.5.1 (verified on Ubuntu 16.10/Android NDK r14). Don't know why. So please use a newer cmake if you can.
NOTE: NDK version r16+ is not supported. NDK r16 moves all standalone headers to unified headers. It causes a lot of cross compile problems which I cannot resolve. See issue #52.
$ git clone --recursive https://github.com/solrex/caffe-mobile.git
$ ./tools/build_ios.sh
caffe/examples/mnist/lenet_iter_10000.caffemodel
to CaffeSimple app directory. Note: Check the batch size setting in net.prototxt, set it to 1
if needed.$ cp $CAFFE/examples/mnist/lenet_iter_10000.caffemodel \
$CAFFE_MOBILE/examples/ios/simple/CaffeSimple/data/weight.caffemodel
If you want to use your self-defined caffe network, use tools/prototxt2bin.py net.prototxt
to convert your prototxt to protobin. Then place net.protobin
in $CAFFE_MOBILE/examples/ios/simple/CaffeSimple/data/
.
Load the Xcode project inside the $CAFFE_MOBILE/examples/ios/simple/
folder, connect your iPhone to Mac, change target to "Your Name's iPhone", and press Command-R to build and run it on your connected device.
Test passed ANDROID_ABI:
$ git clone --recursive https://github.com/solrex/caffe-mobile.git
$ export NDK_HOME=/path/to/your/ndk # C:/path/to/your/ndk on MinGW64 (/c/path/to/your/ndk not work for OpenBLAS)
$ ./tools/build_android.sh
For Windows Users:
Install the following softwares before you start:
- Git for Windows: A shell environment(MinGW64) to run the build.
- tdm64-gcc-5.1.0-2.exe: The GNU toolchain, remember to copy
/path/to/TDM-GCC-64/bin/mingw32-make.exe
to/path/to/TDM-GCC-64/bin/make.exe
.- cmake-3.8.2-win64-x64.msi: Cmake
Then start
Git Bash
application to run the build script.
caffe/examples/mnist/lenet.prototxt
and the trained weight file caffe/examples/mnist/lenet_iter_10000.caffemodel
to the SD card root of your Android mobile phone. Check the batch size setting in net.prototxt, set it to 1
if needed.$ adb push $CAFFE/examples/mnist/lenet_iter_10000.caffemodel \
/sdcard/weight.caffemodel
$ adb push $CAFFE_MOBILE/examples/ios/simple/CaffeSimple/data/net.protobin \
/sdcard/net.protobin
$ adb push $CAFFE_MOBILE/examples/ios/simple/CaffeSimple/data/test_image.jpg \
/sdcard/test_image.jpg
If you want to use your self-defined caffe network, use tools/prototxt2bin.py net.prototxt
to convert your prototxt to protobin. Then push net.protobin
to your sdcard root directory.
Load the Android studio project inside the $CAFFE_MOBILE/examples/android/CaffeSimple/
folder, and press Command-R to build and run it on your connected device.
$ brew install protobuf # MacOSX
$ sudo apt install libprotobuf-dev protobuf-compiler libatlas-dev # Ubuntu
$ git clone --recursive https://github.com/solrex/caffe-mobile.git
$ mkdir build
$ cd ../build
$ cmake ..
$ make -j 4
$ brew install gflags
$ cmake .. -DTOOLS
$ make -j 4