# YOLOs-CPP **Repository Path**: xiaoxindeng/YOLOs-CPP ## Basic Information - **Project Name**: YOLOs-CPP - **Description**: No description available - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-19 - **Last Updated**: 2026-03-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

YOLOs-CPP

YOLOs-CPP

Production-Ready YOLO Inference Engine for C++

A blazing-fast, unified C++ inference library for the entire YOLO family

Stars Forks Release License CI

Quick Start · Features · Models · API · Benchmarks · Docs

--- ## 📰 Latest News * **[2026.01.22]** YOLOs-CPP-TensorRT released achive 530+ fps using NVIDIA GPUs and Jetson Boards. [YOLOs-CPP-TensorRT](https://github.com/Geekgineer/YOLOs-CPP-TensorRT) * **[2026.01.22]** CPP Implementation of popular MOT trackers released. [motcpp](https://github.com/Geekgineer/motcpp) * **[2026.01.22]** ROS 2 integration released. [ros2_yolos_cpp](https://github.com/Geekgineer/ros2_yolos_cpp) * **[2026.01.18]** Production-ready v1.0.0 released. [Watch video](https://www.youtube.com/watch?v=Ax5vaYJ-mVQ) * **[2025.05.15]** Classification support added. * **[2025.04.04]** [Depths-CPP](https://github.com/Geekgineer/Depths-CPP) - New project for real-time metric depth estimation. * **[2025.03.16]** Pose estimation support added. * **[2025.02.19]** YOLOv12 support for object detection. * **[2025.02.11]** Oriented bounding box (OBB) format support added. * **[2025.01.29]** YOLOv9 support for object detection. * **[2025.01.26]** Segmentation support for YOLOv9. * **[2025.01.26]** Segmentation support for YOLOv8 and YOLOv11 with quantized models. * **[2024.10.23]** Initial release v0.0.1 with object detection support. --- ## Why YOLOs-CPP? **YOLOs-CPP** is a production-grade inference engine that brings the entire YOLO ecosystem to C++. Unlike scattered implementations, YOLOs-CPP provides a **unified, consistent API** across all YOLO versions and tasks. ```cpp #include "yolos/yolos.hpp" // One API for all YOLO versions and tasks auto detector = yolos::det::YOLODetector("yolo11n.onnx", "coco.names"); auto detections = detector.detect(frame); ``` ### The Problem - **Fragmented ecosystem**: Each YOLO version has different C++ implementations - **Inconsistent APIs**: Different interfaces for detection, segmentation, pose - **Production gaps**: Most implementations lack proper error handling, testing, and optimization ### The Solution YOLOs-CPP unifies everything under one roof: | What You Get | Description | |--------------|-------------| | **Unified API** | Same interface for YOLOv5 through YOLO26 | | **All Tasks** | Detection, Segmentation, Pose, OBB, Classification | | **Battle-Tested** | 36 automated tests, CI/CD pipeline | | **Optimized** | Zero-copy preprocessing, batched NMS, GPU acceleration | | **Cross-Platform** | Linux, Windows, macOS, Docker | --- ## 🎬 Demo
Instance Segmentation
Instance Segmentation
Pose Estimation
Pose Estimation
Object Detection
Real-time Detection
Multi-Object Detection and Segmentation
Multi-Object Detection
--- ## ⚡ Quick Start ### Prerequisites | Requirement | Version | Notes | |-------------|---------|-------| | C++ Compiler | C++17 | GCC 9+, Clang 10+, MSVC 2019+ | | CMake | ≥ 3.16 | | | OpenCV | ≥ 4.5 | Core, ImgProc, HighGUI | | ONNX Runtime | ≥ 1.16 | Auto-downloaded by build script | ### Installation ```bash # Clone git clone https://github.com/Geekgineer/YOLOs-CPP.git cd YOLOs-CPP # Build (auto-downloads ONNX Runtime) ./build.sh 1.20.1 0 # CPU build ./build.sh 1.20.1 1 # GPU build (requires CUDA) # Run ./build/image_inference models/yolo11n.onnx data/dog.jpg ```
📦 Manual CMake Build ```bash # Download ONNX Runtime wget https://github.com/microsoft/onnxruntime/releases/download/v1.20.1/onnxruntime-linux-x64-1.20.1.tgz tar -xzf onnxruntime-linux-x64-1.20.1.tgz # Configure and build mkdir build && cd build cmake .. -DONNXRUNTIME_DIR=../onnxruntime-linux-x64-1.20.1 -DCMAKE_BUILD_TYPE=Release make -j$(nproc) ```
🐳 Docker ```bash # CPU docker build -f Dockerfile.cpu -t yolos-cpp:cpu . docker run --rm -it yolos-cpp:cpu # GPU (requires nvidia-docker) docker build -t yolos-cpp:gpu . docker run --gpus all --rm -it yolos-cpp:gpu ```
--- ## 🎯 Features ### Supported Models | Version | Detection | Segmentation | Pose | OBB | Classification | |---------|:---------:|:------------:|:----:|:---:|:--------------:| | YOLOv5 | ✅ | — | — | — | — | | YOLOv6 | ✅ | — | — | — | — | | YOLOv7 | ✅ | — | — | — | — | | YOLOv8 | ✅ | ✅ | ✅ | ✅ | ✅ | | YOLOv9 | ✅ | — | — | — | — | | YOLOv10 | ✅ | — | — | — | — | | YOLOv11 | ✅ | ✅ | ✅ | ✅ | ✅ | | YOLOv12 | ✅ | — | — | — | — | | **YOLO26** | ✅ | ✅ | ✅ | ✅ | ✅ | ### Core Capabilities - **🚀 High Performance**: Zero-copy preprocessing, optimized NMS, GPU acceleration - **🎯 Precision Matched**: Identical results to Ultralytics Python (validated by 36 automated tests) - **📦 Self-Contained**: No Python runtime, no external dependencies at runtime - **🔌 Easy Integration**: Header-based library, modern C++17 API - **⚙️ Flexible**: CPU/GPU, dynamic/static input shapes, configurable thresholds --- ## 📖 API Reference ### Object Detection ```cpp #include "yolos/yolos.hpp" // Initialize yolos::det::YOLODetector detector("model.onnx", "coco.names", /*gpu=*/true); // Detect cv::Mat frame = cv::imread("image.jpg"); auto detections = detector.detect(frame, /*conf=*/0.25f, /*iou=*/0.45f); // Process results for (const auto& det : detections) { std::cout << "Class: " << det.className << " Conf: " << det.confidence << " Box: " << det.box << std::endl; } // Visualize detector.drawDetections(frame, detections); ``` ### Instance Segmentation ```cpp yolos::seg::YOLOSegDetector detector("yolo11n-seg.onnx", "coco.names", true); auto segments = detector.segment(frame); detector.drawSegmentations(frame, segments, /*maskAlpha=*/0.5f); ``` ### Pose Estimation ```cpp yolos::pose::YOLOPoseDetector detector("yolo11n-pose.onnx", "", true); auto poses = detector.detect(frame); detector.drawPoses(frame, poses); ``` ### Oriented Bounding Boxes (OBB) ```cpp yolos::obb::YOLOOBBDetector detector("yolo11n-obb.onnx", "dota.names", true); auto boxes = detector.detect(frame); detector.drawOBBs(frame, boxes); ``` ### Image Classification ```cpp yolos::cls::YOLOClassifier classifier("yolo11n-cls.onnx", "imagenet.names", true); auto result = classifier.classify(frame); std::cout << "Predicted: " << result.className << " (" << result.confidence * 100 << "%)" << std::endl; ``` --- ## 📊 Benchmarks Tested on Intel i7-12700H (CPU) / NVIDIA RTX 3060 (GPU), 640×640 input: | Model | Task | Device | FPS | Latency | Memory | |-------|------|--------|----:|--------:|-------:| | YOLOv11n | Detection | CPU | 15 | 67ms | 48MB | | YOLOv11n | Detection | GPU | 97 | 10ms | 412MB | | YOLOv8n | Detection | GPU | 86 | 12ms | 398MB | | YOLO26n | Detection | GPU | 78 | 13ms | 425MB | | YOLOv11n-seg | Segmentation | GPU | 65 | 15ms | 524MB | | YOLOv11n-pose | Pose | GPU | 80 | 12ms | 445MB |
Run Your Own Benchmarks ```bash cd benchmarks ./auto_bench.sh 1.20.1 0 yolo11n,yolov8n,yolo26n ``` Results are saved to `benchmarks/results/`.
--- ## 🏗️ Architecture ``` YOLOs-CPP/ ├── include/yolos/ # Core library │ ├── core/ # Shared utilities │ │ ├── types.hpp # Detection, Segmentation result types │ │ ├── preprocessing.hpp # Letterbox, normalization │ │ ├── nms.hpp # Non-maximum suppression │ │ ├── drawing.hpp # Visualization utilities │ │ └── version.hpp # YOLO version detection │ ├── tasks/ # Task implementations │ │ ├── detection.hpp # Object detection │ │ ├── segmentation.hpp # Instance segmentation │ │ ├── pose.hpp # Pose estimation │ │ ├── obb.hpp # Oriented bounding boxes │ │ └── classification.hpp │ └── yolos.hpp # Main include (includes all) ├── src/ # Example applications ├── examples/ # Task-specific examples ├── tests/ # Automated test suite ├── benchmarks/ # Performance benchmarking └── models/ # Sample models & labels ``` --- ## 📚 Documentation | Guide | Description | |-------|-------------| | [Installation](docs/guides/getting-started.md) | System requirements, build options, troubleshooting | | [Usage Guide](docs/examples/examples.md) | API reference, code examples, best practices | | [Model Guide](docs/guides/models.md) | Supported models, ONNX export, quantization | | [Development](docs/guides/architecture.md) | Architecture, extending the library, debugging | | [Contributing](docs/contributing.md) | Code style, PR process, testing | | [Windows Setup](docs/YOLOs-CPP_on_Windows_11.md) | Windows-specific build instructions | --- ## 🧪 Testing YOLOs-CPP includes a comprehensive test suite that validates C++ inference against Ultralytics Python: ```bash cd tests ./test_all.sh # Run all tests ./test_detection.sh # Run detection tests only ``` | Task | Tests | Status | |------|------:|:------:| | Detection | 8 | ✅ | | Segmentation | 8 | ✅ | | Pose | 7 | ✅ | | OBB | 7 | ✅ | | Classification | 6 | ✅ | | **Total** | **36** | ✅ | --- ## 🤝 Contributing We welcome contributions! See our [Contributing Guide](docs/contributing.md) for details. ```bash # Fork, clone, branch git checkout -b feature/amazing-feature # Make changes, test ./tests/test_all.sh # Commit and PR git commit -m "feat: add amazing feature" git push origin feature/amazing-feature ``` --- ## 📄 License This project is licensed under the **GNU Affero General Public License v3.0 (AGPL-3.0)**. See [LICENSE](LICENSE) for details. For commercial licensing options, please contact the maintainers. --- ## 🙏 Acknowledgments YOLOs-CPP builds on the shoulders of giants: - [Ultralytics](https://github.com/ultralytics/ultralytics) — YOLO models and training - [ONNX Runtime](https://github.com/microsoft/onnxruntime) — High-performance inference - [OpenCV](https://github.com/opencv/opencv) — Computer vision primitives ---

⭐ If YOLOs-CPP helps your project, consider giving it a star!

Made with ❤️ by the YOLOs-CPP Team