GitHunt
AN

Zant simplifies the deployment and optimization of neural networks on microprocessors

Z-Ant

Zig Tests Zig Benchamrk Tests Zig Codegen Tests

image

Project Overview

โœจ Why Z-Ant?

  • โšก Microsecond inference on ARM Cortex-M, RISC-V, x86
  • ๐Ÿ“ฆ Zero dependencies - single static library deployment
  • ๐ŸŽฏ ONNX native - direct model deployment from ONNX
  • ๐Ÿ”ง 30+ operators - comprehensive neural network support
  • ๐Ÿ“ท Built-in image processing - JPEG decode + preprocessing
  • ๐Ÿง  Smart optimization - quantization, pruning, memory efficiency

Use Cases

  • ๐Ÿญ Edge AI: Real-time anomaly detection, predictive maintenance
  • ๐Ÿค– IoT & Autonomous Systems: Lightweight AI models for drones, robots, vehicles, IoT devices
  • ๐Ÿ“ฑ Mobile Applications: On-device inference for privacy-preserving AI
  • ๐Ÿฅ Medical Devices: Real-time health monitoring and diagnostics
  • ๐ŸŽฎ Gaming: AI-powered gameplay enhancement on embedded systems

๐Ÿš€ Quick Start

Prerequisites

Get Started in 2 Minutes

# Clone and verify installation
git clone https://github.com/ZantFoundation/Z-Ant.git
cd Z-Ant

# - put your onnx model inside /datasets/models in a folder with the same of the model to to have: /datasets/models/my_model/my_model.onnx

# - simplify and prepare the model for zant inference engine
./zant input_setter --path /datasets/models/my_model/my_model.onnx --shape "your,model,sha,pe"

# - Generate test data
./zant user_tests_gen --model my_model

# --- GENERATING THE Single Node lib and test it ---
#For a N nodes model it creates N onnx models, one for each node with respective tests.
./zant onnx_extract --path /datasets/models/my_model/my_model.onnx

#generate libs for extracted nodes
zig build extractor-gen -Dmodel="my_model"

#test extracted nodes
zig build extractor-test -Dmodel="my_model" 

# --- GENERATING THE LIBRARY and TESTS ---
# Generate code for a specific model
zig build lib-gen -Dmodel="my_model" -Denable_user_tests [-Ddynamic -Ddo_export -Dlog -Dcomm ... ]

# Test the generated code
zig build lib-test -Dmodel="my_model" -Denable_user_tests [-Ddynamic -Ddo_export -Dlog -Dcomm ... ]

# Build the static library
zig build lib -Dmodel="my_model" [-Dtarget=... -Dcpu=...]

๐Ÿ“– Essential Commands

IMPORTANT: see ZANT CLI for a better understanding and more details!

Core Workflow

Command What it does
zig build test Verify everything works
zig build codegen -Dmodel=<name> Generate code from ONNX model
zig build lib -Dmodel=<name> Build deployable static library
zig build test-generated-lib -Dmodel=<name> Test your generated code

Target Platforms

Platform Target Flag CPU Examples
ARM Cortex-M -Dtarget=thumb-freestanding -Dcpu=cortex_m33, -Dcpu=cortex_m4
RISC-V -Dtarget=riscv32-freestanding -Dcpu=generic_rv32
x86/Native -Dtarget=native (auto-detected)

Key Options

Option Description Example
-Dmodel=<name> Your model name -Dmodel=my_classifier
-Dmodel_path=<path> Custom ONNX file -Dmodel_path=models/custom.onnx
-Dlog=true Enable detailed logging -Dlog=true
-Dcomm=true Add comments to generated code -Dcomm=true

๐Ÿ”ง ONNX Tools (Python Helpers)

Z-Ant includes Python scripts for ONNX model preparation:

# Prepare your model: set input shapes and infer all tensor shapes
./zant input_setter --path model.onnx --shape 1,3,224,224

# Generate test data for validation
./zant user_tests_gen --model model.onnx --iterations 10

# Create operator test models
./zant onnx_gen --op Conv --iterations 5

๐Ÿ’ผ Integration Examples

CMake Integration

target_link_libraries(your_project PUBLIC path/to/libzant.a)

Arduino/Embedded C

#include "lib_my_model.h"

// Optional: Set custom logging
extern void setLogFunction(void (*log_function)(uint8_t *string));

// Your inference code here

๐ŸŽฏ Real-World Examples

Image Classification on Cortex-M33

# Generate optimized library for image classifier
zig build codegen -Dmodel=mobilenet_v2 -Dmodel_path=models/mobilenet.onnx
zig build lib -Dmodel=mobilenet_v2 -Dtarget=thumb-freestanding -Dcpu=cortex_m33 -Doutput_path=deployment/

Multi-Platform Testing

# Test on different architectures
zig build test-generated-lib -Dmodel=my_model -Dtarget=native
zig build test-generated-lib -Dmodel=my_model -Dtarget=thumb-freestanding -Dcpu=cortex_m4

๐Ÿ› ๏ธ Development

For Contributors

# Run full test suite
zig build test --summary all

# Test heavy computational operations  
zig build test -Dheavy=true

# Test specific operator implementations
zig build op-codegen-test -Dop=Conv

# Generate and test single operations
zig build op-codegen-gen -Dop=Add

Project Structure

Z-Ant/
โ”œโ”€โ”€ src/                    # Core source code
โ”‚   โ”œโ”€โ”€ Core/              # Neural network core functionality
โ”‚   โ”œโ”€โ”€ CodeGen/           # Code generation engine
โ”‚   โ”œโ”€โ”€ ImageToTensor/     # Image preprocessing pipeline
โ”‚   โ”œโ”€โ”€ onnx/              # ONNX model parsing
โ”‚   โ””โ”€โ”€ Utils/             # Utilities and helpers
โ”œโ”€โ”€ tests/                 # Comprehensive test suite
โ”œโ”€โ”€ datasets/              # Sample models and test data
โ”œโ”€โ”€ generated/             # Generated code output
โ”œโ”€โ”€ examples/              # Arduino and microcontroller examples
โ””โ”€โ”€ docs/                  # Documentation and guides

๐Ÿค Contributing

We welcome contributions from developers of all skill levels! Here's how to get involved:

Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Create a feature branch for your work
  4. Make your changes following our coding standards
  5. Run tests to ensure everything works
  6. Submit a pull request for review

Ways to Contribute

  • ๐Ÿ› Bug Reports: Found an issue? Let us know!
  • โœจ Feature Requests: Have an idea? Share it with us!
  • ๐Ÿ’ป Code Contributions: Improve the codebase or add new features
  • ๐Ÿ“š Documentation: Help make the project easier to understand
  • ๐Ÿงช Testing: Write tests or improve test coverage

Community Guidelines

Recognition

All contributors are recognized in our Contributors list. Thank you for helping shape the future of tinyML!


๐Ÿ“„ License

This project is licensed under the LICENSE file in the repository.


Join us in revolutionizing AI on edge devices! ๐Ÿš€

GitHub โ€ข Documentation โ€ข Examples โ€ข Community