YOLOV8如何处理不同的图像尺寸

问题描述 投票:0回答:1

Yolov8 和我怀疑 Yolov5 可以很好地处理非方形图像。我看不到任何裁剪输入图像的证据,即检测似乎到达最长边的边缘。它是否会调整为 640x604 的正方形,从而改变对象的纵横比,使它们更难以检测?

从预训练模型开始对自定义数据集进行训练时,

imgsz
(图像大小)参数实际上有什么作用?

python deep-learning conv-neural-network yolo
1个回答
10
投票

现代 Yolo 版本,从 v3 开始,只要两边都是 32 的倍数,就可以处理任意大小的图像。这是因为主干的最大步长是 32,并且它是一个全卷积网络。

培训

举个例子。假设您通过以下方式开始培训:

from ultralytics.yolo.engine.model import YOLO
  
model = YOLO("yolov8n.pt")
results = model.train(data="coco128.yaml", imgsz=512) 

通过打印

trainer.py
中输入模型 (im) 的内容,您将获得以下输出:

Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
  0%|          | 0/8 [00:00<?, ?it/s]
 torch.Size([16, 3, 512, 512])
      1/100      1.67G      1.165      1.447      1.198        226        512:  12%|█▎        | 1/8 [00:01<00:08,  1.15s/it]
 torch.Size([16, 3, 512, 512])
      1/100      1.68G      1.144      1.511       1.22        165        512:  25%|██▌       | 2/8 [00:02<00:06,  1.10s/it]
 torch.Size([16, 3, 512, 512])

因此,在训练过程中,图像必须重新调整为相同的大小,以便能够创建小批量,因为您无法连接不同形状的张量。

imgsz
选择要训练的图像的大小。

预测

现在,让我们来看看预测。假设您选择 asset 下的图像作为源并选择 imgsz 512 by

from ultralytics.yolo.engine.model import YOLO
  
model = YOLO("yolov8n.pt")
results = model.predict(stream=True, imgsz=512) # source already setup

通过打印原始图像形状 (im0) 和

predictor.py
中输入模型的形状 (im),您将获得以下输出:

(yolov8) ➜  ultralytics git:(main) ✗ python new.py 
Ultralytics YOLOv8.0.23 🚀 Python-3.8.15 torch-1.11.0+cu102 CUDA:0 (Quadro P2000, 4032MiB)
YOLOv8n summary (fused): 168 layers, 3151904 parameters, 0 gradients, 8.7 GFLOPs
im0s (1080, 810, 3)
im torch.Size([1, 3, 512, 384])
image 1/2 /home/mikel.brostrom/ultralytics/ultralytics/assets/bus.jpg: 512x384 4 persons, 1 bus, 7.4ms
im0s (720, 1280, 3)
im torch.Size([1, 3, 288, 512])
image 2/2 /home/mikel.brostrom/ultralytics/ultralytics/assets/zidane.jpg: 288x512 3 persons, 2 ties, 5.8ms
Speed: 0.4ms pre-process, 6.6ms inference, 1.5ms postprocess per image at shape (1, 3, 512, 512)

您可以看到最长的图像边被重新整形为 512。短边被重新整形为最接近的 32 倍数,同时保持宽高比。由于您不会同时输入多个图像,因此无需将图像重塑为相同的形状并将它们堆叠起来,从而可以避免填充。

© www.soinside.com 2019 - 2024. All rights reserved.