netrans/examples/darknet
xujiao 19e41d9e83 Update docs 2025-04-09 14:13:31 +08:00
..
yolov4_tiny netrans model conversion examples 2025-04-07 11:31:19 +08:00
README.md Update docs 2025-04-09 14:13:31 +08:00

README.md

Darknet模型转换示例

本文档以 yolov4_tiny 为例,介绍如何使用 Netrans 对 Darknet 模型进行转换。

Netrans 支持 Darknet官网列出 darknet 模型

安装Netrans

创建 conda 环境 .

conda create -n netrans python=3.8 -y
conda activate netrans

下载 Netrans .

mkdir -p ~/app
cd ~/app
git clone https://gitlink.org.cn/nudt_dsp/netrans.git

安装 Netrans。

cd ~/app/netrans
./setup.sh

数据准备

转换 Darknet 模型时,模型工程目录应包含以下文件:

  • .cfg 文件:网络结构配置文件
  • .weights 文件:训练权重文件
  • .dataset.txt数据路径配置文件

我们的示例 已经完成数据准备,可以使用下面命令进入目录执行。

cd netrans/
cd examples/darknet

此时目录如下:

yolov4_tiny/
├── 0.jpg                 # 校准数据
├── dataset.txt           # 指定数据地址的文件 
├── yolov4_tiny.cfg       # 网络结构配置文件
└── yolov4_tiny.weights   # 预训练权重文件

使用 nertans_cli 命令行工具

模型导入

import.sh yolov4_tiny

该命令会在工程目录下生成包含模型信息的 .json 和 .data 数据文件。 此时 yolov4_tiny 的目录结构如下:

yolov4_tiny/
├── 0.jpg
├── dataset.txt
├── yolov4_tiny.cfg
├── yolov4_tiny.data
├── yolov4_tiny.json
└── yolov4_tiny.weights

配置文件生成

数据在推理前一般会经过预处理,为了确保模型可以正确的输入数据,需要生产对应的配置文件。

config.sh yolov4_tiny

此时 yolov4_tiny 的目录结构如下:

yolov4_tiny/
├── 0.jpg
├── dataset.txt
├── yolov4_tiny.cfg
├── yolov4_tiny.data
├── yolov4_tiny_inputmeta.yml
├── yolov4_tiny.json
└── yolov4_tiny.weights

模型量化

quantize.sh yolov4_tiny uint8

此时 yolov4_tiny 的目录结构如下:

yolov4_tiny/
├── 0.jpg
├── dataset.txt
├── yolov4_tiny_asymmetric_affine.quantize
├── yolov4_tiny.cfg
├── yolov4_tiny.data
├── yolov4_tiny_inputmeta.yml
├── yolov4_tiny.json
└── yolov4_tiny.weights

模型导出

使用 export.sh 将模型导出到nbg格式并生成应用程序工程。

export.sh yolov4_tiny uint8

此时 yolov4_tiny 的目录结构如下:

yolov4_tiny/
├── 0.jpg
├── dataset.txt
├── inputs_outputs.txt
├── yolov4_tiny_asymmetric_affine.quantize
├── yolov4_tiny.data
├── yolov4_tiny_inputmeta.yml
├── yolov4_tiny.json
├── yolov4_tiny.weights
└── wksp
    └── asymmetric_affine
        ├── BUILD
        ├── dump_core_graph.json
        ├── graph.json
        ├── yolov4_tinyasymmetricaffine.2012.vcxproj
        ├── yolov4_tiny_asymmetric_affine.export.data
        ├── yolov4_tinyasymmetricaffine.vcxproj
        ├── main.c
        ├── makefile.linux
        ├── network_binary.nb
        ├── vnn_global.h
        ├── vnn_yolov4_tinyasymmetricaffine.c
        ├── vnn_yolov4_tinyasymmetricaffine.h
        ├── vnn_post_process.c
        ├── vnn_post_process.h
        ├── vnn_pre_process.c
        └── vnn_pre_process.h

使用 netrans_py python api

example.py yolov4_tiny -q uint8