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

人工智能|YOLOv8必须了解的知识

欢迎来到人工智能的世界博客主页卿云阁欢迎关注点赞收藏⭐️留言首发时间2026年5月1日✉️希望可以和大家一起完成进阶之路作者水平很有限如果发现错误请留言轰炸哦万分感谢目录YOLOv8必须了解的知识非极大值抑制模型架构快速进行目标检测参考内容​YOLOv8必须了解的知识任何数字图像都可以等效看作一个平面像素直角坐标系图像中的每一个像素点都唯一对应一组坐标(x, y)。图像坐标系的原点位于图片左上角顶点水平向右为X 轴正方向对应图像的宽度方向竖直向下为Y 轴正方向对应图像的高度方向。图像上任意像素的横坐标 x 代表该像素距离左边界的水平像素个数纵坐标 y 代表该像素距离上边界的竖直像素个数。​目标检测任务的核心是设计并构建卷积神经网络模型以整张图像作为网络输入输出图像中所有目标的位置信息与类别语义信息。一幅图像内可存在多个待检测目标每个目标可用4 维位置信息与2 维类别信息共同表征位置信息为检测框左上角坐标与右下角坐标类别信息为目标类别标签及对应置信度。以上六项信息构成一组完整描述形成检测六元组图像中每一个检测目标都唯一对应一个这样的六元组。​YOLOv8 网络的输入为尺寸 (3*640*640)的 RGB 图像经主干特征提取、多尺度特征融合与检测头推理后最终会输出三组不同分辨率的预测特征图。特征图尺度从小到大依次为 (80*80)、(40*40)、(20*20)分别负责小、中、大尺度目标的检测任务。特征图尺寸越小其对应感受野范围越大更适合预测画面中尺寸较大的目标反之特征图尺寸越大感受野越小擅长检测小尺度目标。特征图上的每一个网格单元均对应一组目标检测预测结果YOLOv8 检测头为解耦头无锚框设计每个网格单元包含 144 维 预测向量该向量编码了目标位置、尺寸回归、分类置信度等全部信息后续通过解码与非极大值抑制即可得到图像中所有目标的最终检测框与类别结果。特征图尺寸数据点数量感受野大小对应检测框类型说明80×806400小小目标检测框每个点感受野小适合检测小目标。40×401600中中目标检测框感受野中等适合检测中等大小目标。20×20400大大目标检测框每个点感受野大适合检测大目标。​​​向量部分维度数量含义说明坐标信息64 维表示检测框位置每个坐标由 16 个数值表示基于 DFL 分布焦点损失类别信息80 维表示目标类别置信度对应 80 种类别的置信度以 COCO 数据集为例合计144 维表示检测结果的预测向量与 YOLO 模型的参数配置和特定目标检测问题相关示例​非极大值抑制YOLOv8 网络最终会输出一组共8400 个候选检测框即 80×80 40×40 20×20 网格单元的预测结果。随后这些原始预测结果会通过 YOLOv8 内置的解码算法还原为包含目标位置与类别信息的六元组检测结果位置信息、类别标签与置信度。由于大部分候选框为冗余或无效预测模型会通过非极大值抑制NMS算法进行后处理筛选出最可靠的目标框。该算法的核心逻辑是通过计算两个检测框之间的 交并比IOU来衡量重合程度对高度重叠的冗余框进行抑制最终保留置信度最高、定位最精准的检测结果。NMS 的标准步骤按置信度对所有预测框从高到低排序取出置信度最高的框作为基准与其余所有框计算 IOU若 IOU 超过设定阈值则判定为重复框并剔除重复上述过程直到所有目标框筛选完成。​模型架构主干网络的核心功能是对输入图像进行多尺度特征提取与下采样逐步生成不同空间分辨率的特征图最终输出 P3、P4、P5 三组关键特征图用于后续 Neck 与 Head 模块的目标检测任务。这三个特征图的命名 P3、P4、P5其核心含义是以输入图像的下采样倍率为基准的特征层编号输入图像尺寸为 640×640P3下采样倍率为 (2^38)特征图尺寸为 (80×80)负责小目标检测P4下采样倍率为 (2^416)特征图尺寸为 (40×40)负责中目标检测P5下采样倍率为 (2^532\)特征图尺寸为 (20×20)负责大目标检测。其中P 是 Pyramid特征金字塔 的缩写数字 3/4/5 则代表相对于输入图像的下采样倍率的指数(2^3/2^4/2^5)因此 P3/P4/P5 也常被称为第 3/4/5 级特征金字塔层。​颈部网络颈部网络Neck的核心功能是对主干网络输出的多尺度特征图进行双向融合与增强以实现高层语义信息与底层空间细节的互补。具体来说它以主干网络输出的 P3、P4、P5 三级特征为输入通过上采样Upsample、特征拼接Concat与卷积精炼的组合构建自上而下与自下而上的融合路径。最终颈部网络会输出三组与输入尺寸一致的融合特征图分别对应小、中、大目标的检测任务为后续检测头提供更具鲁棒性的多尺度特征表征。​检测头YOLOv8 采用 解耦检测头Decoupled Head 设计将目标检测的回归与分类任务分离为两个独立的卷积分支一个分支预测目标的位置与尺寸另一个分支预测类别置信度。相比传统耦合头该结构优化了梯度流向提升了检测精度与收敛速度。检测头的输出经解码算法解析可还原为目标坐标、宽高及类别置信度训练阶段通过分布焦点损失DFL、CIoU 损失与分类损失计算误差并更新网络参数推理阶段则通过坐标解码映射回原图并配合非极大值抑制NMS筛选最终检测框。​快速进行目标检测Ultralytics 是一家专注于计算机视觉与深度学习的公司同时也是一个开源框架 / 库通过 pipinstall ultralytics 安装核心产品是YOLO 系列模型如 YOLOv5、YOLOv8、YOLO11 等主打高效、易用、多功能的计算机视觉解决方案。安装 Ultralytics - Ultralytics YOLO 文档安装# Install or upgrade the ultralytics package from PyPI pip install -U ultralytics对于没有显示器的服务器环境例如云虚拟机、Docker 容器、CI/CD 流水线pip install ultralytics-opencv-headless调用模型进行检测import cv2 from PIL import Image from ultralytics import YOLO model YOLO(yolov8n.pt)#会下载到当前路径下 im1 cv2.imread(1.jpg) results model.predict(sourceim1, saveTrue, save_txtTrue) # save predictions as labelsimport ultralytics from ultralytics import YOLO # 1. 打印 ultralytics 包的位置 print(ultralytics.__file__) # 例/home/user/anaconda3/envs/yolo/lib/python3.10/site-packages/ultralytics/__init__.py # 2. 打印 yolov8n.yaml 的位置 import os yaml_path os.path.join(os.path.dirname(ultralytics.__file__), cfg, models, v8, yolov8n.yaml) print(yaml_path) # 3. 更简单直接用 pathlib推荐 from pathlib import Path pkg_dir Path(ultralytics.__file__).parent print(pkg_dir) # ultralytics 根目录 print(pkg_dir / cfg / models / v8 / yolov8n.yaml) # yaml 完整路径 # 4. 加载模型后直接查 yaml 路径 model YOLO(yolov8n.yaml) print(model.cfg) # 直接输出 yaml 的完整绝对路径如果自定义模型my_project/ ├── custom_modules/ │ ├── __init__.py │ ├── attention.py # 自定义注意力模块 │ └── conv.py # 自定义卷积模块 ├── models/ │ └── my_yolov8.yaml # 自定义模型配置 ├── register.py # 统一注册入口 └── train.py # 训练脚本定义自定义模块# custom_modules/attention.py import torch import torch.nn as nn class ChannelAttention(nn.Module): 通道注意力模块 SE-Net def __init__(self, c1, ratio16): super().__init__() self.avg_pool nn.AdaptiveAvgPool2d(1) self.max_pool nn.AdaptiveMaxPool2d(1) self.fc nn.Sequential( nn.Linear(c1, c1 // ratio, biasFalse), nn.ReLU(), nn.Linear(c1 // ratio, c1, biasFalse), ) self.sigmoid nn.Sigmoid() def forward(self, x): b, c, _, _ x.shape avg self.fc(self.avg_pool(x).view(b, c)) max_ self.fc(self.max_pool(x).view(b, c)) weight self.sigmoid(avg max_).view(b, c, 1, 1) return x * weight class SpatialAttention(nn.Module): 空间注意力模块 def __init__(self, kernel_size7): super().__init__() self.conv nn.Conv2d(2, 1, kernel_size, paddingkernel_size // 2, biasFalse) self.sigmoid nn.Sigmoid() def forward(self, x): avg torch.mean(x, dim1, keepdimTrue) max_, _ torch.max(x, dim1, keepdimTrue) out torch.cat([avg, max_], dim1) return x * self.sigmoid(self.conv(out)) class CBAM(nn.Module): CBAM 通道注意力 空间注意力 def __init__(self, c1, ratio16, kernel_size7): super().__init__() self.ca ChannelAttention(c1, ratio) self.sa SpatialAttention(kernel_size) def forward(self, x): return self.sa(self.ca(x))# custom_modules/conv.py import torch.nn as nn from ultralytics.nn.modules.conv import Conv # 继承官方 Conv复用 BN激活 class GhostConv(nn.Module): Ghost 轻量卷积用廉价操作生成更多特征图 def __init__(self, c1, c2, k1, s1, g1, actTrue): super().__init__() c_ c2 // 2 # 主卷积只做一半 self.cv1 Conv(c1, c_, k, s, None, g, actact) self.cv2 Conv(c_, c_, 5, 1, None, c_, actact) # DW卷积生成另一半 def forward(self, x): y self.cv1(x) return torch.cat([y, self.cv2(y)], dim1)统一注册入口# register.py ← 训练前必须 import 这个文件 from ultralytics.nn import modules as nn_modules # 获取模块命名空间 # 导入你的自定义模块 from custom_modules.attention import CBAM, ChannelAttention, SpatialAttention from custom_modules.conv import GhostConv # ✅ 关键注入到 ultralytics 的模块字典 # 方式一直接赋值最简单 nn_modules.CBAM CBAM nn_modules.ChannelAttention ChannelAttention nn_modules.SpatialAttention SpatialAttention nn_modules.GhostConv GhostConv # 方式二批量注册模块多时推荐 _CUSTOM_MODULES { CBAM: CBAM, ChannelAttention: ChannelAttention, SpatialAttention: SpatialAttention, GhostConv: GhostConv, } for name, cls in _CUSTOM_MODULES.items(): setattr(nn_modules, name, cls) print(f✅ 已注册自定义模块{list(_CUSTOM_MODULES.keys())})在 yaml 中使用自定义模块# models/my_yolov8.yaml nc: 80 scales: n: [0.33, 0.25, 1024] backbone: # [from, repeats, module, args] - [-1, 1, Conv, [64, 3, 2]] # 0 - P1/2 - [-1, 1, Conv, [128, 3, 2]] # 1 - P2/4 - [-1, 3, C2f, [128, True]] # 2 - [-1, 1, Conv, [256, 3, 2]] # 3 - P3/8 - [-1, 6, C2f, [256, True]] # 4 - [-1, 1, CBAM, [256]] # 5 ← 插入 CBAM 注意力 - [-1, 1, Conv, [512, 3, 2]] # 6 - P4/16 - [-1, 6, C2f, [512, True]] # 7 - [-1, 1, CBAM, [512]] # 8 ← 再插一个 - [-1, 1, Conv, [1024, 3, 2]] # 9 - P5/32 - [-1, 3, C2f, [1024, True]] # 10 - [-1, 1, SPPF, [1024, 5]] # 11 head: - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 8], 1, Concat, [1]] - [-1, 3, C2f, [512]] - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 5], 1, Concat, [1]] - [-1, 3, C2f, [256]] - [[17, 20, 23], 1, Detect, [nc]]训练脚本# train.py import register # ← 第一行必须先执行注册 from ultralytics import YOLO model YOLO(models/my_yolov8.yaml) # 解析 yaml 时已能识别 CBAM model.train( datadata.yaml, epochs100, imgsz640, batch16, device0, )验证注册是否成功import register from ultralytics.nn import modules as m from ultralytics import YOLO # 检查是否注册成功 print(hasattr(m, CBAM)) # True print(hasattr(m, GhostConv)) # True # 打印模型结构确认 CBAM 出现在正确位置 model YOLO(models/my_yolov8.yaml) print(model.model) # 统计参数量 from ultralytics.utils.torch_utils import model_info model_info(model.model, verboseTrue)如果模块较多可以封装一个注册装饰器更工程化# register.py from ultralytics.nn import modules as nn_modules def register_module(nameNone): 装饰器自动将类注册到 Ultralytics 模块系统 def decorator(cls): module_name name or cls.__name__ setattr(nn_modules, module_name, cls) print(f✅ 注册模块{module_name}) return cls return decorator # ── 使用方式 ────────────────────────────────── # custom_modules/attention.py register_module() # 使用类名 CBAM 注册 class CBAM(nn.Module): ... register_module(MyCA) # 使用自定义名 MyCA 注册 class ChannelAttention(nn.Module): ...参考内容【1】小黑黑讲AI的抖音 - 抖音​

