english | 简体中文
vision-simple
是一个基于 C++23 的跨平台视觉推理库,旨在提供 开箱即用 的推理功能。通过 Docker用户可以快速搭建推理服务。该库目前支持常见的 YOLO 系列(包括 YOLOv10 和 YOLOv11),以及部分 OCR 模型(如 PaddleOCR
)。内建 HTTP API 使得服务更加便捷。此外,vision-simple
采用 ONNXRuntime
引擎,支持多种 Execution Provider,如 DirectML
、CUDA
、TensorRT
,并可与特定硬件设备(如 RockChip 的 RKNPU)兼容,提供更高效的推理性能。
- 跨平台:支持
windows/x64
、linux/x86_64
、linux/arm64/v8
、linux/riscv64
- 多计算设备:支持CPU、GPU、RKNPU
- 嵌入式设备:目前已支持
rk3568
、rv1106G3
(Luckfox Pico 1T算力版本) - 小体积:静态编译版本体积不到20MiB,推理YOLO和OCR占用300MiB内存
- 快速部署:
- 启动server项目:
docker run -it --rm --name vs -p 11451:11451 lonacn/vision_simple:0.4.0-cpu-x86_64
- 打开swagger在线编辑器,并允许该网站的不安全内容
- 复制doc/openapi/server.yaml的内容到
swagger在线编辑器
- 在编辑器右侧选择感兴趣的API进行测试:
#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;
}
- 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
- xmake >= 2.9.7
- gcc-13
- debian12/ubuntu2022
# build release
./scripts/build-release.sh
# test
xmake build test_yolo
xmake run test_yolo
所有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
项目内的YOLO模型和PaddleOCR模型版权归原项目所有
本项目使用Apache-2.0许可证