【PYTHON-YOLOV8N】关于YOLO的推理训练图片的尺寸

【PYTHON-YOLOV8N】关于YOLO的推理训练图片的尺寸

YOLO(尤其是Ultralytics YOLOv8)对输入图片的尺寸没有严格固定值,但有核心的「默认尺寸」「最佳实践」和「尺寸规则」,以下是详细说明:

一、核心默认尺寸(YOLOv8/YOLOv5/YOLOv7通用)

YOLO系列的默认输入尺寸为 640×640像素(正方形),这是Ultralytics官方推荐的基础尺寸,对应代码/命令中的参数:

  • 推理时:model.predict(source='img.jpg', imgsz=640)
  • 训练时:model.train(data='coco.yaml', imgsz=640)

二、尺寸规则(必须遵守)

  1. 尺寸需是32的整数倍
    YOLO的网络结构包含多次32倍下采样(如640→320→160→80→40→20→10),输入尺寸必须能被32整除,否则会导致特征图尺寸不匹配,报错或精度下降。
    ✅ 合法尺寸:320、416、640、800、960、1280(常用)
    ❌ 非法尺寸:600、700、801(无法被32整除)
  2. 支持非正方形尺寸(YOLOv8+)
    YOLOv8及后续版本支持「矩形推理/训练」(非正方形),只需保证宽高均为32的整数倍即可,例如:
    • 480×640(适配手机竖屏图)
    • 800×1280(适配宽屏图)
      命令示例:model.predict(imgsz=[480, 640])([高, 宽])

三、不通模型不同尺寸的适用场景

|

