当前位置: 首页 > news >正文

【git-hub项目:YOLOs-CPP】本地实现01:项目构建

目录

写在前面

项目介绍

最新发布说明

Segmentation示例

功能特点

依赖项

安装

克隆代码仓库

配置

构建项目



写在前面

前面刚刚实现的系列文章:
【Windows/C++/yolo开发部署01】
【Windows/C++/yolo开发部署02】
【Windows/C++/yolo开发部署03】
【Windows/C++/yolo开发部署04】
【Windows/C++/yolo开发部署05】

必须用nividia显卡的电脑,才能运行最终生成的exe。但是,我想只用cpu实现实例分割,怎么办呢?我们今天来尝试这个项目:

Geekgineer/YOLOs-CPP

项目介绍

YOLOs-CPP 提供了单一的 C++ 头文件,具有高性能的应用程序,旨在使用来自 Ultralytics 的各种 YOLO(You Only Look Once)模型进行实时目标检测和分割。借助 ONNX Runtime 和 OpenCV 的强大功能,该项目为图像、视频和实时摄像头推理提供了无缝集成的统一 YOLOv(5,7,8,10,11) 实现。无论您是为研究、生产还是爱好者项目开发,该应用程序都提供了灵活性和高效性。

最新发布说明

[2025.01.26] 🔥🔥🔥 YOLOS-CPP 现在提供 YOLOv8 和 YOLOv11 的分割头文件,以及量化模型。

[2024.10.23] 🚀🚀🚀 YOLOS-CPP 项目启动,支持检测头文件。

Segmentation示例


// Include necessary headers
#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>// Include the YOLOv11 Segmentation header
#include "YOLO11Seg.hpp"int main()
{// Configuration parametersconst std::string labelsPath = "../models/coco.names";       // Path to class labelsconst std::string modelPath  = "../models/yolo11n-seg.onnx";     // Path to YOLO11 modelconst std::string imagePath  = "../data/dogs.jpg";           // Path to input imagebool isGPU = true;                                           // Set to false for CPU processing// Initialize the YOLO11 segmentorYOLOv11SegDetector segmentor(modelPath, labelsPath, isGPU);// Load an imagecv::Mat image = cv::imread(imagePath);// Perform object segmentation to get segmentation masks and bboxsstd::vector<Segmentation> results = detector.segment(img, 0.2f, 0.45f);// Draw bounding boxes on the imagesegmentor.drawSegmentations(image, results);          // Masks only// segmentor.drawSegmentationsAndBoxes(image, results); // Masks and Detections// Display the annotated imagecv::imshow("YOLO11 Segmentation and Detections", image);cv::waitKey(0); // Wait indefinitely until a key is pressedreturn 0;
}

注意:有关更多用法,请查看以下源文件:image_inference.cpp

功能特点

  • 多种 YOLO 模型支持:支持 YOLOv5、YOLOv7、YOLOv8、YOLOv10 和 YOLOv11,包括标准和量化后的 ONNX 模型,以满足不同应用场景的需求。

  • ONNX Runtime 集成:利用 ONNX Runtime 在 CPU 和 GPU 上进行优化推理,确保高性能。

  • 动态形状处理:能够自动适应不同的输入尺寸,从而提高通用性。

  • 图优化:通过使用 ORT_ENABLE_ALL 进行模型优化来提升性能。

  • 执行提供者:配置会话以支持 CPU 或 GPU(例如,使用 CUDAExecutionProvider 支持 GPU)。

  • 输入/输出形状管理:根据模型规范管理动态输入张量形状。

  • 优化的内存分配:利用 Ort::MemoryInfo 在张量创建期间进行高效的内存管理。

  • 批处理:支持处理多张图像,目前主要关注单图像输入。

  • 输出张量提取:动态提取输出张量,以便灵活处理结果。

  • OpenCV 集成:使用 OpenCV 进行图像处理以及绘制边界框和标签(注意:不使用 cv::dnn 模块)。

  • 实时推理:能够即时处理图像、视频和实时摄像头数据。

  • 高效的检测处理:采用非极大值抑制(NMS)进行有效处理(注意:某些模型不使用 NMS,例如 YOLOv10)。

  • 跨平台支持:完全兼容 Linux、macOS 和 Windows 环境。

  • 易于使用的脚本:包含用于简单构建和运行不同推理模式的 shell 脚本。

依赖项

在构建项目之前,请确保您的系统已安装以下依赖项:

  • C++ 编译器:兼容 C++14 标准(例如,g++、clang++ 或 MSVC)。

  • CMake:3.0.0 或更高版本。

  • OpenCV:4.5.5 或更高版本。

  • ONNX Runti

相关文章:

【git-hub项目:YOLOs-CPP】本地实现01:项目构建

目录 写在前面 项目介绍 最新发布说明 Segmentation示例 功能特点 依赖项 安装 克隆代码仓库 配置 构建项目 写在前面 前面刚刚实现的系列文章: 【Windows/C++/yolo开发部署01】 【Windows/C++/yolo开发部署02】 【Windows/C++/yolo开发部署03】 【Windows/C++/yolo…...

250213-RHEL8.8-外接SSD固态硬盘

It seems that the exfat-utils package is still unavailable, even after enabling the RPM Fusion repository. This could happen if the repository metadata hasn’t been updated or if the package isn’t directly available in the RPM Fusion repository for RHEL 8…...

如何本地部署DeepSeek?

DeepSeek&#xff1a;智能时代的得力助手 在人工智能技术飞速发展的今天&#xff0c;DeepSeek 作为一款由国内顶尖团队研发的 AI 工具&#xff0c;凭借其卓越的性能和丰富的功能&#xff0c;逐渐在众多同类产品中脱颖而出&#xff0c;成为众多用户在工作和学习中的得力助手。 …...

