iris-cv 0.0.0

A fast computer vision library framework in Rust.
Documentation
---
title: "Deep Neural Networks (DNN)"
description: "Load and run ONNX, Safetensors, and PyTorch bin models with Iris's native DNN module powered by the Burn framework."
keywords: ["DNN", "deep learning", "ONNX", "safetensors", "neural network", "inference", "model loading"]
---

# Deep Neural Networks (DNN)


Deep learning modules in Iris are built natively on the **Burn** framework. This allows you to construct model structures, load weights, and execute forward passes across multiple backends (WGPU, CUDA, LibTorch, Ndarray).

## Loading Pretrained Model Weights


### Safetensors format


Loads weights from standard `.safetensors` files using the `safetensors` crate.

```rust
let device = Default::default();
let weights = WeightLoader::load_safetensors::<Backend>("weights/face_detector.safetensors", &device)?;
```

### PyTorch Bin format


Loads weights from raw flat binary streams.

```rust
let weight_tensor = WeightLoader::load_bin::<Backend>("weights/model.bin", &device, [100, 100])?;
```

## Running ONNX Models


Iris supports importing ONNX model pipelines.

```rust
// Load an ONNX model from file
let model = OnnxModel::load("weights/object_detector.onnx", &device)?;

// Preprocess the input image to get a [1, C, H, W] tensor
let input_tensor = model.preprocess(&image)?;

// Evaluate the neural network
let output_tensor: Tensor<Backend, 4> = model.predict_raw(input_tensor)?;
```

### Direct Builders


```rust
let model = read_net::<Backend>("weights/model.onnx", &device)?;
let model = read_net_from_onnx::<Backend>("weights/model.onnx", &device)?;
```

## Input Preprocessing (Blobs)


The `blob_from_image` helper handles resizing, scaling, and mean subtraction to prepare images for neural network entry.

```rust
let size = Size::new(224, 224);
let mean = Scalar::new(0.485, 0.456, 0.406, 0.0);
let scale = 1.0 / 255.0;

let blob = blob_from_image(&image, scale, size, mean, true)?; // [1, C, 224, 224]
```

## Non-Maximum Suppression (NMS)


Filters overlapping bounding boxes based on class confidence scores and Intersection over Union (IoU) values.

```rust
let kept_indices = nms_boxes(&bboxes, &scores, 0.5, 0.4);
```