模型类型具体型号核心特性适用图片大小(imgsz)适用场景速度/精度特点(CPU/单卡GPU)参数量(M)FLOPs(G)
基础检测模型YOLOv8n (nano)极致轻量化,网络深度/宽度最小,推理最快320×320、416×416(推荐);≤640×640移动端/嵌入式设备(如树莓派、手机)、实时性优先的低算力场景(如摄像头实时检测)GPU:~300 FPS,CPU:~20 FPS;精度最低(mAP50≈65)3.28.7
YOLOv8s (small)平衡轻量化与精度,基础版中性价比最高416×416、640×640(推荐);≤800×800通用场景(如安防监控、普通目标检测)、边缘设备(如工业相机)GPU:~200 FPS,CPU:~15 FPS;精度中等(mAP50≈72)11.228.6
YOLOv8m (medium)中等规模,深度/宽度提升,精度显著提高640×640(推荐)、800×800;≤960×960中等算力设备(如中端GPU)、精度要求较高的场景(如电商商品检测、交通标识识别)GPU:~100 FPS,CPU:~8 FPS;精度较高(mAP50≈76)25.978.9
YOLOv8l (large)大规模模型,特征提取能力强800×800、960×960(推荐);≤1280×1280高算力设备(如RTX 30/40系列GPU)、高精度需求(如工业缺陷检测、医疗影像初筛)GPU:~50 FPS,CPU:~4 FPS;精度很高(mAP50≈78)43.7165.2
YOLOv8x (extra large)超大模型,精度天花板,参数量最大960×960、1280×1280(推荐);≤1536×1536服务器级GPU、精度优先无实时性要求的场景(如静态图片分析、数据集标注辅助)GPU:~30 FPS,CPU:~2 FPS;精度最高(mAP50≈79)68.2257.8
轻量化变体YOLOv8n-p2小感受野,适配小尺寸图片(如48×48、96×96)48×48、96×96(推荐);≤320×320小目标检测(如人脸关键点、细小零件检测)、移动端小尺寸图片推理速度比YOLOv8n快10%,精度针对小目标提升5%2.87.5
YOLOv8s-p6多尺度特征融合,适配超大尺寸图片(如1280×1280)1280×1280(推荐)、1536×1536;≤2048×2048远距离目标检测(如无人机航拍、安防远距离监控)速度比YOLOv8s慢15%,大目标精度提升8%12.535.2
实例分割模型YOLOv8n-seg轻量化分割,检测+分割二合一320×320、416×416(推荐);≤640×640移动端分割场景(如简单场景抠图、实时语义分割)GPU:~250 FPS,CPU:~15 FPS;分割精度基础级3.410.1
YOLOv8s-seg平衡分割精度与速度416×416、640×640(推荐);≤800×800通用分割场景(如路面分割、商品轮廓提取)GPU:~180 FPS,CPU:~12 FPS;分割精度中等11.831.4
YOLOv8m-seg中等分割精度640×640(推荐)、800×800;≤960×960工业分割(如零件轮廓检测、缺陷区域分割)GPU:~80 FPS,CPU:~6 FPS;分割精度较高27.285.3
YOLOv8l-seg高精度分割800×800、960×960(推荐);≤1280×1280医疗影像分割(如器官轮廓)、高精度工业质检GPU:~40 FPS,CPU:~3 FPS;分割精度很高45.8176.5
YOLOv8x-seg分割精度天花板960×960、1280×1280(推荐);≤1536×1536科研级分割任务、复杂场景分割(如遥感影像分割)GPU:~25 FPS,CPU:~1 FPS;分割精度最高70.8275.6
姿态估计模型YOLOv8n-pose轻量化姿态估计,检测人体关键点320×320、480×480(推荐);≤640×640移动端人体姿态识别(如健身动作检测、简单行为分析)GPU:~280 FPS,CPU:~18 FPS;关键点检测精度基础级3.39.2
YOLOv8s-pose平衡姿态精度与速度480×480、640×640(推荐);≤800×800通用姿态检测(如监控人体行为、舞蹈动作分析)GPU:~190 FPS,CPU:~14 FPS;关键点检测精度中等11.530.1
YOLOv8m-pose中等姿态精度640×640(推荐)、800×800;≤960×960工业姿态检测(如工人操作规范识别)GPU:~90 FPS,CPU:~7 FPS;关键点检测精度较高26.582.4
YOLOv8l-pose高精度姿态估计800×800、960×960(推荐);≤1280×1280医疗姿态分析(如康复动作检测)、高精度行为识别GPU:~45 FPS,CPU:~3 FPS;关键点检测精度很高44.9172.1
YOLOv8x-pose姿态估计精度天花板960×960、1280×1280(推荐);≤1536×1536科研级姿态分析、复杂行为识别(如体育动作拆解)GPU:~28 FPS,CPU:~2 FPS;关键点检测精度最高69.5268.9
分类模型YOLOv8n-cls轻量化图像分类224×224、320×320(推荐);≤416×416移动端图片分类(如相册分类、简单物品识别)GPU:~350 FPS,CPU:~25 FPS;分类精度基础级2.76.4
YOLOv8s-cls平衡分类精度与速度224×224、416×416(推荐);≤640×640通用分类场景(如商品分类、场景识别)GPU:~220 FPS,CPU:~18 FPS;分类精度中等9.821.5
YOLOv8m-cls中等分类精度224×224、640×640(推荐);≤800×800工业分类(如产品外观分类、物料识别)GPU:~110 FPS,CPU:~9 FPS;分类精度较高22.960.3
YOLOv8l-cls高精度分类224×224、800×800(推荐);≤960×960医疗图像分类(如病灶分类)、复杂场景分类GPU:~55 FPS,CPU:~5 FPS;分类精度很高37.4128.8
YOLOv8x-cls分类精度天花板224×224、960×960(推荐);≤1280×1280科研级分类任务、大规模数据集分类GPU:~35 FPS,CPU:~3 FPS;分类精度最高56.8207.5

四、关键注意事项

  1. 训练与推理尺寸需一致
    若训练时用imgsz=800,推理时也必须用800(或同比例的32倍数),否则会导致检测精度大幅下降。
  2. 自动缩放与填充
    YOLO会自动将输入图片缩放到指定imgsz,并对不足的区域填充黑边(letterbox),无需手动裁剪/缩放图片:
    • 例:输入一张1920×1080的图片,指定imgsz=640,会先按比例缩放到640×360,再在上下填充140像素黑边,最终得到640×640。
  3. 自定义尺寸的设置方法
    • 命令行:yolo detect predict imgsz=800 source='img.jpg'
  4. 小目标检测的特殊优化
    若检测小目标,除了增大尺寸(如800/960),还可配合imgsz+hyp(超参数)调整,或使用YOLOv8的-s小模型(如yolov8s.pt)+大尺寸。

Python代码:

from ultralytics import YOLO model = YOLO('yolov8n.pt')# 正方形尺寸 results = model.predict('img.jpg', imgsz=800)# 非正方形尺寸(高×宽) results = model.predict('img.jpg', imgsz=[480,640])

