【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.2 8.7
YOLOv8s (small) 平衡轻量化与精度,基础版中性价比最高 416×416、640×640(推荐);≤800×800 通用场景(如安防监控、普通目标检测)、边缘设备(如工业相机) GPU:~200 FPS,CPU:~15 FPS;精度中等(mAP50≈72) 11.2 28.6
YOLOv8m (medium) 中等规模,深度/宽度提升,精度显著提高 640×640(推荐)、800×800;≤960×960 中等算力设备(如中端GPU)、精度要求较高的场景(如电商商品检测、交通标识识别) GPU:~100 FPS,CPU:~8 FPS;精度较高(mAP50≈76) 25.9 78.9
YOLOv8l (large) 大规模模型,特征提取能力强 800×800、960×960(推荐);≤1280×1280 高算力设备(如RTX 30/40系列GPU)、高精度需求(如工业缺陷检测、医疗影像初筛) GPU:~50 FPS,CPU:~4 FPS;精度很高(mAP50≈78) 43.7 165.2
YOLOv8x (extra large) 超大模型,精度天花板,参数量最大 960×960、1280×1280(推荐);≤1536×1536 服务器级GPU、精度优先无实时性要求的场景(如静态图片分析、数据集标注辅助) GPU:~30 FPS,CPU:~2 FPS;精度最高(mAP50≈79) 68.2 257.8
轻量化变体 YOLOv8n-p2 小感受野,适配小尺寸图片(如48×48、96×96) 48×48、96×96(推荐);≤320×320 小目标检测(如人脸关键点、细小零件检测)、移动端小尺寸图片推理 速度比YOLOv8n快10%,精度针对小目标提升5% 2.8 7.5
YOLOv8s-p6 多尺度特征融合,适配超大尺寸图片(如1280×1280) 1280×1280(推荐)、1536×1536;≤2048×2048 远距离目标检测(如无人机航拍、安防远距离监控) 速度比YOLOv8s慢15%,大目标精度提升8% 12.5 35.2
实例分割模型 YOLOv8n-seg 轻量化分割,检测+分割二合一 320×320、416×416(推荐);≤640×640 移动端分割场景(如简单场景抠图、实时语义分割) GPU:~250 FPS,CPU:~15 FPS;分割精度基础级 3.4 10.1
YOLOv8s-seg 平衡分割精度与速度 416×416、640×640(推荐);≤800×800 通用分割场景(如路面分割、商品轮廓提取) GPU:~180 FPS,CPU:~12 FPS;分割精度中等 11.8 31.4
YOLOv8m-seg 中等分割精度 640×640(推荐)、800×800;≤960×960 工业分割(如零件轮廓检测、缺陷区域分割) GPU:~80 FPS,CPU:~6 FPS;分割精度较高 27.2 85.3
YOLOv8l-seg 高精度分割 800×800、960×960(推荐);≤1280×1280 医疗影像分割(如器官轮廓)、高精度工业质检 GPU:~40 FPS,CPU:~3 FPS;分割精度很高 45.8 176.5
YOLOv8x-seg 分割精度天花板 960×960、1280×1280(推荐);≤1536×1536 科研级分割任务、复杂场景分割(如遥感影像分割) GPU:~25 FPS,CPU:~1 FPS;分割精度最高 70.8 275.6
姿态估计模型 YOLOv8n-pose 轻量化姿态估计,检测人体关键点 320×320、480×480(推荐);≤640×640 移动端人体姿态识别(如健身动作检测、简单行为分析) GPU:~280 FPS,CPU:~18 FPS;关键点检测精度基础级 3.3 9.2
YOLOv8s-pose 平衡姿态精度与速度 480×480、640×640(推荐);≤800×800 通用姿态检测(如监控人体行为、舞蹈动作分析) GPU:~190 FPS,CPU:~14 FPS;关键点检测精度中等 11.5 30.1
YOLOv8m-pose 中等姿态精度 640×640(推荐)、800×800;≤960×960 工业姿态检测(如工人操作规范识别) GPU:~90 FPS,CPU:~7 FPS;关键点检测精度较高 26.5 82.4
YOLOv8l-pose 高精度姿态估计 800×800、960×960(推荐);≤1280×1280 医疗姿态分析(如康复动作检测)、高精度行为识别 GPU:~45 FPS,CPU:~3 FPS;关键点检测精度很高 44.9 172.1
YOLOv8x-pose 姿态估计精度天花板 960×960、1280×1280(推荐);≤1536×1536 科研级姿态分析、复杂行为识别(如体育动作拆解) GPU:~28 FPS,CPU:~2 FPS;关键点检测精度最高 69.5 268.9
分类模型 YOLOv8n-cls 轻量化图像分类 224×224、320×320(推荐);≤416×416 移动端图片分类(如相册分类、简单物品识别) GPU:~350 FPS,CPU:~25 FPS;分类精度基础级 2.7 6.4
YOLOv8s-cls 平衡分类精度与速度 224×224、416×416(推荐);≤640×640 通用分类场景(如商品分类、场景识别) GPU:~220 FPS,CPU:~18 FPS;分类精度中等 9.8 21.5
YOLOv8m-cls 中等分类精度 224×224、640×640(推荐);≤800×800 工业分类(如产品外观分类、物料识别) GPU:~110 FPS,CPU:~9 FPS;分类精度较高 22.9 60.3
YOLOv8l-cls 高精度分类 224×224、800×800(推荐);≤960×960 医疗图像分类(如病灶分类)、复杂场景分类 GPU:~55 FPS,CPU:~5 FPS;分类精度很高 37.4 128.8
YOLOv8x-cls 分类精度天花板 224×224、960×960(推荐);≤1280×1280 科研级分类任务、大规模数据集分类 GPU:~35 FPS,CPU:~3 FPS;分类精度最高 56.8 207.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'

    • Python代码:

      python 复制代码
      from ultralytics import YOLO
      model = YOLO('yolov8n.pt')
      # 正方形尺寸
      results = model.predict('img.jpg', imgsz=800)
      # 非正方形尺寸(高×宽)
      results = model.predict('img.jpg', imgsz=[480, 640])
  4. 小目标检测的特殊优化

    若检测小目标,除了增大尺寸(如800/960),还可配合imgsz+hyp(超参数)调整,或使用YOLOv8的-s小模型(如yolov8s.pt)+大尺寸。

