Я создаю модель, которая может обнаруживать мотоцикл и автомобиль для извлечения каждой информации.
Но в процессе подключения модели 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
Я создаю модель, которая может обнаруживать мотоцикл и автомобиль для извлечения каждой информации. Но в процессе подключения модели YOLOv8 (это модель, которую я настроил) с алгоритмом Deepsort, я обнаружил несколько проблем. [list] [*]Сначала настроенная модель (YOLOv8) могла обнаружить каждое транспортное средство, а извлеченное видео показывало идеальную ограничивающую рамку. [*]После соединения с Deepsort, он пропустил несколько автомобилей, а извлеченное видео имеет неправильные BBox (они слишком большие и не подходят для каждого автомобиля) [*]Я не смог найти неправильный результат между YOLOv8 2 Deepsort. [/list] Пожалуйста, помогите мне [code]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
cap.release() video_writer.release() [/code] [list] узнайте координацию в YOLO [*]ввод и вывод Deepsort [*]работаю с другими алгоритмами, но для моего видео лучше подошла глубокая сортировка [/list] Вот видео и вес модели (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