五、总结

  • 新手/通用场景:直接用默认640×640;
  • 低算力设备(如树莓派、手机):320×320或416×416;
  • 小目标/高精度需求:800×800或960×960;
  • 所有尺寸必须是32的整数倍,训练和推理尺寸保持一致。
  • 分类模型默认适配224×224(经典分类网络输入尺寸),也支持更大尺寸;

Read more

Windows 安装 WSL2 并运行 Ubuntu 22.04 指南

Windows 安装 WSL2 并运行 Ubuntu 22.04 指南

Windows 安装 WSL2 并运行 Ubuntu 22.04 指南 本文为 Windows 10 和 Windows 11 用户提供从零开始搭建 WSL2 环境的详细指南,涵盖安装 Ubuntu 22.04、自定义存储位置、性能优化以及常见问题排查。无论你是开发者、运维工程师还是 Linux 爱好者,本文将助你快速上手 WSL2。 为什么要选择 WSL2 而非 VirtualBox 等虚拟机? 在选择运行 Linux 环境时,WSL2(Windows Subsystem for Linux 2)与 VirtualBox、VMware 等传统虚拟机相比具有显著优势。以下是选择 WSL2 的主要理由:

By Ne0inhk
Flutter 组件 chance 的适配 鸿蒙Harmony 实战 - 极速构建随机测试数据集、提升鸿蒙应用 Mock 交互及复杂场景压测效率

Flutter 组件 chance 的适配 鸿蒙Harmony 实战 - 极速构建随机测试数据集、提升鸿蒙应用 Mock 交互及复杂场景压测效率

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 chance 的适配 鸿蒙Harmony 实战 - 极速构建随机测试数据集、提升鸿蒙应用 Mock 交互及复杂场景压测效率 前言 在进行鸿蒙(OpenHarmony)应用的大规模集成测试或性能压测时,高质量的测试数据往往是稀缺资源。如果你依然靠手动编写 test1, 123456 这种低质量的字符串,不仅无法覆盖到 Unicode 字符集带来的渲染边界问题,更无法真实模拟出数据库索引在高负载下的实际表现。 chance 是一款被广泛认可的、具备“上帝视角”的随机数据生成库。它能够产出符合人类直觉的姓名、地址、日期、GUID 乃至随机的段落内容。 在鸿蒙适配实战中,利用 chance 构建动态的 UI 自适应列表和鲁棒性后端接口测试,能让你的开发效率提升数倍。本文将为你揭秘 chance 在鸿蒙全场景开发中的妙用。 一、

By Ne0inhk
OpenClaw 3.13 实战:从零在 Ubuntu 部署龙虾智能体,打通微信、浏览器与 Docker 全链路

OpenClaw 3.13 实战:从零在 Ubuntu 部署龙虾智能体,打通微信、浏览器与 Docker 全链路

文章目录 * 前言 * 一、先搞明白:这"龙虾"到底是个啥? * 二、Ubuntu环境准备:别让权限坑了你 * 三、Docker部署OpenClaw:把龙虾关进玻璃缸 * 四、接入微信:让龙虾蹲在你的聊天列表里 * 五、浏览器自动化:给龙虾装上"钳子" * 六、安全加固:给你的"龙虾"上把锁 * 1. 网络隔离 * 2. 权限最小化 * 3. 资源限制 * 4. 审计日志 * 七、实战:让它自动处理日报 * 八、踩坑总结:这些雷我帮你踩过了 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程

By Ne0inhk
Flutter 三方库 bybit 的鸿蒙化适配指南 - 实现高性能交易数据获取、支持 WebSockets 实时订单簿与加密货币交易接口集成

Flutter 三方库 bybit 的鸿蒙化适配指南 - 实现高性能交易数据获取、支持 WebSockets 实时订单簿与加密货币交易接口集成

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 bybit 的鸿蒙化适配指南 - 实现高性能交易数据获取、支持 WebSockets 实时订单簿与加密货币交易接口集成 前言 在进行 Flutter for OpenHarmony 的金融科技(FinTech)应用开发时,对接主流交易所的实时数据和交易功能是核心需求。bybit 是一个专为 Bybit 交易所设计的异步 Dart SDK。它封装了 REST API 调用和复杂的 WebSockets 订阅逻辑。本文将探讨如何在鸿蒙系统下构建低延迟、高可靠的加密资产交易终端。 一、原原理分析 / 概念介绍 1.1 基础原理 bybit 库基于 http 处理基础请求,并利用 web_socket_

By Ne0inhk