icraft_modelzoo
免责声明:
- 本仓库仅作为研究、参考,若要实际使用,请务必遵守原算法工程的开源规则。
- 本仓库仅作为模型部署参考,大部分模型前后处理的迁移等运行时代码做了精度测试并与原算法做了对比,但未做全面的功能测试验证。请勿未经验证直接将本仓库代码直接用于实际项目,本仓库 不承担任何不良后果。
- 本仓库仅测试过PSIN(socket,axi)模式,其中包含的 PLIN模式代码仅适用于最初部署的icraft版本,后续需根据所用版本的参考实现工程进行迁移升级。
1.简介
1.1 模型下载
请在“模型文件”页面选取您安装icraft版本所对应的tag版本,并 参照其下README.md文件说明 配套使用,推荐您使用最新的icraft版本和模型tag版本。
使用git下载所需模型MODEL (运行以下命令时将其中MODEL和TAG分别替换为实际模型和版本名) :
# 请确保已安装lfs
git lfs install
# clone模型至本地
# 1. 可直接clone所需的TAG版本至本地
git clone -b TAG https://www.modelscope.cn/AIBS/MODEL.git
# 2. 也可将模型clone至本地后,再切换到该TAG版本
git clone https://www.modelscope.cn/AIBS/MODEL.git
cd MODEL
git checkout tags/TAG
1.2 基本介绍
本仓库主要放一些已经适配、跑通的模型。
已支持模型名单请查看:模型清单
索引中只记录了开发版本上的模型性能数据,详细的测试数据参考:benchmark
每个模型都有全流程使用说明的readme文档,里面记录了模型适配的状态。
其中状态徽章的含义:
:适配模型的作者
:精度已调优
:精度还在测试中
:精度待调优
:速度已调优
:速度可调优
:使用了ImageMake硬算子(若无此徽章,则未使用硬算子)
:仅可使用
v1或v2版本位流(若无此徽章,则可使用对应所用开发板类型的任一位流):运行模型推理程序所使用的操作系统
:对应的icraft版本
2. 使用注意
2.1 开发环境推荐
模型库默认开发系统:win10+wsl(ubuntu20.04)
-
win10用来编译转换ai模型,以及使用socket模式(上位机通过网口控制硬件平台)进行调试和精度测试
-
wsl为win10的子系统,主要用于交叉编译,远程调试等
如果您的开发系统不是这种搭配,可能需要修改:
①运行时cmakelist中交叉编译的include路径配置;(默认用的子系统挂载c盘路径)
②运行时cpp中关于系统的判断;(默认socket模式在window系统运行,axi模式在linux系统运行)如果您的上位机也是linux而不是windows系统,且想运行socket模式的话,需要修改系统判断条件,可以改成用processor判断。
2.2 关于框架导模型
在从框架导出icraft可编译的模型时,往往对源码要做一些修改。为了不改变源码,我们是在1_script文件夹的脚本里引用了一些源码,并做了部分代码替换。使用此文件夹里的脚本之前,请确保源码所有依赖都已经下载安装,能够正确跑通。如果发现脚本中存在import模块的路径问题,可以尝试将脚本复制到源码文件夹里。
3. 工程结构说明
MODEL
├── README.md
├── configuration.json
├── .gitattributes
├── .gitignore
└── MODEL_icraft # MODEL_icraft文件夹
├── MODEL源码文件 * n
├── 1_scripts # 若干脚本,用于保存Icraft编译器需要的模型、验证模型正确性等功能型导出及验证脚本
│ ├── 0_infer.py # 可以推理一张图并得到最终结果,模型原始权重会从 /weights中寻找,需要预先下载
│ ├── 1_save.py # 保存模型,保存好的用于Icraft编译器的模型,会存放在 /2_compile/fmodel
│ └── 2_save_infer.py # 用保存的模型做前向推理,验证保存的模型与原模型是否一致
├── 2_compile # 使用Icraft编译器编译模型
│ ├── config # 存放编译配置的toml文件
│ │ ├── customop # 存放customop配置的toml文件
│ │ ├── BY # 存放针对BY的编译配置toml文件
│ │ └── ZG # 存放针对ZG的编译配置toml文件
│ ├── fmodel # 用于Icraft编译器的框架模型
│ └── qtset # Icraft编译器所需的量化校准集
├── 3_deploy # 运行时工程相关文件
│ ├── CMakeLists.txt # CRT对应的CMakeList.txt,如果仅有PYRT,则无需此文件
│ ├── CMakePresets.json # CRT对应的CMakePresets.json,如果仅有PYRT,则无需此文件
│ ├── cfg # 存放运行时工程所需的配置文件
│ ├── imodel # 用Icraft编译器编译出的模型
│ ├── io # 存放运行时工程所需的输入&输出
│ │ ├── input # 存放运行时工程所需的输入文件
│ │ ├── output # 运行时工程默认的输出文件夹,仅存放.gitkeep文件
│ │ └── golden # 存放运行时工程的输出文件
│ │ ├── ftmp # 仅存放.gitkeep文件
│ │ └── result # 存放运行时工程的输出结果文件
│ ├── metrics # 存放运行时工程的时间&精度测试相关文件
│ │ ├── evaluate # 存放精度测试脚本及相应使用说明文件
│ │ └── logs # 存放运行时工程的时间&精度结果文件
│ ├── modelzoo_utils # 运行时工程依赖
│ ├── names # 运行时工程对应的类别信息(非必须)
│ ├── pyrt # Python运行时工程(PYRT)
│ └── src # C++运行时工程(CRT)
├── MODEL.yaml # 存放模型信息的yaml文件
├── weights # MODEL原始权重存放路径
├── pyproject.toml
└── uv.lock