# 导出

## 概述

导出训练好的模型，用于下游部署工作流。LuxonisTrain 支持直接导出 ONNX、生成 NN Archive，以及针对 Luxonis 目标平台的统一转换流程。

## 导出格式

 * ONNX：开放神经网络交换格式，用作主要的中间交换和下游转换格式。

要配置导出和转换行为，可以在配置文件中指定 exporter 部分：

```yaml
exporter:
  onnx:
    opset_version: 11
```

exporter.hubai 和 exporter.blobconverter 由 convert 或 ConvertOnTrainEnd 使用，而非单独的 export。

### CLI

使用以下命令导出模型：

```bash
luxonis_train export --config configs/example_export.yaml --weights path/to/weights.ckpt
```

### Python API

```python
from luxonis_train import LuxonisModel

model = LuxonisModel("configs/example_export.yaml")
model.export(weights="path/to/weights.ckpt")
```

> 导出模型可以在训练结束时自动进行，通过使用
> `ExportOnTrainEnd`
> 回调实现。

## NN Archive

创建一个 [NN Archive](https://docs.luxonis.com/software-v3/ai-inference/nn-archive.md) 文件，以便使用 DepthAI API 轻松部署。如果您未提供 ONNX
可执行文件，LuxonisTrain 会先将模型导出为 ONNX。

该存档包含导出的模型以及运行模型所需的所有元数据。

### CLI

要使用 CLI 创建 NN Archive，请使用以下命令：

```bash
luxonis_train archive                         \
  --config configs/detection_light_model.yaml \
  --weights path/to/checkpoint.ckpt
```

### Python API

您也可以使用 Python API 创建 NN Archive：

```python
from luxonis_train import LuxonisModel

model = LuxonisModel("configs/detection_light_model.yaml")
model.archive(weights="path/to/checkpoint.ckpt")
```

> 存档可以在训练结束时自动创建，通过使用
> `ArchiveOnTrainEnd`
> 回调实现。

## 转换

convert 是 LuxonisTrain 中的统一部署流程。它执行以下操作：

 1. 从检查点导出为 ONNX
 2. 从 ONNX 存档为 NN Archive
 3. 针对 RVC2、RVC3 或 RVC4 的可选平台特定转换

通过 exporter.hubai 或 exporter.blobconverter 配置此行为。

### CLI

```bash
luxonis_train convert --config configs/detection_light_model.yaml --weights path/to/checkpoint.ckpt
```

### Python API

```python
from luxonis_train import LuxonisModel

model = LuxonisModel("configs/detection_light_model.yaml")
archive_path, conversion_artifacts = model.convert(
    weights="path/to/checkpoint.ckpt",
)
```

convert() 返回基于 ONNX 的 NN Archive 路径，以及一个包含任何额外转换工件（如平台特定存档或旧版 blob 输出）的字典。

> 完整的转换流程可以在训练结束时自动运行，通过使用
> `ConvertOnTrainEnd`
> 回调实现。
