yolov5用官方权重文件测试detect.py检测无响应

yolov5用官方权重文件测试detect.py检测无结果

img


运行过程中没有报错,但没有任何结果。

原因很简单,就是你的cuda版本错误了。英伟达的显卡从30系开始,就不支持cuda11.0以下的cuda版本了,你这个40系的需要安装cuda11以上的cuda版本才行。
所以解决方案就是换cpu,或者重新安装cuda,然后torch等和cuda相关的都要换成cuda11.x的版本。一般来说,cuda11.x只要大于torch要求的11.y(x>=y)是没啥问题的,所以你可以安装cuda11.8,然后torch和torchvision等安装就看你要多少版本了。另外,请注意,cuda目前最新的是12.x的版本,目前阶段不是很建议用12.x版本的cuda

该回答引用ChatGPT
可能是以下几个原因导致了无响应的问题:

1. 检测图片绝对路径不正确,导致detect.py无法读取图片数据。请确保图片路径是正确的。

2. 模型权重文件路径不正确,导致模型未正确加载。请确保路径正确并且模型可以正常读取。

3. 硬件资源不足。如果检测图片分辨率较高,使用CPU运行可能会导致无响应问题。建议在有GPU的情况下运行。

下面是一个可能有用的示例代码,可以用来验证是否存在以上原因:

python
import torch
from PIL import Image
from torch.utils.data import DataLoader

from models.experimental import attempt_load
from utils.autoanchor import check_anchors
from utils.datasets import LoadImages
from utils.general import non_max_suppression
from utils.torch_utils import select_device


def yolov5_detect(img_path, weight_file_path):
device = select_device('')
model = attempt_load(weight_file_path, map_location=device)
img = Image.open(img_path)
img_size = img.size
img = img.resize((640, 640))
img = torch.from_numpy(img).float().to(device)
img /= 255.0
img = img.permute(2, 0, 1).unsqueeze(0)

conf_thres, iou_thres = 0.25, 0.45

pred = model(img)[0]
pred = non_max_suppression(pred, conf_thres, iou_thres, fast=True, classes=None, agnostic=False)
pred = pred[0]

if pred is not None:
for det in pred:
x1, y1, x2, y2, conf, cls = det
x1, y1, x2, y2 = int(x1 * img_size[0]), int(y1 * img_size[1]), \
int(x2 * img_size[0]), int(y2 * img_size[1])

print(f'class: {cls}, confidence: {conf:.4f}, box: [{x1}, {y1}, {x2}, {y2}]')
else:
print('No object detected')


if __name__ == '__main__':
img_path = 'test.jpg' # 完整路径或相对路径
weight_file_path = 'yolov5s.pt' # 完整路径或相对路径,与detect.py中的--weights参数相同

yolov5_detect(img_path, weight_file_path)


对于硬件资源不足的问题,如果使用CPU运行,可以考虑减小图片分辨率、降低batch size的大小(在detect.py里使用``--batch-size``参数),或者尝试使用GPU运行。

如果yolov5用官方权重文件测试detect.py检测无响应,可能是由于代码有问题,比如权重文件的使用方式不对,死循环,或者计算量太大,程序还在执行中,还没有出结果等。所以首先检查下代码。其次有可能是你的电脑cpu或gpu性能不足,可以打开任务管理器,看下你的CPU使用率是否太高。

我遇到过这个问题,但我不清楚你的跟我之前遇到的是否相同,我之前在参数--source 处填写的是网络摄像头rtsp或者0 ,填写后发现程序一直运行但就是打不开,后来一检查,才发现是摄像头异常了,或者是连接rtsp网络摄像头时没有使用同一个网段WiFi,所以导致程序运行却不出结果,也不报错,你可以查看一下--source参数是否是摄像头,如果是,检查一下连接摄像头是否正常。

不知道你这个问题是否已经解决, 如果还没有解决的话:


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^