python - 为什么在 YOLOv5 中这两个结果不同?
问题描述
我想用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 不同。
解决方案
看来是图像处理问题。
实际上,在您的示例中,从 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()
一切正常:
因此,为了快速简单地回答,我只需对自己进行预处理,这只是简单的一行额外步骤。祝你好运!
推荐阅读
- r - Shiny R中条件面板的替代方案
- powershell - 有没有办法通过命令行安装 Borland Delphi 7?
- postgresql - 为什么我在初始化 gitlab 数据库 - postgresql 期间无法进行身份验证?
- windows - 在 Windows 上通过 docker 安装 Clickhouse 的主机上的数据目录权限
- c++ - 在 C++ 中获取有符号整数乘法的高部分
- python-3.x - 如何从数据集中替换问号符号并替换为相邻行值?
- twilio - 使用 SSML 时 Twilio Autopilot 崩溃?
- java - 带有 gradle 的 IntelliJ 导致编译不一致
- python - 非默认参数遵循默认参数
- javascript - 如何为在 ng-repeat 中循环的每个 md-chip 应用样式:AngularJS