相关文章:

人工智能|YOLOv8必须了解的知识

🌞欢迎来到人工智能的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 📆首发时间:🌹2026年5月1日🌹 ✉️希望可以和大家一起完成进阶…...

IntelliJ IDEA 2020.3.2 + Maven 3.6.3 环境搭建避坑全记录:从下载到第一个Spring Boot项目跑通

IntelliJ IDEA与Maven环境搭建实战:从零构建Spring Boot项目的完整指南 对于Java开发者而言,一个高效、稳定的开发环境是生产力提升的关键。本文将带你完整走过从IntelliJ IDEA安装到第一个Spring Boot项目成功运行的每一步,特别针对国内开发…...

联想Y7000 2018款BIOS隐藏菜单解锁与通电自启保姆级教程(附小米智能插座联动)

联想Y7000 2018款BIOS隐藏菜单解锁与通电自启保姆级教程(附小米智能插座联动) 手里闲置的联想Y7000 2018款游戏本,与其让它吃灰,不如改造成一台24小时待命的家庭服务器。这个想法源于我去年远程办公时的痛点——公司配发的台式机…...

为 Claude Code 编程助手配置 Taotoken 作为后端 API 提供商

为 Claude Code 编程助手配置 Taotoken 作为后端 API 提供商 1. 场景概述 Claude Code 作为一款流行的编程辅助工具,其默认后端通常直接连接特定厂商的 API 服务。通过将其后端切换至 Taotoken 平台,开发者可以获得多模型选择能力,并利用平…...

