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

YOLOv11来了 | 自定义目标检测

概述

YOLO11 在 2024 年 9 月 27 日的 YOLO Vision 2024 活动中宣布:https://www.youtube.com/watch?v=rfI5vOo3-_A。

YOLO11 是 Ultralytics YOLO 系列的最新版本,结合了尖端的准确性、速度和效率,用于目标检测、分割、分类、定向边界框和姿态估计。与 YOLOv8 相比,它具有更少的参数和更好的结果,不难预见,YOLO11 在边缘设备上更高效、更快,将频繁出现在计算机视觉领域的最先进技术(SOTA)中。

主要特点

  • 增强的特征提取:YOLO11 使用改进的主干和颈部架构来增强特征提取,以实现更精确的目标检测和复杂任务的性能。

  • 针对效率和速度优化:精细的架构设计和优化的训练流程在保持准确性和性能之间最佳平衡的同时,提供更快的处理速度。

  • 更少的参数,更高的准确度:YOLO11m 在 COCO 数据集上实现了比 YOLOv8m 更高的 mAP,参数减少了 22%,提高了计算效率,同时不牺牲准确度。

  • 跨环境的适应性:YOLO11 可以无缝部署在边缘设备、云平台和配备 NVIDIA GPU 的系统上,确保最大的灵活性。

  • 支持广泛的任务范围:YOLO11 支持各种计算机视觉任务,如目标检测、实例分割、图像分类、姿态估计和定向目标检测(OBB)。

本教程涵盖的步骤

  • 环境设置

  • 准备数据集

  • 训练模型

  • 验证模型

  • 在测试图像上运行推理

  • 结论

环境设置

你需要一个谷歌账户才能使用 Google Colab。我们使用 Colab 进行需要密集计算的任务,比如深度学习。由于我电脑的 GPU 不足,我需要激活 Colab 的 GPU 支持。

 这样做之后,我们检查 gpu 活动。

 它支持高达 16GB 的内存和 2560 CUDA 核心,以加速广泛的现代应用程序。然后执行此代码以动态确定工作目录并灵活管理文件路径。

import os
HOME = os.getcwd()

 接下来,你需要下载 Ultralytics 包来加载和处理模型,以及用于数据集的 Roboflow 包。

!pip install ultralytics supervision roboflow
from ultralytics import YOLOfrom roboflow import Roboflow

准备数据集

在这个项目中,我使用了 RF100 中包含的寄生虫数据集。我将在这个数据集中训练一个有 8 种不同寄生虫类别的目标检测模型。我将通过 Roboflow 处理标记、分类的图像。我经常在我的个人项目中使用这个开源平台。在处理现成的数据集时,你可以在数据集的健康分析部分快速获取大量关于数据的信息。例如,下面显示的类别平衡部分,我们可以看到 Hymenolepis 类别是代表不足的。

数据集相关链接:

https://universe.roboflow.com/roboflow-100/parasites-1s07h

https://universe.roboflow.com/roboflow-100

https://universe.roboflow.com/roboflow-100/parasites-1s07h/health

 为了提高这个类别的准确性,你需要应用增强、过采样或调整类别权重。我们不会在本文中讨论这些主题,不用担心,但如果你对这些任务感兴趣,请随时联系我。如果有足够需求,我也可以分享我关于这些主题的详细工作。你可以下载并使用 Roboflow 环境中的任何开源项目,按照格式使用。在准备或选择数据集后,我们将在 Colab 环境中工作我们切换到 Colab 的原因是它提供免费的 16GB NVIDIA T4 GPU 使用。我在下面提到了这个问题。我们需要使用 Roboflow API 以 YOLOv8 格式导入我们的数据。让我们获取现成的代码片段和数据格式。

rf = Roboflow(api_key="your-api-key")
project = rf.workspace("roboflow-100").project("parasites-1s07h")
version = project.version(2)
dataset = version.download("yolov8")
!sed -i '$d' {dataset.location}/data.yaml   # Delete the last line
!sed -i '$d' {dataset.location}/data.yaml   # Delete the second-to-last line
!sed -i '$d' {dataset.location}/data.yaml   # Delete the third-to-last line!echo 'test: ../test/images' >> {dataset.location}/data.yaml
!echo 'train: ../train/images' >> {dataset.location}/data.yaml
!echo 'val: ../valid/images' >> {dataset.location}/data.yaml

我们需要更新 data.yaml 格式,如下所示,以便以 YOLO11 格式进行训练。

