小众AI

Lite.Ai.ToolKit
Lite.Ai.ToolKit - 一个轻量级的 C++ 工具包
一个轻量级的 C++ 工具包,包含 100+ 个很棒的 AI 模型,例如对象检测、人脸检测、人脸识别、分割、遮罩等。请参阅 Model Zoo 和 ONNX Hub、MNN Hub、TNN Hub、NCNN Hub。
  代码仓

🛠Lite.Ai.ToolKit:一个轻量级的 C++ 工具包,包含 100+ 个很棒的 AI 模型,例如对象检测人脸检测人脸识别分割遮罩等。请参阅 Model ZooONNX HubMNN HubTNN HubNCNN Hub

主要功能

  • **简单且用户友好。**简单一致的语法,如 lite::cv::Type::Class,参见示例
  • **最小依赖项。**默认情况下只需要 OpenCVONNXRuntime,详见 build
  • 支持多种型号。 **300+**C++ 实现和 500+ 权重 👉 Supported-Matrix

快速开始 🌟🌟

示例 0:使用 YOLOv5 进行对象检测。从 Model-Zoo 下载模型^2^.

#include "lite/lite.h"

int main(int argc, char *argv[]) {
  std::string onnx_path = "yolov5s.onnx";
  std::string test_img_path = "test_yolov5.jpg";
  std::string save_img_path = "test_results.jpg";

  auto *yolov5 = new lite::cv::detection::YoloV5(onnx_path); 
  std::vector<lite::types::Boxf> detected_boxes;
  cv::Mat img_bgr = cv::imread(test_img_path);
  yolov5->detect(img_bgr, detected_boxes);
  
  lite::utils::draw_boxes_inplace(img_bgr, detected_boxes);
  cv::imwrite(save_img_path, img_bgr);  
  delete yolov5;
  return 0;
}

您可以从 tag/v0.2.0 下载预构建的 lite.ai.tooklit 库和测试资源。

export LITE_AI_TAG_URL=https://github.com/DefTruth/lite.ai.toolkit/releases/download/v0.2.0
wget ${LITE_AI_TAG_URL}/lite-ort1.17.1+ocv4.9.0+ffmpeg4.2.2-linux-x86_64.tgz
wget ${LITE_AI_TAG_URL}/yolov5s.onnx && wget ${LITE_AI_TAG_URL}/test_yolov5.jpg

🎉🎉TensorRT :通过 TensorRT 使用 NVIDIA GPU 提高推理性能。

运行以构建支持 TensorRT 的 lite.ai.toolkit,然后使用下面的代码测试 yolov5 。注意: lite.ai.toolkit 需要 TensorRT 10.x(或更高版本)和 CUDA 12.x(或更高版本)。有关更多详细信息,请查看 build.sh 、 tensorrt-linux-x86_64-install.zh.md 、 test_lite_yolov5.cpp 和 NVIDIA/TensorRT 。bash ./build.sh tensorrt

// trtexec --onnx=yolov5s.onnx --saveEngine=yolov5s.engine
auto *yolov5 = new lite::trt::cv::detection::YOLOV5(engine_path);

快速设置 👀

要快速设置,您可以按照下面列出的方法进行操作。👇👀lite.ai.toolkitCMakeLists.txt

set(lite.ai.toolkit_DIR YOUR-PATH-TO-LITE-INSTALL)
find_package(lite.ai.toolkit REQUIRED PATHS ${lite.ai.toolkit_DIR})
add_executable(lite_yolov5 test_lite_yolov5.cpp)
target_link_libraries(lite_yolov5 ${lite.ai.toolkit_LIBS})

与 MNN 或 ONNXRuntime 👇👇 混合

lite.ai.toolkit 的目标不是在 MNN 和 ONNXRuntime 之上抽象。因此,您可以将 lite.ai.toolkit 与 MNN() 或 ONNXRuntime() 混合使用。lite.ai.toolkit 安装包包含完整的 MNN 和 ONNXRuntime。工作流可能如下所示:-DENABLE_MNN=ON, default OFF-DENABLE_ONNXRUNTIME=ON, default ON

#include "lite/lite.h"
// 0. use yolov5 from lite.ai.toolkit to detect objs.
auto *yolov5 = new lite::cv::detection::YoloV5(onnx_path);
// 1. use OnnxRuntime or MNN to implement your own classfier.
interpreter = std::shared_ptr<MNN::Interpreter>(MNN::Interpreter::createFromFile(mnn_path));
// or: session = new Ort::Session(ort_env, onnx_path, session_options);
classfier = interpreter->createSession(schedule_config);
// 2. then, classify the detected objs use your own classfier ...

MNN 和 ONNXRuntime 包含的标头可以在 mnn_config.hort_config.h 中找到。

  • 🔑️ 查看详细的 Quick Start!单击此处!