ROS2 Launch文件进阶:用命名空间和参数配置,管理你的多机器人仿真环境

ROS2 Launch文件进阶:多机器人仿真环境的高效管理策略 当我们需要在同一个仿真环境中协调多个机器人时,手动启动每个节点不仅效率低下,还容易出错。ROS2的Launch系统提供了一套强大的工具链,能够帮助我们优雅地解决这个问题。本文…...

骁龙手机省电黑科技:深入浅出聊聊高通cDSP的架构与工作原理

骁龙手机省电黑科技:高通cDSP架构与工作原理深度解析 当你用手机拍摄夜景时,是否好奇过为什么暗部细节能瞬间提亮?当你连续使用语音助手数小时,为何电量消耗却微乎其微?这一切的秘密,都藏在骁龙芯片里那个名…...

Fan Control风扇控制软件终极指南:从零开始掌握Windows风扇调速技巧 [特殊字符]

Fan Control风扇控制软件终极指南:从零开始掌握Windows风扇调速技巧 🚀 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://git…...

免费开源数据恢复工具终极指南:3步快速找回丢失的分区和文件

免费开源数据恢复工具终极指南:3步快速找回丢失的分区和文件 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 你是否经历过这样的场景?电脑突然无法启动,屏幕上显示"O…...

京东抢购助手:3步搭建Python自动化抢购系统,告别手动烦恼