!sed -i '$d' {dataset.location}/data.yaml   # Delete the last line
!sed -i '$d' {dataset.location}/data.yaml   # Delete the second-to-last line
!sed -i '$d' {dataset.location}/data.yaml   # Delete the third-to-last line!echo 'test: ../test/images' >> {dataset.location}/data.yaml
!echo 'train: ../train/images' >> {dataset.location}/data.yaml
!echo 'val: ../valid/images' >> {dataset.location}/data.yaml

训练模型

让我们在我们的数据集上训练模型 40 个周期。作为这个项目的一部分,我通过 CLI 命令展示了训练。在如下所示的简单命令下定义后,训练开始。

!yolo task=detect mode=train model=yolo11s.pt data={dataset.location}/data.yaml epochs=40 imgsz=640 plots=True

你也可以使用 Python 创建它,以实现更灵活的场景。下面展示了示例 Python 训练代码:

from ultralytics import YOLO
# Load a COCO-pretrained YOLO11n modelmodel = YOLO("yolo11n.pt")
# Train the model on the COCO8 example dataset for 40 epochsresults = model.train(data="coco8.yaml", epochs=40, imgsz=640)

训练好的模型保存在 /runs/detect/train/weights 文件下的 best.pt。

一旦你的模型完成训练,你可以使用 YOLO11 生成的图表评估训练结果。

注意:在训练模型时,回顾 Ultralytics 文档中“训练设置”部分的参数是有益的。这部分对您的训练过程至关重要。

验证模型

以下是使用 YOLO11 的 Val 模式的优势:

  • 精度:获取准确的指标,如 mAP50、mAP75 和 mAP50–95,全面评估你的模型。

  • 便利性:利用内置功能记住训练设置,简化验证过程。

  • 灵活性:使用相同或不同的数据集和图像大小验证你的模型。

  • 超参数调整:使用验证指标微调你的模型以获得更好的性能。

!yolo task=detect mode=val model={HOME}/runs/detect/train/weights/best.pt data={dataset.location}/data.yaml

一般评估:

  • 精确度、召回率和 mAP 指标相当高。

  • 尽管不同类别之间存在性能差异,但整体模型性能令人满意。

  • 在速度方面,这是一个有效的模型,推理时间很低。

在测试数据集上运行推理

让我们评估模型的泛化能力,看看它在之前未见过的测试数据集上的预测。

# predict mode for test data
!yolo task=detect mode=predict model={HOME}/runs/detect/train/weights/best.pt conf=0.25 source={dataset.location}/test/images save=True
# for visualization
latest_folder = max(glob.glob('/content/runs/detect/predict*/'), key=os.path.getmtime)
for img in glob.glob(f'{latest_folder}/*.jpg')[:1]:    display(IPyImage(filename=img, width=600))    print("\n")

相关文章:

YOLOv11来了 | 自定义目标检测

概述 YOLO11 在 2024 年 9 月 27 日的 YOLO Vision 2024 活动中宣布:https://www.youtube.com/watch?vrfI5vOo3-_A。 YOLO11 是 Ultralytics YOLO 系列的最新版本,结合了尖端的准确性、速度和效率,用于目标检测、分割、分类、定向边界框和…...

Vue3 集成Monaco Editor编辑器

