如何修复对象检测应用程序中的 ValueError?
How can I fix ValueError in object detection application?
我正在尝试使用 onnxruntime 和 opencv 将边界框添加到图像,以使用 yolov2 神经网络检测对象。相反,我在运行时遇到错误。
我将输入图像转换为兼容的张量/numpy 数组以输入模型。一旦我知道一切都完美无误,我添加了以下代码来添加边界框:
while True:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
for x, y, w, h in pred_onnx:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
roiGray = gray[y:y+h, x:x+w]
roiColor = img[y:y+h, x:x+w]
cv2.imshow("Detect", cv2.resize(img, (500, 500)))
cv2.waitKey(0)
我原以为图像会显示(绿色)边界框。相反,我收到此错误:
File "C:\Users\MyName\Desktop\OnnxCV\onnxcv\object_detector.py", line 27, in <module>
for x, y, w, h in pred_onnx:
ValueError: not enough values to unpack (expected 4, got 1)
如果有帮助,完整代码是here。
pred_onnx
数组不是当前代码预期的形状——还有一些 post 处理要做。有关输出的详细信息,请参阅 here。
例如,使用链接 post 建议的 30% 阈值,您将循环遍历并过滤边界框,如下所示:
for r in range(13):
for c in range(13):
confidence = pred_onnx[0, 4, r, c]
if confidence < 0.3:
continue
x = pred_onnx[0, 0, r, c]
y = pred_onnx[0, 1, r, c]
w = pred_onnx[0, 2, r, c]
h = pred_onnx[0, 3, r, c]
...
我正在尝试使用 onnxruntime 和 opencv 将边界框添加到图像,以使用 yolov2 神经网络检测对象。相反,我在运行时遇到错误。
我将输入图像转换为兼容的张量/numpy 数组以输入模型。一旦我知道一切都完美无误,我添加了以下代码来添加边界框:
while True:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
for x, y, w, h in pred_onnx:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
roiGray = gray[y:y+h, x:x+w]
roiColor = img[y:y+h, x:x+w]
cv2.imshow("Detect", cv2.resize(img, (500, 500)))
cv2.waitKey(0)
我原以为图像会显示(绿色)边界框。相反,我收到此错误:
File "C:\Users\MyName\Desktop\OnnxCV\onnxcv\object_detector.py", line 27, in <module>
for x, y, w, h in pred_onnx:
ValueError: not enough values to unpack (expected 4, got 1)
如果有帮助,完整代码是here。
pred_onnx
数组不是当前代码预期的形状——还有一些 post 处理要做。有关输出的详细信息,请参阅 here。
例如,使用链接 post 建议的 30% 阈值,您将循环遍历并过滤边界框,如下所示:
for r in range(13):
for c in range(13):
confidence = pred_onnx[0, 4, r, c]
if confidence < 0.3:
continue
x = pred_onnx[0, 0, r, c]
y = pred_onnx[0, 1, r, c]
w = pred_onnx[0, 2, r, c]
h = pred_onnx[0, 3, r, c]
...