京东抢购助手:3步搭建Python自动化抢购系统,告别手动烦恼 【免费下载链接】jd-assistant 京东抢购助手:包含登录,查询商品库存/价格,添加/清空购物车,抢购商品(下单),查询订单等功能 项目地址…...

基于Chain+Module+Plugin架构的AI音乐库自动化管理方案

1. 项目概述:一个由AI自主驱动的音乐库自动化管家 如果你和我一样,是个音乐爱好者,电脑里塞满了从各种渠道下载的音乐文件,那你一定经历过这样的痛苦:文件命名乱七八糟,有的叫“周杰伦-七里香.mp3”&#x…...

通过openclaw配置taotoken作为aiagent工作流的大模型供应商

通过 OpenClaw 配置 Taotoken 作为 AIAgent 工作流的大模型供应商 1. 准备工作 在开始配置之前,请确保您已安装 OpenClaw 并具备基本的 AIAgent 工作流构建能力。同时需要准备好 Taotoken 平台的 API Key,可在 Taotoken 控制台的「API 密钥」页面创建。…...

内核级硬件信息伪装技术深度解析:EASY-HWID-SPOOFER实战手册

内核级硬件信息伪装技术深度解析:EASY-HWID-SPOOFER实战手册 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 在数字身份日益重要的今天,硬件指纹已成为系统…...