五、总结

  • 新手/通用场景:直接用默认640×640;
  • 低算力设备(如树莓派、手机):320×320或416×416;
  • 小目标/高精度需求:800×800或960×960;
  • 所有尺寸必须是32的整数倍,训练和推理尺寸保持一致。
  • 分类模型默认适配224×224(经典分类网络输入尺寸),也支持更大尺寸;
相关推荐
我送炭你添花3 小时前
Pelco KBD300A 模拟器:04+1.Python 打包详解:历史、发展与多种方式对比
python·测试工具·运维开发
yaoh.wang3 小时前
力扣(LeetCode) 27: 移除元素 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·双指针
幸存者letp3 小时前
Python 常用方法分类大全
linux·服务器·python
another heaven3 小时前
【深度学习 YOLO官方模型全解析】
人工智能·深度学习·yolo
lsx2024063 小时前
C语言中的强制类型转换
开发语言
coderHing[专注前端]4 小时前
告别 try/catch 地狱:用三元组重新定义 JavaScript 错误处理
开发语言·前端·javascript·react.js·前端框架·ecmascript
2401_841495644 小时前
【自然语言处理】中文 n-gram 词模型
人工智能·python·算法·自然语言处理·n-gram·中文文本生成模型·kneser-ney平滑
嘻哈baby4 小时前
为什么越来越多的人放弃Flask转向FastAPI?
python
星辰烈龙4 小时前
黑马程序员Java基础9
java·开发语言