我将分别使用 YOLOv8 和 DeepSORT 通过导入它们的包来检测和跟踪视频文件中的对象。在帧读取的第一次迭代中,一切正常,但在第二次迭代中,Jupyter 笔记本内核在
tracks = tracker.update_tracks(results, frame=frame)
行处死掉。可能是什么原因?
代码如下:
import torch
import cv2
import ultralytics
from deep_sort_realtime.deepsort_tracker import DeepSort
model = ultralytics.YOLO("yolov8m.pt")
tracker = DeepSort(max_age=50)
CONFIDENCE_THRESHOLD = 0.8
cap = cv2.VideoCapture('video.mp4')
while True:
ret, frame = cap.read()
if not ret:
break
detections = model(frame)[0]
results = []
for data in detection.boxes.data.tolist():
confidence = data[4]
if float(confidence) < CONFIDENCE_THRESHOLD:
continue
xmin, ymin, xmax, ymax = int(data[0]), int(data[1]), int(data[2]), int(data[3])
class_id = int(data[5])
results.append([[xmin, ymin, xmax - xmin, ymax - ymin], confidence, class_id])
tracks =tracker.update_tracks(results, frame=frame)
for track in tracks:
if not track.is_confirmed():
continue
bbox = track.to_tlbr()
track_id = track.track_id
class_name = track.get_class()
cv2.imshow("Frame", frame)
if cv2.waitKey(1) == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
解决方案是将
numpy
和 scipy
升级到最新版本,因为我使用的是最新版本的 Jupyter Notebook。