Bcnn
A minimalist Deep Learning framework for embedded Computer Vision
Install / Use
/learn @jnbraun/BcnnREADME
BCNN
Introduction
BCNN (Bare Convolutional Neural Networks) is a minimalist framework designed to prototype, train and deploy convolutional neural networks for embedded computer vision applications.
Features
- Written in C99. Clean C API designed to be integrated in C or C++ codebase.
- Lightweight: the minimal build requires no external dependency.
- Modular: Can leverage a Blas library such as OpenBLAS on CPU. Can also run on Nvidia's GPU. CuDNN is supported to offer maximal speed.
- Fast: Optimized CPU inference speed using AVX and ARM Neon vectorizations and OpenMP multithreading.
- Flexible: Supports multi inputs / outputs / branches. Provides the commonly used operators to build state-of-the-art CNN architectures (ResNet, DenseNet, MobileNet, Yolo ...)
- Command line tool to train / evaluate models via simple configuration file.
- Online data augmentation via bip, a fast image processing library (usable as standalone module).
- (Experimental) Model converters from Caffe -> bcnn and bcnn -> TensorFlow Lite.
Getting started
Download or clone the repository:
git clone https://github.com/jnbraun/bcnn.git
You need to have cmake installed in order to build the library.
[Optional] Dependencies
CPU
- Minimal build: no external dependency.
- Build with Blas: requires a blas library (OpenBLAS is recommended).
GPU
Requires CUDA libraries (cudart, cublas, curand) and a GPU with compute capability 2.0 at least. CuDNN is optional but supported.
Build
- User configuration: Depending on you system, you may want to edit the following lines of the CMakeLists.txt:
# User configuration settings
option(USE_AVX "Build with AVX instructions" ON)
option(USE_CUDA "Build with CUDA libraries" OFF)
option(USE_CUDNN "Build with CuDNN library" OFF)
option(USE_BLAS "Build with BLAS library" ON)
option(USE_NEON "Build with Neon instructions" OFF)
option(USE_OPENMP "Enable OpenMP multithreading" ON)
- [Optional] When building with CUDA and / or CuDNN, you may need to adjust the following line depending on the compute capability of your GPU:
# Uncomment the proper line according to the system cuda arch
set(CUDA_ARCH
#"-gencode arch=compute_30,code=sm_30;"
#"-gencode arch=compute_35,code=sm_35;"
"-gencode arch=compute_50,code=sm_50;"
"-gencode arch=compute_50,code=compute_50;"
"-gencode arch=compute_52,code=sm_52;"
#"-gencode arch=compute_60,code=sm_60;"
#"-gencode arch=compute_61,code=sm_61;"
)
- Build
cd path/to/bcnn
mkdir build
cd build/
cmake ../
make
How to use it
-
Use the command line tool bcnn-cl with configuration file: see an example here.
-
Or use the static library and write your own code: see an example there.
License
Released under MIT license.
Related Skills
YC-Killer
2.7kA library of enterprise-grade AI agents designed to democratize artificial intelligence and provide free, open-source alternatives to overvalued Y Combinator startups. If you are excited about democratizing AI access & AI agents, please star ⭐️ this repository and use the link in the readme to join our open source AI research team.
groundhog
398Groundhog's primary purpose is to teach people how Cursor and all these other coding agents work under the hood. If you understand how these coding assistants work from first principles, then you can drive these tools harder (or perhaps make your own!).
last30days-skill
16.5kAI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary
sec-edgar-agentkit
10AI agent toolkit for accessing and analyzing SEC EDGAR filing data. Build intelligent agents with LangChain, MCP-use, Gradio, Dify, and smolagents to analyze financial statements, insider trading, and company filings.
