2

我想用yolov5知道图中车辆的数量,但是模型的结果和detect.py不一样

0.图片 在此处输入图像描述。

1.模型_结果

# Model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')  # or yolov5m, yolov5l, yolov5x, custom

# Images
img = 'D:\code\YOLO\dataset\img\public02.png'  # or file, Path, PIL, OpenCV, numpy, list

# Inference
results = model(img)

# Results
results.print()  # or .show(), .save(), .crop(), .pandas(), etc.

结果->(no detections)

2.检测.py

from IPython.display import Image
import os

val_img_path = 'D:\code\YOLO\dataset\img\public02.png'
 
!python detect.py --img 416 --conf 0.25 --source "{val_img_path}"

结果-> 在这里也输入图片描述

我知道如果我没有在detect.py中指定权重选项,则使用默认的yolo5s模型。但是,结果 1 与使用相同模型的结果 2 不同。

4

1 回答 1

1

看来是图像处理问题。

实际上,在您的示例中,从 torch hub 加载的模型提供的输出与detect.py. 查看源代码detect.py我看到有一些很好的图像预处理。从模型中心,我真的不知道输入发生了什么。从模型中心,生成的图像是这样的:

火炬轮毂型号

通过他们的预处理,这基本上就是您输入模型的图像。老实说,不希望有任何检测。

但是后来我尝试自己进行预处理(在他们的教程中也有说明)

import torch
import cv2

# Model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')  # or yolov5m, yolov5l, yolov5x, custom

# Image
imgPath = '/content/9X9FP.png'
img = cv2.imread(imgPath)[..., ::-1]  # Pre-processing OpenCV image (BGR to RGB)

# Inference
results = model(img)

# Results
results.save()

一切正常:

良好的检测

因此,为了快速简单地回答,我只需对自己进行预处理,这只是简单的一行额外步骤。祝你好运!

于 2021-10-24T21:48:17.527 回答