【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)
二、尺寸规则(必须遵守)
-
尺寸需是32的整数倍
YOLO的网络结构包含多次32倍下采样(如640→320→160→80→40→20→10),输入尺寸必须能被32整除,否则会导致特征图尺寸不匹配,报错或精度下降。
✅ 合法尺寸:320、416、640、800、960、1280(常用)
❌ 非法尺寸:600、700、801(无法被32整除)
-
支持非正方形尺寸(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 |
四、关键注意事项
-
训练与推理尺寸需一致
若训练时用
imgsz=800,推理时也必须用800(或同比例的32倍数),否则会导致检测精度大幅下降。 -
自动缩放与填充
YOLO会自动将输入图片缩放到指定
imgsz,并对不足的区域填充黑边(letterbox),无需手动裁剪/缩放图片:- 例:输入一张1920×1080的图片,指定
imgsz=640,会先按比例缩放到640×360,再在上下填充140像素黑边,最终得到640×640。
- 例:输入一张1920×1080的图片,指定
-
自定义尺寸的设置方法
-
命令行:
yolo detect predict imgsz=800 source='img.jpg' -
Python代码:
pythonfrom ultralytics import YOLO model = YOLO('yolov8n.pt') # 正方形尺寸 results = model.predict('img.jpg', imgsz=800) # 非正方形尺寸(高×宽) results = model.predict('img.jpg', imgsz=[480, 640])
-
-
小目标检测的特殊优化
若检测小目标,除了增大尺寸(如800/960),还可配合
imgsz+hyp(超参数)调整,或使用YOLOv8的-s小模型(如yolov8s.pt)+大尺寸。
五、总结
- 新手/通用场景:直接用默认640×640;
- 低算力设备(如树莓派、手机):320×320或416×416;
- 小目标/高精度需求:800×800或960×960;
- 所有尺寸必须是32的整数倍,训练和推理尺寸保持一致。
- 分类模型默认适配224×224(经典分类网络输入尺寸),也支持更大尺寸;