v0.3.0
What's Changed
Added
- Rust live-camera example (
examples/yolov8_live.rs) — libcamera
capture, zero-copy DMA-BUF tensor input, and direct Wayland DMA-BUF
display for real-time YOLOv8 inference on NXP i.MX platforms. - 3-step segmentation pipeline — split preprocessing, inference, and
postprocessing into discrete HAL steps; reflected in both Rust and
Python YOLOv8 examples. cameraCargo feature on theara2crate that gates the
libcamera-basedyolov8_liveexample behind optional dependencies
(libcamera,wayland-client,wayland-protocols). Building the
library and file-based examples no longer requires libcamera on the host.- Monolithic YOLO detection decoder path for models with a single
[1, nc+4, N]output tensor (previously only the split boxes+scores
layout was supported). --format {nv12,yuyv}CLI flag on live-camera examples for pixel-format
performance comparison (YUYV is ~1.3 ms faster than NV12 on imx95-frdm).--color-mode {class,instance,track}on all four YOLOv8 examples
(previously hardcoded to Instance).--socketflag onexamples/yolov8.rsfor parity with the other examples.- Comprehensive API documentation (doc comments / docstrings) across all
example files.
Changed
- Live display backend: replaced EGL/GL with direct Wayland
zwp_linux_dmabuf_v1submission — no OpenGL context required, zero-copy
from NPU output to compositor. - Python camera capture: replaced GStreamer with native libcamera
Python bindings inyolov8_live.pyfor lower latency and fewer
transitive dependencies. - Example CLIs: migrated Rust YOLOv8 examples to
clapderive with
per-variant--helpdescriptions and typo suggestions.
Fixed
- YOLO detection box mapping in
examples/yolov8.rs: decoder produces
normalized coordinates in the letterboxed model input frame (e.g. 640×640),
not the original image. Un-pad and rescale by1 / letterbox_scaleso
boxes are no longer stretched on non-square source images.
crates.io: ara2 | ara2-sys
PyPI: edgefirst-ara2