Rilevamento degli oggetti con YOLOv8
YOLO di ultralytics, model.predict(), bounding box, filtraggio per confidenza, addestramento personalizzato
Rilevamento degli oggetti con YOLOv8 è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Classificazione e rilevamento
La classificazione delle immagini indica che cosa contiene un'immagine. Il rilevamento degli oggetti va oltre: individua dove si trova ogni oggetto, disegnando riquadri di delimitazione ed etichette. YOLO è il rilevatore in tempo reale più diffuso.
Che cos'è YOLO?
YOLO (You Only Look Once) rileva tutti gli oggetti in un'unica passata forward, risultando abbastanza veloce per i video. YOLOv8 di Ultralytics offre un'API Python chiara per l'inferenza e l'addestramento.
pip install ultralyticsCaricare un modello pretrained
Importi YOLO e carichi un checkpoint. yolov8n.pt è il modello nano: piccolo e veloce. Le varianti più grandi (s, m, l, x) scambiano velocità con accuratezza. I pesi vengono scaricati automaticamente al primo utilizzo.
from ultralytics import YOLO
model = YOLO("yolov8n.pt")Eseguire l'inferenza
Chiami model.predict (o semplicemente model(image)) su un percorso di immagine, un URL o un array. Restituisce un elenco di Results, uno per ogni immagine di input.
results = model.predict("street.jpg", conf=0.5)La soglia conf
Il parametro conf imposta la confidenza minima necessaria per mantenere un rilevamento. Lo aumenti per eliminare i riquadri incerti (meno falsi positivi); lo riduca per individuare più oggetti, a rischio di introdurre più rumore.
results = model.predict("street.jpg", conf=0.25) # more detections
results = model.predict("street.jpg", conf=0.7) # only confident onesLeggere i riquadri
Ogni risultato contiene un oggetto boxes. boxes.xyxy fornisce gli angoli del riquadro di delimitazione come [x1, y1, x2, y2] (le coordinate in pixel dell'angolo superiore sinistro e di quello inferiore destro).
r = results[0]
print(r.boxes.xyxy) # tensor of [x1, y1, x2, y2] rowsClassi e confidenza
Oltre ai riquadri, ottiene boxes.cls (gli indici delle classi) e boxes.conf (i punteggi di confidenza). Mappi gli indici sui nomi con 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))Visualizzare i risultati
results[0].plot() restituisce un array di immagini annotato, con riquadri ed etichette disegnati sopra, pronto per essere visualizzato o salvato. È ideale per controllare rapidamente i rilevamenti.
annotated = results[0].plot()
import cv2
cv2.imwrite("output.jpg", annotated)Rilevare oggetti nei video
Passi un file video o l'indice di una webcam e YOLO elabora ogni fotogramma. Con stream=True restituisce i risultati fotogramma per fotogramma, mantenendo ridotto l'uso della memoria nei video lunghi.
for result in model.predict("clip.mp4", stream=True):
boxes = result.boxes
# process each frameAddestramento personalizzato
Per rilevare le proprie classi di oggetti, esegua l'addestramento su un dataset con etichette descritto da un file YAML. Chiami model.train con la configurazione dei dati, il numero di epoche e la dimensione delle immagini. YOLO esegue il fine-tuning dei pesi pretrained.
model = YOLO("yolov8n.pt")
model.train(
data="my_dataset.yaml",
epochs=50,
imgsz=640
)Il YAML dei dati
Il YAML del dataset elenca le cartelle delle immagini di train/val e i nomi delle classi. YOLO richiede che ogni immagine abbia un file di etichette corrispondente, con coordinate normalizzate dei riquadri per ogni oggetto.
# my_dataset.yaml
# train: images/train
# val: images/val
# names:
# 0: helmet
# 1: vestVerifica rapida
Metta alla prova la sua conoscenza di YOLOv8.
Riepilogo: rilevamento degli oggetti con YOLOv8
Ha caricato un rilevatore pretrained con YOLO("yolov8n.pt"), eseguito model.predict(img, conf=0.5) e letto i rilevamenti da results[0].boxes.xyxy, .cls e .conf. Ha visualizzato i risultati con results[0].plot() ed eseguito il fine-tuning su classi personalizzate tramite model.train con un YAML dei dati.
Domande Frequenti
La lezione «Rilevamento degli oggetti con YOLOv8» è gratuita?
Sì — il testo completo di «Rilevamento degli oggetti con YOLOv8» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Rilevamento degli oggetti con YOLOv8»?
YOLO di ultralytics, model.predict(), bounding box, filtraggio per confidenza, addestramento personalizzato Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Rilevamento degli oggetti con YOLOv8»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Tensori PyTorch e Autograd
- Dataset e DataLoader personalizzati
- Creazione e addestramento di CNN con PyTorch
- Rilevamento degli oggetti con YOLOv8