将 YOLOv8 检测器与 BoT-SORT 一起使用时,我看到与光流相关的警告

问题描述 投票:0回答:1

gmc.py 发出警告,第 273 行,没有足够的匹配点。 我正在使用 BoT-SORT 跟踪模型和 YOLOv8 检测模型。对于某些视频,我看到此警告:“警告:没有足够的匹配点” 之后,我看到了这个:

Traceback (most recent call last):
  File "/media/strh/MyDrive/Track/vision-YOLOv8_Evolve/vision/yolov8_track_third_cell.py", line 44, in <module>
    results = model.track(frame, persist=True, show=False, tracker="botsort.yaml", conf= 0, iou = 0.5)  # predict on an image
  File "/media/strh/MyDrive/Track/vision-YOLOv8_Evolve/vision/ultralytics/ultralytics/engine/model.py", line 262, in track
    return self.predict(source=source, stream=stream, **kwargs)
  File "/media/strh/MyDrive/Track/vision-YOLOv8_Evolve/vision/ultralytics/ultralytics/engine/model.py", line 242, in predict
    return self.predictor.predict_cli(source=source) if is_cli else self.predictor(source=source, stream=stream)
  File "/media/strh/MyDrive/Track/vision-YOLOv8_Evolve/vision/ultralytics/ultralytics/engine/predictor.py", line 196, in __call__
    return list(self.stream_inference(source, model, *args, **kwargs))  # merge list of Result into one
  File "/home/strh/anaconda3/lib/python3.10/site-packages/torch/utils/_contextlib.py", line 35, in generator_context
    response = gen.send(None)
  File "/media/strh/MyDrive/Track/vision-YOLOv8_Evolve/vision/ultralytics/ultralytics/engine/predictor.py", line 264, in stream_inference
    self.run_callbacks('on_predict_postprocess_end')
  File "/media/strh/MyDrive/Track/vision-YOLOv8_Evolve/vision/ultralytics/ultralytics/engine/predictor.py", line 358, in run_callbacks
    callback(self)
  File "/media/strh/MyDrive/Track/vision-YOLOv8_Evolve/vision/ultralytics/ultralytics/trackers/track.py", line 48, in on_predict_postprocess_end
    tracks = predictor.trackers[i].update(det, im0s[i])
  File "/media/strh/MyDrive/Track/vision-YOLOv8_Evolve/vision/ultralytics/ultralytics/trackers/byte_tracker.py", line 278, in update
    warp = self.gmc.apply(img, dets)
  File "/media/strh/MyDrive/Track/vision-YOLOv8_Evolve/vision/ultralytics/ultralytics/trackers/utils/gmc.py", line 85, in apply
    return self.applySparseOptFlow(raw_frame, detections)
  File "/media/strh/MyDrive/Track/vision-YOLOv8_Evolve/vision/ultralytics/ultralytics/trackers/utils/gmc.py", line 273, in applySparseOptFlow
    matchedKeypoints, status, err = cv2.calcOpticalFlowPyrLK(self.prevFrame, frame, self.prevKeyPoints, None)
cv2.error: OpenCV(4.6.0) /croot/opencv-suite_1676452025216/work/modules/video/src/lkpyramid.cpp:1260: error: (-215:Assertion failed) (npoints = prevPtsMat.checkVector(2, CV_32F, true)) >= 0 in function 'calc'

请帮我解决问题。

tracking yolo yolov8 object-tracking
1个回答
0
投票

请为观众的问题添加代码片段和更多上下文

在我的例子中,这个问题是由低置信度检测引起的,置信度分数低于传递给跟踪器的

track_high_thresh

请参阅此拉取请求了解更多详细信息。

我发现了两个潜在的修复方法:

  1. 将预测的置信度分数设置得更高 (

    model.track(source="my-source", tracker='botsort.yaml', show=True, conf=0.4
    )

  2. 在ultralytics/trackers/utils/gmc.py的第327行添加以下内容。 (这假设您准备编辑 ultralytics 包)

         if self.prevKeyPoints is None:
             self.prevFrame = frame.copy()
             self.prevKeyPoints = copy.copy(keypoints)
             return H
    
© www.soinside.com 2019 - 2024. All rights reserved.