Cocoa is a software engineer, and there was a time when they needed to do some image-processing tasks in Elixir, but there were no Elixir libraries that could satisfy their demands. So Cocoa developed this Evision library to address image-processing tasks in Elixir using OpenCV.
Previously, there were mainly two ways to use OpenCV in Elixir: creating a helper process (written in C++, Python or other languages) and communicating through a pipe, or manually porting OpenCV functions as NIFs, native-implemented functions so that Erlang and Elixir can load and use them directly.
These two approaches have different pros and cons, and this library focuses on the latter and tries to automate the whole porting process. later received 1-year funding from the Erlang Ecosystem Foundation.
This project aims to create a lightweight neural network inference library, TFLiteBEAM, powered by TensorFlow Lite (TFLite).
Firstly, TFLiteBEAM has a small footprint. It sits around 10MBs compared to 500+ MBs when using EXLA or 700+ MBs for torchx, making it a great option for edge devices and resource-constrained systems such as Raspberry Pi.
Secondly, TFLiteBEAM is primarily optimised for mobile and embedded devices. It provides optimized model parsers and inference engines for these devices, delivering fast and low-latency inference performance.
Thirdly, using TFLiteBEAM also allows us to run models on Edge TPU like Coral, a hardware accelerator. In comparison, it’s still nearly impossible to use any desktop GPUs on devices like Raspberry Pi, while adding a Coral edge TPU as the hardware accelerator is relatively more accessible and practical.
Lastly, as its name suggests, this library can benefit all BEAM languages (as long as they have support for using Erlang NIF libraries).