Ala*_*one 9 python deep-learning conv-neural-network yolo
Yolov8 和我怀疑 Yolov5 可以很好地处理非方形图像。我看不到任何裁剪输入图像的证据,即检测似乎到达最长边的边缘。它是否会调整为 640x604 的正方形,从而改变对象的纵横比,使它们更难以检测?
当从预训练模型开始对自定义数据集进行训练时,imgsz(图像大小)参数实际上有什么作用?
Mik*_*e B 10
现代 Yolo 版本,从 v3 开始,只要两边都是 32 的倍数,就可以处理任意大小的图像。这是因为主干的最大步长是 32,并且它是一个全卷积网络。
\n一个例子。假设您通过以下方式开始培训:
\nfrom ultralytics.yolo.engine.model import YOLO\n \nmodel = YOLO("yolov8n.pt")\nresults = model.train(data="coco128.yaml", imgsz=512) \nRun Code Online (Sandbox Code Playgroud)\n通过打印输入到模型 (im) 的内容,trainer.py您将获得以下输出:
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n 0%| | 0/8 [00:00<?, ?it/s]\n torch.Size([16, 3, 512, 512])\n 1/100 1.67G 1.165 1.447 1.198 226 512: 12%|\xe2\x96\x88\xe2\x96\x8e | 1/8 [00:01<00:08, 1.15s/it]\n torch.Size([16, 3, 512, 512])\n 1/100 1.68G 1.144 1.511 1.22 165 512: 25%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x8c | 2/8 [00:02<00:06, 1.10s/it]\n torch.Size([16, 3, 512, 512])\nRun Code Online (Sandbox Code Playgroud)\n因此,在训练过程中,图像必须重新调整为相同的大小,以便能够创建小批量,因为您无法连接不同形状的张量。imgsz选择要训练的图像的大小。
现在,让我们看一下预测。假设您选择 asset 下的图像作为源和 imgsz 512
\nfrom ultralytics.yolo.engine.model import YOLO\n \nmodel = YOLO("yolov8n.pt")\nresults = model.predict(stream=True, imgsz=512) # source already setup\nRun Code Online (Sandbox Code Playgroud)\n通过打印原始图像形状 (im0) 和输入到模型中的图像形状 (im),predictor.py您将获得以下输出:
(yolov8) \xe2\x9e\x9c ultralytics git:(main) \xe2\x9c\x97 python new.py \nUltralytics YOLOv8.0.23 Python-3.8.15 torch-1.11.0+cu102 CUDA:0 (Quadro P2000, 4032MiB)\nYOLOv8n summary (fused): 168 layers, 3151904 parameters, 0 gradients, 8.7 GFLOPs\nim0s (1080, 810, 3)\nim torch.Size([1, 3, 512, 384])\nimage 1/2 /home/mikel.brostrom/ultralytics/ultralytics/assets/bus.jpg: 512x384 4 persons, 1 bus, 7.4ms\nim0s (720, 1280, 3)\nim torch.Size([1, 3, 288, 512])\nimage 2/2 /home/mikel.brostrom/ultralytics/ultralytics/assets/zidane.jpg: 288x512 3 persons, 2 ties, 5.8ms\nSpeed: 0.4ms pre-process, 6.6ms inference, 1.5ms postprocess per image at shape (1, 3, 512, 512)\nRun Code Online (Sandbox Code Playgroud)\n您可以看到最长的图像边被重新整形为 512。短边被重新整形为最接近的 32 倍数,同时保持纵横比。由于您不会同时输入多个图像,因此无需将图像重新整形为相同的形状并将它们堆叠起来,从而可以避免填充。
\n