【发布时间】:2023-01-29 21:08:26
【问题描述】:
Yolov8 和我怀疑 Yolov5 可以很好地处理非方形图像。我看不到任何裁剪输入图像的证据,即检测似乎到达了最长边的边缘。它是否会调整为 640x604 的正方形,这会改变物体的纵横比,使它们更难被发现?
当从预训练模型开始训练自定义数据集时,imgsz(图像大小)参数实际上做了什么?
【问题讨论】:
标签: python deep-learning conv-neural-network yolov5
Yolov8 和我怀疑 Yolov5 可以很好地处理非方形图像。我看不到任何裁剪输入图像的证据,即检测似乎到达了最长边的边缘。它是否会调整为 640x604 的正方形,这会改变物体的纵横比,使它们更难被发现?
当从预训练模型开始训练自定义数据集时,imgsz(图像大小)参数实际上做了什么?
【问题讨论】:
标签: python deep-learning conv-neural-network yolov5
现代 Yolo 版本,从 v3 开始,只要两边都是 32 的倍数,就可以处理任意大小的图像。这是因为主干的最大步幅为 32,并且它是一个全卷积网络。
一个例子。假设您通过以下方式选择资产下的图像作为源和 imgsz 512:
from ultralytics.yolo.engine.model import YOLO
model = YOLO("yolov8n.pt")
results = model.predict(stream=True, imgsz=512) # source already setup
for i, (result) in enumerate(results):
boxes = result.boxes # Boxes object for bbox outputs
masks = result.masks # Masks object for segmenation masks outputs
probs = result.probs # Class probabilities for classification outputs
通过在predictor.py 中打印原始图像形状 (im0) 和馈送到模型 (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 的倍数,同时保持两边之间的比例和纵横比。
【讨论】: