【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

Flutter for OpenHarmony:Flutter 三方库 pem — 在鸿蒙应用中优雅处理加密证书与密钥(适配鸿蒙 HarmonyOS Next ohos)

Flutter for OpenHarmony:Flutter 三方库 pem — 在鸿蒙应用中优雅处理加密证书与密钥(适配鸿蒙 HarmonyOS Next ohos)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net。 Flutter for OpenHarmony:Flutter 三方库 pem — 在鸿蒙应用中优雅处理加密证书与密钥(适配鸿蒙 HarmonyOS Next ohos) 在现代移动应用的网络安全、数字签名及加密传输中,证书的管理是基石。无论是对接 HTTPS 的私有根证书,还是在进行 RSA 加密时加载私钥,我们通常会接触到 PEM (Privacy-Enhanced Mail) 格式的文件——即那些以 -----BEGIN CERTIFICATE----- 开头的文本块。 在 Flutter for OpenHarmony 开发中,如何高效地解析和编码这些 Base64 文本数据?pem 库提供了一套标准的、纯 Dart 的工具包。今天,我们将实战如何利用它在鸿蒙项目里完成安全底座的构建。 一、

claude code的安装和更新方法(macos)

claude code的安装和更新方法(macos)

目录 一、native安装:Run `claude install` 二、npm安装 1. 安装 node.js 2. 安装/更新 claude code 2.1. 检查当前版本和最新版本 3. Claude Code 自带更新命令: claude update 一句话总结:用npm安装claude code,用brew安装npm,用node来安装npm * homebrew是macos的系统级包管理器,类似app store的命令行版 * npm是node.js的包管理器,类似python的pip 【注意】 1)brew也可以安装claude code,而且能一条命令搞定安装和更新 (安装:brew install claude-code;更新:brew upgrade 一次性更新所有软件)

Flutter 三方库 bs58 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、高效的 Base58 数字货币与区块链数据编解码引擎

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 bs58 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、高效的 Base58 数字货币与区块链数据编解码引擎 在鸿蒙(OpenHarmony)系统的分布式账本、Web3 钱包或加密金融应用中,如何处理类似比特币(Bitcoin)地址这种具备“高易读性”且“无歧义”的编码?bs58 为开发者提供了一套工业级的 Base58 编解码实现方案。本文将带您实战其在鸿蒙生态中的加密应用。 前言 什么是 Base58?它是一种针对数字资产设计的字节编码方案。相比传统的 Base64,它特意去除了容易引起混淆的字符(如 0, O, I, l 等),并去除了在双击选择时可能产生问题的非字母符号。在 Flutter for OpenHarmony 的实际开发中,

已解决:Cannot find a valid baseurl for repo: base/7/x86_64

已解决:Cannot find a valid baseurl for repo: base/7/x86_64

使用 Yum 命令遇到此错误,下图是报错信息: 分析:由第二行报错信息得在尝试从 CentOS 镜像列表获取信息时遇到了问题,无法解析 mirrorlist.centos.org 这个域名。这可能是由于网络连接问题导致的。 以下是解决方法: 一、首先通过 ping 命令检查网络连接,确保网络能够正常访问外网。 ping www.baidu.com  Ctrl + c 停止访问 可以正常访问的结果如下图所示: 二、如果网络正常,问题可能是当前的镜像源出现故障或者当前网络无法访问镜像源。可以尝试更换为其他可用的镜像源。 可以通过 vi 命令编辑 /etc/yum.repos.d/CentOS-Base.repo 文件,将其中的 mirrorlist 行用 # 号注释掉,并将 baseurl 行取消注释,并修改为其他可靠的镜像地址。