Vue3 集成Monaco Editor编辑器 1. 安装依赖2. 使用3. 效果 Monaco Editor (官方链接 https://microsoft.github.io/monaco-editor/)是一个由微软开发的功能强大的在线代码编辑器,被广泛应用于各种 Web 开发场景中。以下是对 Monaco Editor 的…...

一文详解Mysql索引

背景 索引是存储引擎用于快速找到一条记录的数据结构。索引对良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。接下来,就来详细探索一下索引。 索引是什么 索引(Index)是帮助数据库高效获取数据的…...

基于JAVA+SpringBoot+Vue的旅游管理系统

基于JAVASpringBootVue的旅游管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈喽兄…...

STM32_实验3_控制RGB灯

HAL_Delay 是 STM32 HAL 库中的一个函数,用于在程序中产生一个指定时间的延迟。这个函数是基于系统滴答定时器(SysTick)来实现的,因此可以实现毫秒级的延迟。 void HAL_Delay(uint32_t Delay); 配置引脚: 点击 1 到 IO…...

RISC-V笔记——Pipeline依赖

1. 前言 RISC-V的RVWMO模型主要包含了preserved program order、load value axiom、atomicity axiom、progress axiom和I/O Ordering。今天主要记录下preserved program order(保留程序顺序)中的Pipeline Dependencies(Pipeline依赖)。 2. Pipeline依赖 Pipeline依赖指的是&a…...

构建后端为etcd的CoreDNS的容器集群(六)、编写自动维护域名记录的代码脚本

本文为系列测试文章,拟基于自签名证书认证的etcd容器来构建coredns域名解析系统。 一、前置文章 构建后端为etcd的CoreDNS的容器集群(一)、生成自签名证书 构建后端为etcd的CoreDNS的容器集群(二)、下载最新的etcd容…...

Leetcode 剑指 Offer II 098.不同路径

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下…...

LabVIEW智能螺杆空压机测试系统

基于LabVIEW软件开发的螺杆空压机测试系统利用虚拟仪器技术进行空压机的性能测试和监控。系统能够实现对螺杆空压机关键性能参数如压力、温度、流量、转速及功率的实时采集与分析,有效提高测试效率与准确性,同时减少人工操作,提升安全性。 项…...

在 Ubuntu 22.04 上安装 PHP 8.2

在 Ubuntu 22.04 上安装 PHP 8.2,可以按照以下步骤进行: 更新系统软件包: 首先,确保你的系统软件包是最新的。 sudo apt update sudo apt upgrade 安装 PHP PPA(Personal Package Archive): U…...

Java生死簿管理小系统(简单实现)

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…...

【VoceChat】一个即时聊天(IM)软件,又是一个可以嵌入任何网页聊天系统

为什么要搭建私人聊天软件 在当今数字化时代,聊天软件已经成为人们日常沟通和协作的重要工具。市面上的公共聊天平台虽然方便,但也伴随着诸多隐私、安全、广告和功能限制的问题。对于那些注重数据安全、追求高效沟通的个人或团队来说,搭建一…...

【LeetCode】动态规划—96. 不同的二叉搜索树(附完整Python/C++代码)

动态规划—96. 不同的二叉搜索树 题目描述前言基本思路1. 问题定义2. 理解问题和递推关系二叉搜索树的性质:核心思路:状态定义:状态转移方程:边界条件: 3. 解决方法动态规划方法:伪代码: 4. 进一…...

Nginx UI 一个可以管理Nginx的图形化界面工具

Nginx UI 是一个基于 Web 的图形界面管理工具,支持对 Nginx 的各项配置和状态进行直观的操作和监控。 Nginx UI 的功能非常丰富: 在线查看服务器 CPU、内存、系统负载、磁盘使用率等指标 在线 ChatGPT 助理 一键申请和自动续签 Let’s encrypt 证书 在…...

Vue向上滚动加载数据时防止内容闪动

目前的需求:当前组件向上滚动加载数据,dom加载完后,页面的元素位置不能发生变化 遇到的问题:加载完数据后,又把滚轮滚到之前记录的位置时,内容发生闪动 现在的方案: 加载数据之前记录整体滚动条…...

基于QT、ARM的智能停车管理系统+高分项目+源码

Parking-management-system 本系统基于QT、ARM开发板、Linux系统并对接百度AI 1.1 项目目的: 创建一个智能停车管理系统,能够停入车辆和取出车辆以及查询车辆停入停车场的状态并且计算车辆离开时收费情况。 1.2 项目意义: 实现停车场智能抬杆和智能收费系统&…...

1.6,unity动画Animator屏蔽某个部位,动画组合

动画组合 一边跑一边攻击 using System.Collections; using System.Collections.Generic; using UnityEngine;public class One : MonoBehaviour {private Animator anim;// Start is called before the first frame updatevoid Start(){anim GetComponent<Animator>();…...

发动机冷却系统排空气

发动机冷却系统排空气的几种常见方法 发动机冷却系统是汽车发动机的重要组成部分&#xff0c;它的主要作用是通过循环冷却液来吸收和散发发动机产生的热量&#xff0c;确保发动机在正常工作温度下运行。然而&#xff0c;在冷却系统的运行过程中&#xff0c;由于各种原因&#…...

三周精通FastAPI:1 第一步入门

FastAPI是一个非常棒的python web和api框架&#xff0c;准备用三周的时间“精通它” 学习流程参考FastAPI官网的用户教程&#xff1a;教程 - 用户指南 - FastAPI 学前提示 运行代码 所有代码片段都可以复制后直接使用&#xff08;它们实际上是经过测试的 Python 文件&#x…...

RestTemplate基本使用之HTTP实现GET请求和POST请求

一、GET请求实例 public static TianQi getTianQi(String city) {RestTemplate restTemplate new RestTemplate();HashMap res restTemplate.getForObject("http://www.tianqiapi.com/api/?versionv6&appid15118158&appsecretgVNnwva8&city" city, H…...

提升51%系统响应:开源工具Win11Debloat让老旧电脑焕发新生

提升51%系统响应&#xff1a;开源工具Win11Debloat让老旧电脑焕发新生 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter an…...

瑞典隆德大学 AI 模型血检识别 5 种神经疾病

瑞典隆德大学研发的 AI 模型 ProtAIDe-Dx&#xff0c;可通过单次血检精准识别 5 种神经退行性疾病&#xff0c;准确率高、早期筛查潜力大。 一、核心信息 发表时间&#xff1a;2026年3月31日&#xff08;《Nature Medicine》&#xff09;研发团队&#xff1a;隆德大学 Vogel &a…...

保姆级教程:在Docker容器或systemd服务里正确配置D-Bus,告别‘DBUS_SESSION_BUS_ADDRESS为空’

容器化与系统服务中的D-Bus实战&#xff1a;破解会话隔离难题 当你尝试在Docker容器中运行一个需要与宿主机桌面交互的自动化测试工具&#xff0c;或者在systemd服务里调用用户级D-Bus接口时&#xff0c;是否经常遇到那个令人头疼的错误——"DBUS_SESSION_BUS_ADDRESS环境…...

AI赋能仿真:借助快马平台让ExtendSim模型学会智能预测与动态调整

今天想和大家分享一个很有意思的实践&#xff1a;如何用AI给传统仿真模型加点"智能"。最近在做一个服务系统的仿真项目&#xff0c;发现顾客等待行为其实很复杂——不同人的耐心程度差异很大&#xff0c;传统仿真很难准确模拟这种动态变化。于是尝试用机器学习来优化…...

为你的项目量身定制,基于快马ai生成openclaw实战集成安装方案

最近在做一个图像处理相关的项目&#xff0c;需要在Ubuntu服务器上集成OpenClaw来处理图像数据&#xff0c;同时还要和OpenCV协同工作。整个过程踩了不少坑&#xff0c;今天就把我的实战经验分享给大家&#xff0c;特别是如何利用InsCode(快马)平台来快速生成定制化的安装方案。…...

intv_ai_mk11新手教程:3步完成提示词输入→参数调整→结果查看

intv_ai_mk11新手教程&#xff1a;3步完成提示词输入→参数调整→结果查看 1. 快速了解intv_ai_mk11 intv_ai_mk11是一个基于Llama架构的文本生成模型&#xff0c;特别适合日常的问答、内容改写和简短创作。它就像一位随时待命的文字助手&#xff0c;能帮你快速完成各种文字工…...

3个突破性方案让游戏玩家实现Steam创意工坊资源自由获取

3个突破性方案让游戏玩家实现Steam创意工坊资源自由获取 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 在数字娱乐日益普及的今天&#xff0c;Steam创意工坊作为游戏模组的重要…...

Java全栈工程师的进阶之路:从技术细节到项目实战

Java全栈工程师的进段之路&#xff1a;从技术细节到项目实战 一、面试开场 面试官&#xff1a;你好&#xff0c;我是XX科技的技术面试官&#xff0c;今天来聊聊你的技术和项目经验。先自我介绍一下吧。 应聘者&#xff1a;您好&#xff0c;我叫李明&#xff0c;28岁&#xff0c…...

如何利用WebSocket实现biliup的实时直播状态监控与日志推送:完整指南

如何利用WebSocket实现biliup的实时直播状态监控与日志推送&#xff1a;完整指南 【免费下载链接】biliup 自动直播录制、投稿、twitch、ytb频道搬运工具。命令行投稿(B站)和视频下载工具&#xff0c;提供多种登录方式&#xff0c;支持多p。 项目地址: https://gitcode.com/g…...

如何用一个USB设备打造你的随身操作系统实验室?Portable-VirtualBox全攻略

如何用一个USB设备打造你的随身操作系统实验室&#xff1f;Portable-VirtualBox全攻略 【免费下载链接】Portable-VirtualBox Portable-VirtualBox is a free and open source software tool that lets you run any operating system from a usb stick without separate instal…...