leetcode:627. 变更性别(SQL解法)

难度&#xff1a;简单 SQL Schema > Pandas Schema > Salary 表&#xff1a; ----------------------- | Column Name | Type | ----------------------- | id | int | | name | varchar | | sex | ENUM | | salary | int …...

51单片机(国信长天)矩阵键盘的基本操作

在CT107D单片机综合训练平台上&#xff0c;首先将J5处的跳帽接到1~2引脚&#xff0c;使按键S4~S19按键组成4X4的矩阵键盘。在扫描按键的过程中&#xff0c;发现有按键触发信号后(不做去抖动)&#xff0c;待按键松开后&#xff0c;在数码管的第一位显示相应的数字:从左至右&…...

封装一个sqlite3动态库

作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、项目案例 二…...

Transformer以及BERT阅读参考博文

Transformer以及BERT阅读参考博文 Transformer学习&#xff1a; 已有博主的讲解特别好了&#xff1a; 李沐&#xff1a;Transformer论文逐段精读【论文精读】_哔哩哔哩_bilibili知乎&#xff1a;Transformer模型详解&#xff08;图解最完整版&#xff09; - 知乎 个人杂想&…...

AI学习记录 - 最简单的专家模型 MOE

代码 import torch import torch.nn as nn import torch.nn.functional as F from typing import Tupleclass BasicExpert(nn.Module):# 一个 Expert 可以是一个最简单的&#xff0c; linear 层即可# 也可以是 MLP 层# 也可以是 更复杂的 MLP 层&#xff08;active function 设…...

急停信号的含义

前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任软件经理&#xff0c;从事C#上位机软件开发8年以上&#xff01;我们在开发C#的运动控制程序的时候&#xff0c;一个必要的步骤就是确认设备按钮的急停…...

单调队列queue

1.单调队列&#xff08;Monotonic Queue&#xff09; 单调队列是一种特殊的队列&#xff0c;它的元素按照单调性&#xff08;递增或递减&#xff09;的顺序排列。简单来说&#xff0c;单调队列会维护一个元素单调递增或递减的顺序&#xff0c;在队列中元素会根据当前队列的元素…...

【漫话机器学习系列】091.置信区间(Confidence Intervals)

置信区间&#xff08;Confidence Intervals&#xff09;详解 1. 引言 在统计学和数据分析中&#xff0c;我们通常希望通过样本数据来估计总体参数。然而&#xff0c;由于抽样的随机性&#xff0c;我们不可能得到精确的总体参数&#xff0c;而只能通过估计值&#xff08;如均值…...

UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x99

UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x99 这个错误通常发生在你尝试使用 GBK 编码来解码一个包含非GBK编码字符的文件时。GBK 是一种用于简体中文的字符编码方式&#xff0c;它不支持所有可能的 Unicode 字符。 解决方法 明确文件的正确编码&#xff1a;首…...

DeepSeek应用——与word的配套使用

目录 一、效果展示 二、配置方法 三、使用方法 四、注意事项 1、永久化使用 2、宏被禁用 3、office的生成失败 记录自己学习应用DeepSeek的过程...... 这个是与WPS配套使用的过程&#xff0c;office的与这个类似&#xff1a; 一、效果展示 二、配置方法 1、在最上方的…...

递归乘法算法

文章目录 递归乘法题目链接题目详解解题思路&#xff1a;代码实现&#xff1a; 结语 欢迎大家阅读我的博客&#xff0c;给生活加点impetus&#xff01;&#xff01; 让我们进入《题海探骊》&#xff0c;感受算法之美&#xff01;&#xff01; 递归乘法 题目链接 在线OJ 题目…...

【免费】2004-2020年各省废气中废气中二氧化硫排放量数据

2004-2020年各省废气中废气中二氧化硫排放量数据 1、时间&#xff1a;2004-2020年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、废气中二氧化硫排放量(万吨) 4、范围&#xff1a;31省 5、指标说明&#xff1a;二氧化硫排放量指…...

CNN-LSSVM卷积神经网络最小二乘支持向量机多变量多步预测,光伏功率预测

代码地址&#xff1a;CNN-LSSVM卷积神经网络最小二乘支持向量机多变量多步预测&#xff0c;光伏功率预测 CNN-LSSVM卷积神经网络最小二乘支持向量机多变量多步预测&#xff0c;光伏功率预测 一、引言 1、研究背景和意义 光伏发电作为可再生能源的重要组成部分&#xff0c;近…...

【油猴脚本/Tampermonkey】DeepSeek 服务器繁忙无限重试(20250213优化)

目录 一、 引言 二、 逻辑 三、 源代码 四、 添加新脚本 五、 使用 六、 BUG 七、 优化日志 1.获取最后消息内容报错 一、 引言 deepseek每次第一次提问就正常&#xff0c;后面就开始繁忙了&#xff0c;有一点阴招全使我们身上。 greasyfork登不上&#xff0c;不知道…...

单调栈及相关题解

单调递增栈&#xff1a;栈中数据入栈单调递增序列(栈底到栈顶是单调递增)&#xff1b; 单调递减栈&#xff1a;栈中数据入栈单调递减序列(栈底到栈顶是单调递减)。 单调递增栈&#xff1a; 维护单调递增栈:遍历数组中每一个元素&#xff0c;执行入栈&#xff1a;每次入栈前先…...

每日温度问题:如何高效解决?

给定一个整数数组 temperatures&#xff0c;表示每天的温度&#xff0c;要求返回一个数组 answer&#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 问题分析 我们需要计算…...

#渗透测试#批量漏洞挖掘#致远互联AnalyticsCloud 分析云 任意文件读取

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...