# onnx2kmodel
**Repository Path**: dfrobot/onnx2kmodel
## Basic Information
- **Project Name**: onnx2kmodel
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-10-02
- **Last Updated**: 2026-07-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ONNX 转 二哈2安装包 GUI工具
将onnx模型量化为kmodel模型,再将其打包为二哈2的zip安装包
* [English Version](./README.md)
## 功能特性
- **支持yolov8n yolo11n 目标检测 语义分割 物体分类 三种模型(imgsz 320 或 640)**
- **支持python 3.10 及以上环境**
- **可以运行在win10 linux mac多系统上**
- **使用训练集的图片量化**
- **使用uint8量化**
## 安装
### 克隆工程
```
git clone https://github.com/DFRobot/onnx2kmodel
```
### 安装依赖
#### windows
下载并安装dotnet7.0
https://downloadcd.dfrobot.com.cn/HUSKYLENS/dotnet-sdk-7.0.410-win-x64.exe
确保电脑安装了Python3.10或以上版本,命令行运行
```shell
pip install -r requirements.txt
pip install nncase_kpu-2.10.0-py2.py3-none-win_amd64.whl
```
#### Linux
安装 dotnet7.0
Ubuntu(测试版本22.04)
```shell
sudo apt update
sudo apt install -y dotnet-sdk-7.0
```
安装依赖包
```shell
pip install -r requirements.txt
pip install nncase-kpu
```
#### Mac
```
暂未测试
```
## 配置文件
#### 应用配置文件 app_conf.toml
点击ui页面的 保存配置 ,可以自动更新这个toml文件,成为再次打开ui页面的默认配置
```toml
[comm]
mode = "MindPlus" #User MindPlus表示加载MindPlus训练出的模型和导出的数据集 User表示用户配置自己的文件结构
icon_file = "" #打包二哈安装包必备的图标,png格式,背景透明色
app_name_EN = "Cell\\nRecognition" #安装时显示的英文名称,\n表示换行,将这个名字换成自己的应用名称
app_name_zh_CN = "细胞识别" #安装时显示的简体名称,\n表示换行,将这个名字换成自己的应用名称
app_name_zh_TW = "細胞識別" #安装时显示的繁体名称,\n表示换行,将这个名字换成自己的应用名称
title_name_EN = "Cell Recognition" #二哈打开应用时,title显示的英文名称
title_name_zh_CN = "细胞识别" #二哈打开应用时,title显示的简体中文名称
title_name_zh_TW = "細胞識別" #二哈打开应用时,title显示的繁体中文名称
det_threshold = 0.6 #默认检测阈值 范围 0 - 1
[mindplus_options]
dataset_zip = "" #MindPlus导出的数据集文件,zip格式
model_zip = "" #MindPlus导出的模型文件,zip格式
[user_options]
user_dir = "" #用户模式下,用户村子自定义文件的目录
```
#### 模型配置文件 kmodel_conf.toml
参考佳楠nncase相关文档,初级用户可不更改此文件,直接使用默认配置
```toml
[compile_options]
target = "k230" # "cpu"
dump_ir = false
dump_asm = false
dump_dir = "./dump"
input_file = ""
preprocess = true
input_type = "uint8" # "uint8", "float32"
input_shape = [1, 3, 320, 320]
input_range = [0, 1]
input_layout = "NCHW" # "NHWC"
swapRB = false
mean = [0, 0, 0]
std = [1, 1, 1]
letterbox_value = 0
output_layout = "NCHW" # "NHWC"
[ptq_options]
calibrate_method = "NoClip" # "Kld", "NoClip"
finetune_weights_method = "NoFineTuneWeights"
quant_type = "uint8" # "float32", "int8", "int16"
w_quant_type = "uint8" # "float32", "int8", "int16"
dump_quant_error = false
dump_quant_error_symmetric_for_signed = false
quant_scheme = ""
quant_scheme_strict_mode = false
export_quant_scheme = false
export_weight_range_by_channel = false
```
## 运行GUI程序
```shell
python app.py
```
## onnx2kmodel使用说明
该工具可将onnx模型转化为二哈识图2专用的kmodel模型格式。而onnx模型可由yolov8n, yolo11n模型转化而来。
以下为两个训练yolo模型,转化为onnx模型最终生成二哈识图安装包的过程。
使用者可任选其一
当使用方法2自行训练yolo模型时,imgsz参数可选320或者640两种规格。
### 1. 基于Mind+制作二哈安装包
此方法使用[Mind+ V2](https://mindplus.cc/download.html)来训练yolo模型,并且在Mind+中直接转化为onnx模型
可访问[二哈识图2 Mind+训练模型并离线部署章节](https://wiki.dfrobot.com.cn/_SKU_SEN0638_Gravity_HUSKYLENS_2_AI_Camera_Vision_Sensor#8.2%20Mind%2B%E6%97%A0%E4%BB%A3%E7%A0%81%E6%96%B9%E5%BC%8F%E8%AE%AD%E7%BB%83%E5%B9%B6%E9%83%A8%E7%BD%B2%E6%A8%A1%E5%9E%8B(%E6%9C%AC%E5%9C%B0))以查看详细说明。
使用该方式训练模型的用户,执行下一步前需要确认有两个压缩包:
1. 从Mind+导出含有onnx模型的.zip压缩包
2. 数据集的.zip压缩包
#### 启动onnx2kmodel,进行onnx模型到kmodel模型转换
简要流程如下:
* 该项目顶层文件执行python app.py
* 模式选择 选择MindPlus
* 选择Mindplus导出的模型包
* 选择MindPlus导出的数据集包
* 选择自己的图标
* 输入多语言的应用名称(必填)
* 输入多语言的title名称(必填)
* 设置合理的默认输出阈值
* 点击保存配置,可以作为再次打开gui工具的默认配置(可选)
* 点击转换&打包按钮,等待几分钟(依据你的电脑性能)后,app.py的同级目录会生成一个zip格式的安装包(注意不要更改这个安装包的名字)
### 2. 基于自定义数据制作二哈安装包
此方法需要用户自行准备yolo格式的数据集
假设使用此功能的用户比较了解yolo数据集,这里不对数据集的格式做更多解释
可访问[二哈识图2 Python代码训练模型离线部署章节](https://wiki.dfrobot.com.cn/_SKU_SEN0638_Gravity_HUSKYLENS_2_AI_Camera_Vision_Sensor#8.3%20Python%20%E4%BB%A3%E7%A0%81%E8%AE%AD%E7%BB%83%E6%A8%A1%E5%9E%8B%E5%B9%B6%E9%83%A8%E7%BD%B2(%E6%9C%AC%E5%9C%B0))。
使用我们提供的示例数据集,并参考该链接教程进行yolo模型训练以及onnx模型转化。
使用该方式训练模型的用户,执行下一步前需要确认有两个文件:
1. onnx模型
2. yolo数据集文件夹
##### 制作onnx转换kmodel模型所需文件夹
获得onnx模型后,用户需在app.py的同级目录下,创建如下文件结构。
其中:
- **best.onnx**:该文件是上一步由yolo模型转化生成的onnx模型
- **images**:该文件夹包含了原始数据集
- **data.yaml**:该文件可在[examples_yaml](/examples_yaml/)文件夹中找到示例。其中的names标签,需要根据自己模型的规格进行修改。其他参数默认不动
检测和分割模型
```shell
.
└── user_dir
├── best.onnx
├── data.yaml
└── images
└── train
├── capture_f845db40.png
├── capture_fc0e6b54.png
├── capture_fc577b9b.png
├── capture_fe2a84a1.png
└── ......
```
分类模型
```shell
.
└── user_dir
├── best.onnx
├── data.yaml
└── images
└── train
└── cls1
├── capture_f845db40.png
├── capture_fc0e6b54.png
└── ......
└── cls2
├── capture_fc577b9b.png
├── capture_fe2a84a1.png
└── ......
└── ...
```
#### 启动onnx2kmodel,进行onnx模型到kmodel模型转换
简要流程如下:
* 该项目顶层文件夹,开启终端执行python app.py
* 模式选择 选择自定义
* 用户自定义目录,选择前一步整理好的user_dir文件夹
* 选择自己的图标
* 输入多语言的应用名称(必填)
* 输入多语言的title名称(必填)
* 设置合理的默认输出阈值
* 点击保存配置,可以作为再次打开gui工具的默认配置(可选)
* 点击转换&打包按钮,等待几分钟(依据你的电脑性能)后,app.py的同级目录会生成一个zip格式的安装包(注意不要更改这个安装包的名字)
## 二哈2上安装应用
* 将zip安装包拷贝到二哈MTP设备的 Huskylens\storage\installation_package 目录
* 打开二哈 模型安装(Model Installation),选择本地安装(Local Installation),应用就安装好了,回到主界面可以查看
## 遗留问题
* 点击转换时,GUI线程会卡住,转换完成后才可继续操作