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-essentialsudo apt-get install g++-aarch64-linux-gnusudo apt-get install gcc-arm-linux-gnueabihf binutils-arm-linux-gnueabihf g++-arm-linux-gnueabihfsudo apt install python3.8sudo apt install python3-pippip3 install cmakesudo apt-get install doxygensudo apt-get install wgetsudo 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 buildcmake ..make -j$(nproc)make install
The outputs will be copied to dist
mkdir build && cd buildcmake -D BUILD_ARM32=ON ..make -j$(nproc)make install
mkdir build && cd buildcmake -D BUILD_ARM64=ON ..make -j$(nproc)make install
