Как я могу подключить YOLOv8model к Deepsort в фиксированном BBOX?Python

Программы на Python
Ответить
Anonymous
 Как я могу подключить YOLOv8model к Deepsort в фиксированном BBOX?

Сообщение Anonymous »

Я создаю модель, которая может обнаруживать мотоцикл и автомобиль для извлечения каждой информации.
Но в процессе подключения модели YOLOv8 (это модель, которую я настроил) с алгоритмом Deepsort,
я обнаружил несколько проблем.
  • Сначала настроенная модель (YOLOv8) могла обнаружить каждое транспортное средство, а извлеченное видео показывало идеальную ограничивающую рамку.
  • После соединения с Deepsort, он пропустил несколько автомобилей, а извлеченное видео имеет неправильные BBox (они слишком большие и не подходят для каждого автомобиля)
  • Я не смог найти неправильный результат между YOLOv8 2 Deepsort.
Пожалуйста, помогите мне

Код: Выделить всё

import cv2
from ultralytics import YOLO
from deep_sort_realtime.deepsort_tracker import DeepSort

# Initialize YOLO model
model_path = "/content/drive/MyDrive/Capstone/best_motorcycle_detector_NIGHT8.pt"
model = YOLO(model_path)
model.to('cuda')  # Use GPU

# Initialize DeepSORT
tracker = DeepSort(max_age=200, n_init=1, nn_budget=200)

# Helper to convert YOLO results to DeepSORT format
def yolo_to_deepsort(yolo_results, target_classes):
detections = []
for det in yolo_results[0].boxes:
x1, y1, x2, y2 = map(float, det.xyxy[0].cpu().numpy())
confidence = float(det.conf.cpu().numpy().item())
class_id = int(det.cls.cpu().numpy())
if class_id in target_classes:
detections.append([(x1, y1, x2, y2), confidence])
return detections

# Main processing loop
video_path = "/content/drive/MyDrive/Capstone/11.15 1200-1400/1320-1400.mp4"
cap = cv2.VideoCapture(video_path)
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))

output_path = "/content/drive/MyDrive/Capstone/Results/processed_video.avi"
video_writer = cv2.VideoWriter(output_path, cv2.VideoWriter_fourcc(*'MJPG'), fps, (frame_width, frame_height))

target_classes = [2, 3]  # car (2), motorcycle (3)

while cap.isOpened():
ret, frame = cap.read()
if not ret:
break

# Run YOLO model
results = model(frame, conf=0.3)

# Convert YOLO results to DeepSORT format
detections = yolo_to_deepsort(results, target_classes)

# Update tracker
tracks = tracker.update_tracks(detections, frame=frame)

# Draw bounding boxes
for track in tracks:
if not track.is_confirmed():
continue
x1, y1, x2, y2 = map(int, track.to_tlbr())
track_id = track.track_id
label = f"ID {track_id}"
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.putText(frame, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

# Save the frame
video_writer.write(frame)

cap.release()
video_writer.release()
  • узнайте координацию в YOLO
  • ввод и вывод Deepsort
  • работаю с другими алгоритмами, но для моего видео лучше подошла глубокая сортировка
Вот видео и вес модели (YOLOv8) :)
Глубокая сортировка - это своего рода алгоритма отслеживания, который отслеживает обнаруженные объекты.
-Файл: извлеченный_вес => вес настроенной модели YOLOv8
-Файл: 11.15 1320-1400_detected_video.avi => видео, обнаруживающее мотоциклы и автомобили по индивидуальной модели YOLOv8
-Файл: 11.15 1320-1400_deepsort_processed_video.avi => видео, которое отслеживает (с помощью алгоритма глубокой сортировки) обнаруженные объекты (по индивидуальной модели YOLOv8)
https://drive.google.com/file/d/1 -03M2L42RtP6hauVP7fKSSqETEm8LtR6/view?usp=sharing

Подробнее здесь: https://stackoverflow.com/questions/793 ... fixed-bbox
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»