How to Design a Language Agnostic SDK for Cross Platform Deployment and Maximum Extensibility
A Venice Computer Vision Presentation
Video Presentation
·
Presentation Slides
·
Blog Post
·
Venice Computer Vision
This project demonstrates how to build a language agnostic SDK for cross platform deployment and maximum extensibility. It covers how to do the following:
- Build a basic face detection computer vision library in C++
- Compile / cross compile the library for amd64, arm64, arm32
- Package that library and its dependencies as a single static library
- Add unit tests
- Set up a CI pipeline
- Write python bindings for our library
- Generate documentation directly from our API
Please refer to the blog post for a detailed tutorial and explanation of all the components of this project.
The following instructions assume you are using Ubuntu 18.04
sudo apt install build-essential
sudo apt-get install g++-aarch64-linux-gnu
sudo apt-get install gcc-arm-linux-gnueabihf binutils-arm-linux-gnueabihf g++-arm-linux-gnueabihf
sudo apt install python3.8
sudo apt install python3-pip
pip3 install cmake
sudo apt-get install doxygen
sudo apt-get install wget
sudo apt-get install zip
Navigate to 3rdparty
then run the following:
./build_catch.sh
./build_pybind11.sh
./build_ncnn.sh
./build_opencv.sh
mkdir build && cd build
cmake ..
make -j$(nproc)
make install
The outputs will be copied to dist
mkdir build && cd build
cmake -D BUILD_ARM32=ON ..
make -j$(nproc)
make install
mkdir build && cd build
cmake -D BUILD_ARM64=ON ..
make -j$(nproc)
make install