我发送了一个Raspberry Pi来使用yolov8的训练文件。虽然计算机代码没有任何错误,但我在Raspberry Pi上遇到了一个错误。我从一开始安装ultralytics
时就遇到了“非法指令”错误。在我的研究中,我发现torch
和torchvision
也会有同样的错误。
Used card:Raspberry Pi 3B+,Raspbian 64 Bit OS,Python 3.9.2,
为什么它在我的电脑上工作,而不是树莓?
如果你能帮忙我会很高兴的。
from ultralytics import YOLO
import supervision as sv
import cv2
cap = cv2.VideoCapture(0)
model = YOLO(r"train/best.pt")
box_a = sv.BoxAnnotator(
thickness=2,
text_thickness=2,
text_scale=1
)
while True:
ret,frame = cap.read()
sonuc=model(source=frame, agnostic_nms=True)[0]
detection = sv.Detections.from_yolov8(sonuc)
labels = [
f"{model.model.names[class_id]}{confidence:0.2f}"
for _,confidence,class_id,_
in detection
]
frame = box_a.annotate(
scene=frame,
detections=detection,
labels=labels
)
# Dur için = 0, Düz Git = 1, İnsan = 2, Sağ Dön = 3, Sola Dön = 4
if len(detection.class_id)>0:
x = detection.class_id[0]
x1, y1, x2, y2 = int(detection.xyxy[0, 0]), int(detection.xyxy[0, 1]), int(detection.xyxy[0, 2]), int(
detection.xyxy[0, 3])
width = x2 - x1
if width>180:
if x == 0 and width>180:
#Dur levhasını tanımıştır.
pass
elif x == 1:
# Düz git levhası
pass
elif x ==2:
# İnsan figürü
pass
elif x==3:
# Sağa dön levhası
pass
elif x==4:
# Sola dön levhası
pass
else:
pass
cv2.imshow("Deneme",frame)
if cv2.waitKey(20) &0XFF==ord("q"):
break
cap.release()
cv2.destroyAllWindows()
我安装了pytorch 1.13,torchvision,ultralytics git page,但在raspberry pi上不工作,而在电脑上工作。
1条答案
按热度按时间jmo0nnb31#
首先,我不太清楚它的原因,我在某个地方读到过,它是由ARMV8.2架构增加的一些指令组成的,但我知道它的解决方案。
将 Torch 降级到1.12
之后,您将收到一个错误,指示torchvision不兼容,因此您将其降级为兼容的torchvision 0.13.0。您可以从链接https://pypi.org/project/torchvision/的兼容性表中进行chenck
确保python版本也是兼容的。在你的情况下3.9.2应该没问题。
这个方法在我的RPI4上工作。