数字溯源如何悄悄改变我们的日常

从一张发票说起我们最近整理家里的旧票据,翻出一张半年前的超市小票。纸都皱了,字也淡了,但扫码后却跳转到一个清晰的消费记录页面——时间、商品、价格,甚至当时用的优惠券都一清二楚。那一刻,我们忽然意识到&#xf…...

别再盲目量化了!用RKNN-Toolkit的accuracy_analysis接口,精准定位模型精度损失层(附ResNet18实战代码)

深度解析RKNN模型量化精度损失:从理论到实战的精准诊断指南 当我们将精心训练的神经网络模型部署到边缘设备时,量化是必经之路,但随之而来的精度下降往往令人头疼。不同于简单的"量化-部署"流程,本文将带您深入RKNN模型…...

从设计到选型:实战指南!如何根据你的系统需求,快速搞定水泵的型号与运行调节

从设计到选型:实战指南!如何根据你的系统需求,快速搞定水泵的型号与运行调节 在工业供水、暖通空调或化工流程中,水泵选型不当导致的能耗浪费可能占到系统总成本的30%以上。某食品厂曾因直接套用"经验参数"选择大流量泵…...

OpenMV图像无线传输?先吃透这份有线串口通信的底层逻辑

OpenMV图像传输的底层逻辑与串口通信优化实战 引言 在嵌入式视觉项目中,图像数据的可靠传输往往是决定系统性能的关键环节。许多开发者习惯性地将注意力放在无线传输方案上,却忽略了有线串口通信这个看似"传统"却极具潜力的传输方式。OpenMV作…...

UEViewer完全指南:掌握虚幻引擎资源解析的终极实践

UEViewer完全指南:掌握虚幻引擎资源解析的终极实践 【免费下载链接】UEViewer Viewer and exporter for Unreal Engine 1-4 assets (UE Viewer). 项目地址: https://gitcode.com/gh_mirrors/ue/UEViewer UEViewer(也称为UModel)是一款…...

如何在Switch上免费使用Xbox和PS4手柄:sys-con终极指南

如何在Switch上免费使用Xbox和PS4手柄:sys-con终极指南 【免费下载链接】sys-con Nintendo Switch sysmodule that allows support for third-party controllers 项目地址: https://gitcode.com/gh_mirrors/sy/sys-con 想在任天堂Switch上使用你最喜欢的Xbox…...

Opbench:图学习在阿片危机检测中的应用与基准

1. 项目概述:Opbench——应对阿片危机的图学习基准在公共卫生领域,阿片类药物滥用已演变成一场全球性危机。根据美国疾控中心数据,仅2023年全美就有超过10万人死于阿片类药物过量,这一数字是1999年的十倍。传统监测手段面临巨大挑…...

