All Projects → jnbraun → bcnn

jnbraun / bcnn

Licence: MIT License
A minimalist Deep Learning framework for embedded Computer Vision

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
Cuda
1817 projects
assembly
5116 projects
CMake
9771 projects

Projects that are alternatives of or similar to bcnn

Anakin
High performance Cross-platform Inference-engine, you could run Anakin on x86-cpu,arm, nv-gpu, amd-gpu,bitmain and cambricon devices.
Stars: ✭ 488 (+1151.28%)
Mutual labels:  arm, high-performance
Ocbarrage
iOS 弹幕库 OCBarrage, 同时渲染5000条弹幕也不卡, 轻量, 可拓展, 高度自定义动画, 超高性能, 简单易上手; A barrage render-engine with high performance for iOS. At the same time, rendering 5000 barrages is also very smooth, lightweight, scalable, highly custom animation, ultra high performance, simple and easy to use!
Stars: ✭ 294 (+653.85%)
Mutual labels:  gpu, high-performance
LuisaRender
High-Performance Multiple-Backend Renderer Based on LuisaCompute
Stars: ✭ 47 (+20.51%)
Mutual labels:  gpu, high-performance
Ocbarrage
iOS 弹幕库 OCBarrage, 同时渲染5000条弹幕也不卡, 轻量, 可拓展, 高度自定义动画, 超高性能, 简单易上手; A barrage render-engine with high performance for iOS. At the same time, rendering 5000 barrages is also very smooth, lightweight, scalable, highly custom animation, ultra high performance, simple and easy to use!
Stars: ✭ 589 (+1410.26%)
Mutual labels:  gpu, high-performance
Tf Quant Finance
High-performance TensorFlow library for quantitative finance.
Stars: ✭ 2,925 (+7400%)
Mutual labels:  gpu, high-performance
Compute.scala
Scientific computing with N-dimensional arrays
Stars: ✭ 191 (+389.74%)
Mutual labels:  gpu, high-performance
Hipsycl
Implementation of SYCL for CPUs, AMD GPUs, NVIDIA GPUs
Stars: ✭ 377 (+866.67%)
Mutual labels:  gpu, high-performance
Open3d
Open3D: A Modern Library for 3D Data Processing
Stars: ✭ 5,860 (+14925.64%)
Mutual labels:  arm, gpu
Ncnn Android Styletransfer
The style transfer android example
Stars: ✭ 54 (+38.46%)
Mutual labels:  arm, gpu
PrimeG2Pkg
Running Windows on smartphone is not new. How about a calculator?
Stars: ✭ 68 (+74.36%)
Mutual labels:  arm
gpustats
Statistics on GPUs
Stars: ✭ 21 (-46.15%)
Mutual labels:  gpu
baking-pi
My code for Baking Pi - Operating Systems Development online course by Cambridge University (Raspberry Pi 3 update)
Stars: ✭ 22 (-43.59%)
Mutual labels:  arm
opencv-cuda-docker
Dockerfiles for OpenCV compiled with CUDA, opencv_contrib modules and Python 3 bindings
Stars: ✭ 55 (+41.03%)
Mutual labels:  gpu
snowem
Snowem is a lightweight live streaming server, based on webrtc technology. Its design mainly focuses on simplicity, scalability and high performance.
Stars: ✭ 73 (+87.18%)
Mutual labels:  high-performance
asl-interpreter
Example implementation of Arm's Architecture Specification Language (ASL)
Stars: ✭ 78 (+100%)
Mutual labels:  arm
data-parallelism
juliafolds.github.io/data-parallelism/
Stars: ✭ 22 (-43.59%)
Mutual labels:  high-performance
hipacc
A domain-specific language and compiler for image processing
Stars: ✭ 72 (+84.62%)
Mutual labels:  gpu
tiny-cuda-nn
Lightning fast & tiny C++/CUDA neural network framework
Stars: ✭ 908 (+2228.21%)
Mutual labels:  gpu
primme
PReconditioned Iterative MultiMethod Eigensolver for solving symmetric/Hermitian eigenvalue problems and singular value problems
Stars: ✭ 98 (+151.28%)
Mutual labels:  high-performance
Subway
Out-of-GPU-Memory Graph Processing with Minimal Data Transfer
Stars: ✭ 30 (-23.08%)
Mutual labels:  gpu

BCNN

Build Status License

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].