0Pricing
Learn AI with Python · Lekcja

Wykrywanie obiektów za pomocą YOLOv8

ultralytics YOLO, model.predict(), ramki ograniczające, filtrowanie według pewności, trenowanie własnego modelu.

Wykrywanie obiektów za pomocą YOLOv8 to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Klasyfikacja a detekcja

Klasyfikacja obrazu określa, co się na nim znajduje. Detekcja obiektów idzie o krok dalej: wskazuje gdzie znajduje się każdy obiekt, rysując ramki ograniczające i etykiety. YOLO to najpopularniejszy detektor czasu rzeczywistego.

Czym jest YOLO?

YOLO (You Only Look Once) wykrywa wszystkie obiekty w jednym przejściu w przód, dzięki czemu działa wystarczająco szybko dla wideo. YOLOv8 firmy Ultralytics udostępnia przejrzyste API języka Python do inferencji i trenowania.

pip install ultralytics

Wczytywanie wstępnie wytrenowanego modelu

Należy zaimportować YOLO i wczytać checkpoint. yolov8n.pt to model nano: niewielki i szybki. Większe warianty (s, m, l, x) wymieniają szybkość na większą dokładność. Wagi są automatycznie pobierane przy pierwszym użyciu.

from ultralytics import YOLO

model = YOLO("yolov8n.pt")

Uruchamianie inferencji

Należy wywołać model.predict (lub po prostu model(image)) dla ścieżki obrazu, adresu URL albo tablicy. Metoda zwraca listę obiektów Results, po jednym dla każdego obrazu wejściowego.

results = model.predict("street.jpg", conf=0.5)

Próg conf

Parametr conf określa minimalny poziom pewności wymagany do zachowania detekcji. Należy zwiększyć tę wartość, aby odrzucać niepewne ramki (mniej fałszywie dodatnich detekcji), albo zmniejszyć ją, aby wykrywać więcej obiektów kosztem większej ilości szumu.

results = model.predict("street.jpg", conf=0.25)  # more detections
results = model.predict("street.jpg", conf=0.7)   # only confident ones

Odczytywanie ramek

Każdy wynik zawiera obiekt boxes. boxes.xyxy zwraca narożniki ramki ograniczającej w postaci [x1, y1, x2, y2] (współrzędne pikseli lewego górnego i prawego dolnego narożnika).

r = results[0]
print(r.boxes.xyxy)  # tensor of [x1, y1, x2, y2] rows

Klasy i poziom pewności

Oprócz ramek dostępne są boxes.cls (indeksy klas) i boxes.conf (wyniki pewności). Indeksy można przypisać do nazw za pomocą model.names.

for box in r.boxes:
    cls_id = int(box.cls)
    conf = float(box.conf)
    name = model.names[cls_id]
    print(name, round(conf, 2))

Wizualizacja wyników

results[0].plot() zwraca tablicę obrazu z naniesionymi ramkami i etykietami, gotową do wyświetlenia lub zapisania. To świetny sposób na szybkie sprawdzenie detekcji.

annotated = results[0].plot()

import cv2
cv2.imwrite("output.jpg", annotated)

Detekcja wideo

Należy przekazać plik wideo lub indeks kamery internetowej, a YOLO przetworzy każdą klatkę. Przy ustawieniu stream=True wyniki są zwracane klatka po klatce, co ogranicza zużycie pamięci podczas przetwarzania długich nagrań.

for result in model.predict("clip.mp4", stream=True):
    boxes = result.boxes
    # process each frame

Trenowanie niestandardowe

Aby wykrywać własne klasy obiektów, należy trenować model na oznaczonym zbiorze danych opisanym w pliku YAML. Należy wywołać model.train, podając konfigurację danych, liczbę epok i rozmiar obrazu. YOLO dostraja wstępnie wytrenowane wagi.

model = YOLO("yolov8n.pt")
model.train(
    data="my_dataset.yaml",
    epochs=50,
    imgsz=640
)

Plik YAML danych

Plik YAML zbioru danych zawiera foldery obrazów train/val oraz nazwy klas. YOLO oczekuje, że każdy obraz będzie miał odpowiadający mu plik etykiety ze znormalizowanymi współrzędnymi ramek dla każdego obiektu.

# my_dataset.yaml
# train: images/train
# val: images/val
# names:
#   0: helmet
#   1: vest

Szybkie sprawdzenie

Proszę sprawdzić znajomość YOLOv8.

Podsumowanie: detekcja obiektów za pomocą YOLOv8

Wczytano wstępnie wytrenowany detektor za pomocą YOLO("yolov8n.pt"), uruchomiono model.predict(img, conf=0.5) i odczytano detekcje z results[0].boxes.xyxy, .cls oraz .conf. Wyniki zwizualizowano za pomocą results[0].plot(), a następnie dostrojono model dla niestandardowych klas za pomocą model.train i pliku YAML danych.

Często zadawane pytania

Czy lekcja „Wykrywanie obiektów za pomocą YOLOv8” jest bezpłatna?

Tak — pełny tekst „Wykrywanie obiektów za pomocą YOLOv8” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „Wykrywanie obiektów za pomocą YOLOv8”?

ultralytics YOLO, model.predict(), ramki ograniczające, filtrowanie według pewności, trenowanie własnego modelu. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Wykrywanie obiektów za pomocą YOLOv8”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Tensory PyTorch i Autograd
  2. Własne zbiory danych i moduły DataLoader
  3. Tworzenie i trenowanie sieci CNN w PyTorch
  4. Wykrywanie obiektów za pomocą YOLOv8
← Powrót do Learn AI with Python