下载资源

您可以从 tag/v0.2.0 下载预构建的 lite.ai.tooklit 库和测试资源。

export LITE_AI_TAG_URL=https://github.com/DefTruth/lite.ai.toolkit/releases/download/v0.2.0
wget ${LITE_AI_TAG_URL}/lite-ort1.17.1+ocv4.9.0+ffmpeg4.2.2-linux-x86_64.tgz
wget ${LITE_AI_TAG_URL}/yolov5s.onnx && wget ${LITE_AI_TAG_URL}/test_yolov5.jpg
tar -zxvf lite-ort1.17.1+ocv4.9.0+ffmpeg4.2.2-linux-x86_64.tgz

编写测试代码

编写 YOLOv5 示例代码并命名:test_lite_yolov5.cpp

#include "lite/lite.h"

int main(int argc, char *argv[]) {
  std::string onnx_path = "yolov5s.onnx";
  std::string test_img_path = "test_yolov5.jpg";
  std::string save_img_path = "test_results.jpg";

  auto *yolov5 = new lite::cv::detection::YoloV5(onnx_path); 
  std::vector<lite::types::Boxf> detected_boxes;
  cv::Mat img_bgr = cv::imread(test_img_path);
  yolov5->detect(img_bgr, detected_boxes);
  
  lite::utils::draw_boxes_inplace(img_bgr, detected_boxes);
  cv::imwrite(save_img_path, img_bgr);  
  delete yolov5;
  return 0;
}

设置 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(lite_yolov5)
set(CMAKE_CXX_STANDARD 17)

set(lite.ai.toolkit_DIR YOUR-PATH-TO-LITE-INSTALL)
find_package(lite.ai.toolkit REQUIRED PATHS ${lite.ai.toolkit_DIR})
if (lite.ai.toolkit_Found)
    message(STATUS "lite.ai.toolkit_INCLUDE_DIRS: ${lite.ai.toolkit_INCLUDE_DIRS}")
    message(STATUS "        lite.ai.toolkit_LIBS: ${lite.ai.toolkit_LIBS}")
    message(STATUS "   lite.ai.toolkit_LIBS_DIRS: ${lite.ai.toolkit_LIBS_DIRS}")
endif()
add_executable(lite_yolov5 test_lite_yolov5.cpp)
target_link_libraries(lite_yolov5 ${lite.ai.toolkit_LIBS})

构建示例

mkdir build && cd build && cmake .. && make -j1

然后,将 中列出的 lib 路径导出到 .LD_LIBRARY_PATHlite.ai.toolkit_LIBS_DIRS

export LD_LIBRARY_PATH=YOUR-PATH-TO-LITE-INSTALL/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=YOUR-PATH-TO-LITE-INSTALL/third_party/opencv/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=YOUR-PATH-TO-LITE-INSTALL/third_party/onnxruntime/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=YOUR-PATH-TO-LITE-INSTALL/third_party/MNN/lib:$LD_LIBRARY_PATH # if -DENABLE_MNN=ON

运行 binary:

cp ../yolov5s.onnx ../test_yolov.jpg .
./lite_yolov5

输出日志:

LITEORT_DEBUG LogId: ../examples/hub/onnx/cv/yolov5s.onnx
=============== Input-Dims ==============
Name: images
Dims: 1
Dims: 3
Dims: 640
Dims: 640
=============== Output-Dims ==============
Output: 0 Name: pred Dim: 0 :1
Output: 0 Name: pred Dim: 1 :25200
Output: 0 Name: pred Dim: 2 :85
Output: 1 Name: output2 Dim: 0 :1
......
Output: 3 Name: output4 Dim: 1 :3
Output: 3 Name: output4 Dim: 2 :20
Output: 3 Name: output4 Dim: 3 :20
Output: 3 Name: output4 Dim: 4 :85
========================================
detected num_anchors: 25200
generate_bboxes num: 48

支持的模型矩阵

  • / = 现在不支持。
  • ✅ = 已知工作和官方支持。
  • ✔️ = 已知工作,但现在支持非官方。
  • ❔ = 在我的计划中,但不会很快出现,也许几个月后。

NVIDIA GPU 推理:TensorRT

系统 发动机
YOLOv5 YOLOv6 YOLOv8 YOLOv8Face YOLOv5人脸 Linux的 TensorRT
YOLOX YOLOv5BlazeFace 稳定扩散 / / Linux的 TensorRT

CPU 推理:ONNXRuntime、MNN、NCNN 和 TNN