HS2-HF_Patch终极指南:5分钟解锁《Honey Select 2》完整游戏体验

HS2-HF_Patch终极指南:5分钟解锁《Honey Select 2》完整游戏体验 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为《Honey Select 2》的日文界…...

Java开发者如何通过Taotoken快速接入多模型API服务

Java开发者如何通过Taotoken快速接入多模型API服务 1. 准备工作 在开始集成Taotoken的多模型API服务前,需要确保开发环境满足基本要求。Java项目建议使用JDK 11或更高版本,并准备好构建工具如Maven或Gradle。Taotoken平台采用OpenAI兼容协议&#xff0…...

Arm SIMD指令UQSHL与UQSHRN详解与应用优化

1. Arm SIMD指令概述:从理论到实践在Arm架构的优化实践中,SIMD(Single Instruction Multiple Data)指令集一直是性能加速的核心武器。作为现代处理器设计的重要特性,SIMD允许单条指令同时处理多个数据元素,…...

FOCUS技术解析:多主体图像生成的流匹配与最优控制

1. 多主体文本到图像生成的挑战与FOCUS解决方案 在当前的AI绘图领域,Stable Diffusion等文本到图像(T2I)模型已经展现出惊人的单对象生成能力。但当提示词包含多个主体时(例如"戴红帽子的宇航员和拿小提琴的熊猫"&#…...

别再傻傻分不清了!嵌入式开发中UART、SPI、I2C到底怎么选?附Arduino/STM32实战对比

嵌入式开发实战:UART、SPI、I2C协议选型指南 在嵌入式系统开发中,选择合适的通信协议往往决定了项目的成败。面对琳琅满目的传感器、显示屏和功能模块,新手工程师常被UART、SPI、I2C这三种主流串行通信协议搞得晕头转向。本文将从实际项目需求…...

Emacs集成Aider:AI辅助编程的编辑器深度整合方案

1. 项目概述:当Emacs遇见AI编程助手 如果你是一个Emacs的深度用户,同时又对AI辅助编程抱有浓厚的兴趣,那么你很可能已经厌倦了在浏览器、终端和编辑器之间反复切换的割裂感。 tninja/aider.el 这个项目,就是为了解决这个痛点而生…...

LongNet:基于膨胀注意力机制突破Transformer十亿级序列建模瓶颈

1. 项目概述:当Transformer模型遇见十亿级序列如果你在过去几年里深度参与过大型语言模型的训练或应用,那么“上下文长度”这个词对你来说一定不陌生。从GPT-3的2048个token,到GPT-4的32K,再到Claude的100K,我们一直在…...

通过Taotoken CLI工具一键配置开发环境接入大模型聚合API

通过Taotoken CLI工具一键配置开发环境接入大模型聚合API 1. CLI工具安装与启动 Taotoken官方提供的CLI工具可通过npm快速安装。根据使用习惯选择以下任一方式: 全局安装(适合频繁使用): npm install -g taotoken/taotoken临时…...

百灵快传:三分钟搭建你的局域网文件共享神器,让跨设备传输变得如此简单

百灵快传:三分钟搭建你的局域网文件共享神器,让跨设备传输变得如此简单 【免费下载链接】b0pass 百灵快传(B0Pass):基于Go语言的高性能 "手机电脑超大文件传输神器"、"局域网共享文件服务器"。LAN large file transfer t…...

OpenClaw:基于角色隔离与Discord的多智能体系统架构实战

1. 项目概述:一个专为持续运行而生的多智能体系统如果你正在构建一个AI驱动的自动化系统,并且希望它能像一支真正的团队一样,7x24小时地工作、学习和交付成果,而不是一个用完即弃的演示玩具,那么你很可能正面临几个核心…...

DataEase开源版权限缺失?手把手教你从零搭建用户分级菜单系统

DataEase开源版权限系统改造实战:从零构建用户分级菜单体系 在企业级数据可视化平台的实际应用中,权限管理是不可或缺的核心功能。DataEase作为一款优秀的开源数据可视化工具,其开源版本在权限管理方面存在明显短板——所有账号拥有完全相同…...