ai.deploy.box
纯C++深层学习推理工具箱,一套代码支持MNN/NCNN/ONNX等15+种后端无缝切换
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
纯C++深层学习推理工具箱,一套代码支持MNN/NCNN/ONNX等15+种后端无缝切换
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你训练好了一个 YOLOv8 目标检测模型,现在想把它部署到边缘设备上——你需要在服务器端写 Python 推理代码,面对 ONNX Runtime;要部署到移动端,又要换成 MNN 或 NCNN;想在 Web 端跑,还要搞 WebAssembly 编译。每次切换平台,都得重新写一套接口、重新适配模型格式。
AiDB(ai.deploy.box) 正是为了解决这个痛点而生。它是一个纯 C++ 实现的深层学习模型部署工具箱,将业界主流推理框架抽象为统一接口,让开发者只需写一套代码,即可在 MNN、NCNN、ONNX Runtime、TNN、PaddleLite 等多个后端之间无缝切换。
该仓库于 2022 年左右由个人开发者 TalkUHulk 创建并持续维护,至今已收获 539 Stars,支持超过 15 种模型架构(涵盖目标检测、人脸识别、OCR、图像分割、GAN 生成等主流任务),是中文 AI 开源社区中少见的底层工程化佳作。
AiDB 的核心设计哲学是「一次编写,多端部署」。它将不同推理框架的 API 封装为统一的 C++ 类,开发者只需调用相同的接口,后端可以自由切换:
// 伪代码示例:使用 AiDB 加载任意后端的模型
#include "ai_deploy_box.h"
int main() {
AIDB model("yolov8n.mnn"); // MNN 后端
// 切换为 ONNX:仅需替换模型文件
std::vector<DetResult> results = model.detect(image);
return 0;
}
这一设计将「选择推理框架」的成本从 O(N×M) 降到 O(N+M),其中 N 为模型数量、M 为部署平台数量。
AiDB 支持的模型涵盖当前 AI 应用的主流场景:
| 类别 | 支持模型 | 典型应用 |
|---|---|---|
| 目标检测 | YOLOX、YOLOv7、YOLOv8 | 工业质检、自动驾驶感知 |
| 人脸检测 | SCRFD | 人脸门禁、考勤系统 |
| 图像分割 | MobileSAM | 医学影像、遥感分析 |
| OCR | PaddleOCR 系列 | 文档数字化、票据识别 |
| 图像生成 | Stable Diffusion、GAN(LoRA/ControlNet) | AI 绘画、风格迁移 |
| 视觉骨干 | MobileViT | 移动端图像分类 |
凭借纯 C++ 实现和 CMake 构建系统,AiDB 支持以下平台:
对于习惯 Python 生态的开发者,项目还提供了 pyAiDB 包装层,可以从 Python 直接调用 C++ 底层,享受 Python 的便利性与 C++ 的性能:
import pyAiDB
model = pyAiDB.YOLOv8("yolov8n.mnn")
results = model.detect("test.jpg")
AiDB 采用典型的分层架构:
┌─────────────────────────────────────┐
│ Python API (pyAiDB) │
├─────────────────────────────────────┤
│ Unified C++ Interface Layer │
│ (AIDBBox / AIDBDet / AIDBSeg ...) │
├─────────────────────────────────────┤
│ Backend Dispatcher │
├──────────┬──────────┬───────────────┤
│ MNN │ NCNN │ ONNX Runtime │
├──────────┴──────────┴───────────────┤
│ CUDA / CPU / OpenCL / Vulkan │
└─────────────────────────────────────┘
核心代码位于 source/ 目录,按功能模块组织:
source/deploy/:核心推理框架抽象source/utility/:通用工具(图像预处理、NMS、坐标变换)source/model/:特定模型架构实现(YOLO、SCRFD、OCR 等)source/backend/:各推理框架的适配器# Ubuntu 22.04 示例
sudo apt update && sudo apt install -y \
build-essential cmake git wget unzip \
libopencv-dev libncnn-dev libmnn-dev
# 安装 CUDA(GPU 推理必需)
wget https://developer.download.nvidia.com/compute/cuda/11.8/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
git clone https://github.com/TalkUHulk/ai.deploy.box.git
cd ai.deploy.box
mkdir build && cd build
cmake .. -DMNN_BUILD=ON -DNCNN_BUILD=ON -DONNXRUNTIME=ON
make -j$(nproc)
编译产物为静态/动态链接库(libai_deploy_box.so 或 .a),可集成到自有项目中。
AiDB 代表了 AI 部署工具链的一个发展趋势——推理框架抽象层。随着 Edge AI 场景增多,从云端训练到边缘推理的全链路工具变得越发重要。AiDB 在中文社区填补了这一空白,让没有深厚底层优化经验的开发者也能快速将模型部署到各类平台。
同时,支持 WebAssembly 意味着浏览器内运行 AI 推理成为可能,这在隐私敏感场景(无需上传图片到服务器)和离线场景中具有独特价值。
AiDB 是一款面向 AI 应用开发者 的 C++ 模型部署工具箱,其核心价值在于将多个推理框架(MNN/NCNN/ONNX/TNN/PaddleLite)的接口统一,降低多平台部署的复杂度。它不适合 AI 算法研究者(直接用 PyTorch 更高效),但对于需要将模型落地到实际产品的工程团队,是一个值得关注的选项。
适合场景:边缘 AI 产品原型验证、移动端/嵌入式 AI 应用、Web 端 AI 推理(WebAssembly)、工业级 AI 部署。
不适合场景:需要最新 SOTA 模型支持、需要快速实验迭代、需要完善文档和社区支持。
本报告基于项目元数据(PIFS 记录)、公开描述及领域知识生成。由于仓库目前无法通过标准网络方式访问,建议使用前通过搜索引擎确认仓库最新状态。