大小 类型 演示 ONNXRuntime MNN NCNN TNN Linux的 macOS 版 窗户 人造人
YoloV5 28 分钟 检波 演示 ✔️ ✔️
YoloV3 236 分钟 检波 演示 / / / ✔️ ✔️ /
TinyYoloV3 33 分钟 检波 演示 / / / ✔️ ✔️ /
YoloV4 176 分钟 检波 演示 / / / ✔️ ✔️ /
固态硬盘 76 分钟 检波 演示 / / / ✔️ ✔️ /
SSDMobileNetV1 27 分钟 检波 演示 / / / ✔️ ✔️ /
YoloX 3.5 分钟 检波 演示 ✔️ ✔️
TinyYoloV4VOC 22 分钟 检波 演示 / / / ✔️ ✔️ /
TinyYoloV4COCO 22 分钟 检波 演示 / / / ✔️ ✔️ /
约洛 39 分钟 检波 演示 ✔️ ✔️
缩放的 YoloV4 270 分钟 检波 演示 / / / ✔️ ✔️ /
EfficientDet 15 分钟 检波 演示 / / / ✔️ ✔️ /
EfficientDetD7 220 分钟 检波 演示 / / / ✔️ ✔️ /
EfficientDetD8 322 米 检波 演示 / / / ✔️ ✔️ /
约洛普 30 分钟 检波 演示 ✔️ ✔️
纳米手套 1.1 米 检波 演示 ✔️ ✔️
NanoDetPlus 纳米防爆 4.5 分钟 检波 演示 ✔️ ✔️
纳米检测效率 12 分钟 检波 演示 ✔️ ✔️
YoloX_V_0_1_1 3.5 分钟 检波 演示 ✔️ ✔️
YoloV5_V_6_0 7.5 分钟 检波 演示 ✔️ ✔️
GlintArcFace 92 分钟 面 ID 演示 ✔️ ✔️
GlintCosFace 92 分钟 面 ID 演示 ✔️ ✔️ /
格林特部分FC 170 分钟 面 ID 演示 ✔️ ✔️ /
FaceNet 89 分钟 面 ID 演示 ✔️ ✔️ /
FocalArcFace 166 分钟 面 ID 演示 ✔️ ✔️ /
FocalAsiaArcFace 166 分钟 面 ID 演示 ✔️ ✔️ /
腾讯课程Face 249 分钟 面 ID 演示 ✔️ ✔️ /
腾讯CifpFace 130 分钟 面 ID 演示 ✔️ ✔️ /
CenterLossFace 280 分钟 面 ID 演示 ✔️ ✔️ /
SphereFace (球面) 80 分钟 面 ID 演示 ✔️ ✔️ /
姿势稳健面 92 分钟 面 ID 演示 / / / ✔️ ✔️ /
NaivePoseRobustFace (朴素姿势健壮脸) 43 分钟 面 ID 演示 / / / ✔️ ✔️ /
移动人脸网 3.8 中 面 ID 演示 ✔️ ✔️
CavaGhostArcFace (卡瓦鬼弧人脸) 15 分钟 面 ID 演示 ✔️ ✔️
CavaCombinedFace 250 分钟 面 ID 演示 ✔️ ✔️ /
MobileSEFocalFace 4.5 分钟 面 ID 演示 ✔️ ✔️
RobustVideoMatting 14 分钟 消 光 演示 / ✔️ ✔️
MGMatting 美爵 113 分钟 消 光 演示 / ✔️ ✔️ /
MODNet 24 分钟 消 光 演示 ✔️ ✔️ /
MODNetDyn 24 分钟 消 光 演示 / / / ✔️ ✔️ /
背景榫椴 V2 20 分钟 消 光 演示 / ✔️ ✔️ /
背景MattingV2Dyn 20 分钟 消 光 演示 / / / ✔️ ✔️ /
UltraFace 超脸 1.1 米 脸部::d etect 演示 ✔️ ✔️
RetinaFace 1.6 米 脸部::d etect 演示 ✔️ ✔️
FaceBoxes 面板 3.8 中 脸部::d etect 演示 ✔️ ✔️
面盒V2 3.8 中 脸部::d etect 演示 ✔️ ✔️
SCRFD 2.5 米 脸部::d etect 演示 ✔️ ✔️
YOLO5Face 4.8 分钟 脸部::d etect 演示 ✔️ ✔️
PFLD 系列 1.0 米 face::align 演示 ✔️ ✔️
PFLD98 4.8 分钟 face::align 演示 ✔️ ✔️
移动网络V268 9.4 分钟 face::align 演示 ✔️ ✔️
移动网络V2SE68 11 分钟 face::align 演示 ✔️ ✔️
PFLD68 2.8 米 face::align 演示 ✔️ ✔️
人脸地标1000 2.0 米 face::align 演示 ✔️ ✔️
PIPNet98 的 44.0 分钟 face::align 演示 ✔️ ✔️
PIPNet68 44.0 分钟 face::align 演示 ✔️ ✔️
管道网29 44.0 分钟 face::align 演示 ✔️ ✔️
PIPNet19 44.0 分钟 face::align 演示 ✔️ ✔️
FSANet 1.2 米 脸部::p 演示 / ✔️ ✔️
年龄GoogleNet 23 分钟 face::attr 演示 ✔️ ✔️
性别GoogleNet 23 分钟 face::attr 演示 ✔️ ✔️
EmotionFerPlus 33 分钟 face::attr 演示 ✔️ ✔️
VGG16年龄 514 米 face::attr 演示 ✔️ ✔️ /
VGG16性别 512 米 face::attr 演示 ✔️ ✔️ /
SSRNet 190K face::attr 演示 / ✔️ ✔️
EfficientEmotion7 15 分钟 face::attr 演示 ✔️ ✔️
EfficientEmotion8 15 分钟 face::attr 演示 ✔️ ✔️
移动情感7 13 分钟 face::attr 演示 ✔️ ✔️
ReXNetEmotion7 30 分钟 face::attr 演示 / ✔️ ✔️ /
高效 NetLite4 49 分钟 分类 演示 / ✔️ ✔️ /
ShuffleNetV2 8.7 分钟 分类 演示 ✔️ ✔️
密集网121 30.7 分钟 分类 演示 ✔️ ✔️ /
幽灵网 20 分钟 分类 演示 ✔️ ✔️
HdrDNet 13 分钟 分类 演示 ✔️ ✔️
IBNNet 97 分钟 分类 演示 ✔️ ✔️ /
移动网络V2 13 分钟 分类 演示 ✔️ ✔️
ResNet 公司 44 分钟 分类 演示 ✔️ ✔️ /
ResNeXt 95 分钟 分类 演示 ✔️ ✔️ /
深度实验室V3ResNet101 232 分钟 分割 演示 ✔️ ✔️ /
FCNResNet101 207 分钟 分割 演示 ✔️ ✔️ /
FastStyleTransfer 6.4 分钟 风格 演示 ✔️ ✔️
着色器 123 分钟 着色 演示 / ✔️ ✔️ /
子像素CNN 234K 分辨率 演示 / ✔️ ✔️
子像素CNN 234K 分辨率 演示 / ✔️ ✔️
昆虫检测 27 分钟 检波 演示 / ✔️ ✔️
昆虫识别 22 分钟 分类 演示 ✔️ ✔️ ✔️
植物 ID 30 分钟 分类 演示 ✔️ ✔️ ✔️
YOLOv5BlazeFace 3.4 分钟 脸部::d etect 演示 / / ✔️ ✔️
YoloV5_V_6_1 7.5 分钟 检波 演示 / / ✔️ ✔️
HeadSeg 31 分钟 分割 演示 / ✔️ ✔️
FemalePhoto2卡通 15 分钟 风格 演示 / ✔️ ✔️
FastPortraitSeg 400 千米 分割 演示 / / ✔️ ✔️
肖像SegSINet 380 千米 分割 演示 / / ✔️ ✔️
肖像SegExtremeC3Net 180k 分割 演示 / / ✔️ ✔️
FaceHairSeg 18 分钟 分割 演示 / / ✔️ ✔️
HairSeg (头发赛格) 18 分钟 分割 演示 / / ✔️ ✔️
MobileHumanMatting 移动人体垫 3M 公司 消 光 演示 / / ✔️ ✔️
移动发型隔离 14 分钟 分割 演示 / / ✔️ ✔️
YOLOv6 17 分钟 检波 演示 ✔️ ✔️
FaceParsingBiSeNet 50 分钟 分割 演示 ✔️ ✔️
FaceParsingBiSeNetDyn 50 分钟 分割 演示 / / / / ✔️

更多...


open-webui
功能强大、用户友好的自托管 AI 平台,支持完全离线运行。它集成了多种大型语言模型运行器,如 Ollama 和 OpenAI 兼容的 API,支持网页搜索、本地 RAG 集成、权限管理、适配移动端、Markdown 和 LaTeX 等功能。
aisuite
`aisuite`使开发人员能够通过标准化接口轻松使用多个 LLM。使用类似于 OpenAI 的界面,可以轻松地与最流行的 LLM 进行交互并比较结果。它是 python 客户端库的精简包装器,允许创建者无缝交换和测试来自不同 LLM 提供程序的响应,而无需更改其代码。如今,该库主要专注于聊天完成。我们将在不久的将来将其扩展到更多使用案例。
exo
够利用日常家用设备(如手机、笔记本电脑、台式机等)来搭建家庭 AI 集群。它通过整合现有的设备,无需昂贵硬件,即可构建一个低成本、可扩展的 GPU 计算集群,支持动态模型分区、自动发现设备、ChatGPT API、P2P 连接和多种推理引擎。