Skip to content

a lightweight C++ cross-platform vision inference library,support YOLOv10 YOLOv11 PaddleOCR EasyOCR ,using ONNXRuntime/TVM with multiple exectuion providers.

License

Notifications You must be signed in to change notification settings

lona-cn/vision-simple

Repository files navigation

🚀 vision-simple 🚀

english | 简体中文

GitHub License GitHub Release Docker pulls GitHub Downloads (all assets, all releases)

windows x64 linux x86_64 linux arm64 linux arm64

ort cpu ort dml ort cuda ort rknpu

vision-simple 是一个基于 C++23 的跨平台视觉推理库,旨在提供 开箱即用 的推理功能。通过 Docker用户可以快速搭建推理服务。该库目前支持常见的 YOLO 系列(包括 YOLOv10 和 YOLOv11),以及部分 OCR 模型(如 PaddleOCR)。内建 HTTP API 使得服务更加便捷。此外,vision-simple 采用 ONNXRuntime 引擎,支持多种 Execution Provider,如 DirectMLCUDATensorRT,并可与特定硬件设备(如 RockChip 的 RKNPU)兼容,提供更高效的推理性能。

🚀 特性

  • 跨平台:支持windows/x64linux/x86_64linux/arm64/v8linux/riscv64
  • 多计算设备:支持CPU、GPU、RKNPU
  • 嵌入式设备:目前已支持rk3568rv1106G3(Luckfox Pico 1T算力版本)
  • 小体积:静态编译版本体积不到20MiB,推理YOLO和OCR占用300MiB内存
  • 快速部署
    • 一键编译:提供各个平台已验证的编译脚本
    • 容器部署:使用dockerpodmancontainerd一键部署
    • HTTP服务:提供HTTP API供Web应用调用

yolov11n 3440x1440@60fps+

hd2-yolo-gif

OCR(HTTP API)

http-inferocr

🚀 部署使用

docker部署HTTP服务

  1. 启动server项目:
docker run -it --rm --name vs -p 11451:11451 lonacn/vision_simple:0.4.0-cpu-x86_64
  1. 打开swagger在线编辑器,并允许该网站的不安全内容
  2. 复制doc/openapi/server.yaml的内容到swagger在线编辑器
  3. 在编辑器右侧选择感兴趣的API进行测试: swagger-right

🚀 快速开始

开发YOLOv11推理

#include <Infer.h>
#include <opencv2/opencv.hpp>
using namespace vision_simple;
template <typename T>
struct DataBuffer
{
    std::unique_ptr<T[]> data;
    size_t size;
    std::span<T> span(){return std::span{data.get(), size};}
};

extern std::expected<DataBuffer<uint8_t>, InferError> ReadAll(const std::string& path);

int main(int argc,char *argv[]){
    auto data = ReadAll("assets/hd2-yolo11n-fp32.onnx");
    auto image = cv::imread("assets/hd2.png");
    auto ctx = InferContext::Create(InferFramework::kONNXRUNTIME, InferEP::kDML);
    auto infer_yolo = InferYOLO::Create(**ctx, data->span(), YOLOVersion::kV11);
    auto result = infer_yolo->get()->Run(image, 0.625);
    // do what u want
    return 0;
}

构建项目

windows/x64

  • xmake >= 2.9.7
  • msvc with c++23
  • windows 11
# setup sln
./scripts/setupdev-vs.bat
# test
xmake build test_yolo
xmake run test_yolo

linux/x86_64

  • xmake >= 2.9.7
  • gcc-13
  • debian12/ubuntu2022
# build release
./scripts/build-release.sh
# test
xmake build test_yolo
xmake run test_yolo

docker镜像

所有Dockerfile位于目录:docker/

# 处于vision-simple根目录
# 构建项目
docker build -t vision-simple:latest -f  docker/Dockerfile.debian-bookworm-x86_64-cpu .
# 运行容器,默认配置会使用CPU推理并监听11451端口
docker run -it --rm -p 11451:11451 --name vs vision-simple

🚀 联系方式

Discord

📄 许可证

项目内的YOLO模型和PaddleOCR模型版权归原项目所有

本项目使用Apache-2.0许可证

About

a lightweight C++ cross-platform vision inference library,support YOLOv10 YOLOv11 PaddleOCR EasyOCR ,using ONNXRuntime/TVM with multiple exectuion providers.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published