为什么在 YOLOv5 中两个结果不同?
Why are the two results different in YOLOv5?
我想用yolov5知道图片中的车辆数量
但是,模型的结果与 detect.py
不同
0。 img
1. model_result
# 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。 detect.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 不同。
看来是图像处理的问题。
实际上,对于您的示例,从 torch hub 加载的模型给出的输出与 detect.py
不同。查看 detect.py
的源代码,我发现有一些很好的图像预处理。从模型中心,我真的不知道输入发生了什么。从模型中心,生成的图像是这样的:
通过他们的预处理,这基本上就是您输入模型的图像。不希望从中进行任何检测都是诚实的。
但后来我尝试自己进行预处理(在他们的 tutorial 中也有说明)
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()
一切正常:
所以为了快速简单的回答,我会自己做预处理,这只是一个简单的一行额外步骤。祝你好运!
我想用yolov5知道图片中的车辆数量 但是,模型的结果与 detect.py
不同0。 img
1. model_result
# 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。 detect.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 不同。
看来是图像处理的问题。
实际上,对于您的示例,从 torch hub 加载的模型给出的输出与 detect.py
不同。查看 detect.py
的源代码,我发现有一些很好的图像预处理。从模型中心,我真的不知道输入发生了什么。从模型中心,生成的图像是这样的:
通过他们的预处理,这基本上就是您输入模型的图像。不希望从中进行任何检测都是诚实的。
但后来我尝试自己进行预处理(在他们的 tutorial 中也有说明)
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()
一切正常:
所以为了快速简单的回答,我会自己做预处理,这只是一个简单的一行额外步骤。祝你好运!