Online AI Model Conversion Guide

线上 AI 模型转换简介

在本指南中,我们将引导您使用线上转换工具完成 AI 模型的转换流程。线上转换工具允许您上传模型文件,并将其转换为与 Ameba IC 兼容的格式。

注意:请登录以访问 线上转换工具

请参考下表了解当前支持的线上转换模型。

支持的模型类型

模型

基本功能

所需文件

yolov3-tiny, darknet

目标检测

.cfg, .weights

yolov4-tiny, darknet

目标检测

.cfg, .weights

yolov7-tiny, darknet

目标检测

.cfg, .weights

yolov7-tiny, pytorch

目标检测

.pt

scrfd/mobilefacenet

人脸检测与识别

.pt.onnx

yamnet

声音分类

.h5

CNN Gray/RGB

图像分类

.h5.onnx

量化图片为可选上传项,最多可上传 10 张。

对于 CNN Gray/RGB,请参考以下说明以获取正确的转换模型。

  • 训练模型时:支持的 tensorflow 版本最高为 2.14.1

../../../../_images/tensorflow_load.png
  • 保存模型时:将标志设置为"include_optimizer=False"

../../../../_images/model_save.png

AI 模型转换完成后,系统将通过电子邮件发送下载链接。

更多关于模型部署的信息,请参考 定制化 AI 模型部署指南

有关 MobileFaceNet .pt.onnx 模型转换指南,请参考 MobileFaceNet ONNX 转换 章节了解更多详情。

有关 SCRFD .pt.onnx 模型转换指南,请参考 SCRFD 转换为 ONNX 章节了解更多详情。

MobileFaceNet ONNX 转换

MobileFaceNet 是一种高效的卷积神经网络(CNN)模型,使用了超过 100 万个参数。

MobileFaceNet 用于特征提取。由于 MobileFaceNet 属于轻量级模型类型,我们可以将此面部识别系统应用于移动和嵌入式设备。

我们可以从 GitHub 下载源代码和预训练模型:

git clone https://github.com/foamliu/MobileFaceNet.git.
cd MobileFaceNet
mkdir weights
cd weights
wget https://github.com/foamliu/MobileFaceNet/releases/download/v1.0/mobilefacenet.pt

为了获得更好的性能和兼容性,开发者可以通过执行以下命令将 .pt 转换为 .onnx:

python3 convert2onnx.py

代码参考

convert2onnx.py

from mobilefacenet import MobileFaceNet
import torch
import time

if __name__ == '__main__':
    filename = 'weights/mobilefacenet.pt'
    print('loading {}...'.format(filename))
    start = time.time()
    model = MobileFaceNet()
    model.load_state_dict(torch.load(filename, map_location=torch.device('cpu')))
    print('elapsed {} sec'.format(time.time() - start))
    print(model)

    output_onnx = 'weights/MobileFaceNet.onnx'
    print("==> Exporting model to ONNX format at '{}'".format(output_onnx))
    input_names = ["input0"]
    output_names = ["output0"]
    inputs = torch.randn(1, 3, 112, 112)

    torch_out = torch.onnx._export(model, inputs, output_onnx, export_params=True, verbose=False,
                                input_names=input_names, output_names=output_names, opset_version=10)

转换后的 onnx 文件位于 weights/MobileFaceNet.onnx

SCRFD 转换为 ONNX

SCRFD 是一种高效高精度的人脸检测方法,最初在 Arxiv 上发表。

它提供了一个易于使用的流水线,配合 NAS 支持来训练高效的人脸检测器。

您可以访问 InsignFace 了解更多信息。

对于边缘计算应用,建议开发者使用 SCRFD_500M_KPS

设置 SCRFD 环境

SCRFD 的默认格式为 PyTorch,因此需要将其转换为 ONNX 格式:

cd ~/insightface/detection/scrfd
python tools/scrfd2onnx.py configs/scrfd/scrfd_500m_bnkps.py scrfd_500mkps.pt --shape 640 640

您可以在 InsignFace 中找到 tools/scrfd2onnx.py。

如果开发者遇到 Python 包依赖问题,可以尝试使用 virtualenv 创建隔离的 Python 环境,并参照我们的 requirements_scrfd.txt 来安装 Python 包。请从 requirements_scrfd 下载。

pip install -r requirements_scrfd.txt

为了向您展示如何快速转换和导出 SCRFD,我们可以从互联网下载预训练权重: scrfd.lite.ai.toolkit

请下载 scrfd_500m_bnkps_shape640x640.onnxscrfd_500m_bnkps_shape320x320.onnx 用于边缘计算应用。