Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Get Started
Fondamenti della visione artificiale·Leggi le metriche·Lezione 10/10
Lezioneprincipiante

Dal laboratorio alla produzione

Installa Ultralytics, esegui YOLO26 sulle tue immagini, confronta il risultato con le tue specifiche e scegli il passo successivo.

Dieci minuti con un modello preaddestrato bastano a rispondere alla domanda che determina l'intero piano: un modello standard copre già le tue classi e la tua telecamera oppure ti servono dati personalizzati? In questa lezione installi Ultralytics, esegui YOLO26 su immagini reali e confronti il risultato con le specifiche che hai definito nella prima lezione.

Esito

Esegui YOLO26 sulle tue immagini e decidi, in base al risultato, se creare un prototipo con pesi preaddestrati o costruire un dataset.

Percorso rapido
Se sai già come muoverti, ecco la versione breve.
  1. Installa: pip install ultralytics, poi yolo checks.

  2. Esegui la predizione: yolo predict model=yolo26n.pt source=https://ultralytics.com/images/bus.jpg.

  3. Verifica: quali classi delle tue specifiche sono presenti nel modello preaddestrato? E i box sono corretti sulle tue immagini?

  4. Scegli il corso successivo in base alla risposta.

Pratico

Installa#

pip install ultralytics
yolo checks

La prima riga installa il pacchetto Python ultralytics e il comando yolo, oltre a PyTorch se non è già installato. yolo checks mostra le versioni di Python, PyTorch e CUDA e l'hardware che userà Ultralytics, così puoi verificare la configurazione prima di eseguire qualsiasi operazione. Usa un ambiente virtuale pulito; la guida rapida illustra le configurazioni con conda, Docker e GPU.

Versione di Python

Il pacchetto ultralytics si installa con Python 3.8 e versioni successive, ma le versioni attuali di PyTorch richiedono Python 3.10 o versioni successive. Se il tuo ambiente è più vecchio, crea prima un nuovo ambiente virtuale con una versione recente di Python.

Selettore PyTorch Start Locally con Stable, Mac, Pip, Python e Default selezionati, che mostra il comando pip3 per installare torch, torchvision e torchaudio

Una GPU che non viene usata

Sintomo: yolo checks mostra CPU su una macchina con una GPU NVIDIA e l'inferenza è lenta. Causa: una build di PyTorch solo CPU, come il wheel predefinito pip su Windows. Soluzione: seleziona il sistema operativo, il gestore di pacchetti e la versione di CUDA nel selettore di PyTorch qui sopra, esegui il comando mostrato e reinstalla ultralytics. Su un Mac, come nello screenshot, la build predefinita è quella corretta; Ultralytics usa la CPU, a meno che tu non passi device=mps per usare la GPU Apple.

Una prima predizione#

from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # scarica il modello nano da ~5 MB al primo utilizzo
results = model("https://ultralytics.com/images/bus.jpg", save=True)

for box in results[0].boxes:
    print(model.names[int(box.cls)], round(float(box.conf), 2))

Entrambi mostrano un riepilogo di una riga per ogni immagine e salvano l'immagine annotata in runs/detect/predict:

image 1/1 .../bus.jpg: 640x480 4 persons, 1 bus, 19.7ms
Speed: 0.9ms preprocess, 19.7ms inference, 0.4ms postprocess per image at shape (1, 3, 640, 480)
Results saved to runs/detect/predict

Riga per riga: l'immagine è stata ridimensionata a 640×480 per l'inferenza; il modello ha rilevato quattro persone e un autobus; l'inferenza è durata circa 20 ms su una CPU di un portatile. La riga Speed è il tuo primo controllo della latenza: confrontala con il frame rate indicato nella riga dell'input delle tue specifiche. Apri l'immagine salvata: ogni box mostra la classe, il box e la confidenza, come nella lezione sul rilevamento.

Confronta il risultato con le tue specifiche#

DomandaSe sìSe no
Le tue classi rientrano tra le 80 classi COCO che il modello conosce?Crea un prototipo senza alcun addestramentoTi servono dati annotati e un fine-tuning (guida al fine-tuning)
Sulle tue immagini, i box sopra la soglia si posizionano sugli oggetti corretti?Il task e il punto di vista corrispondonoAspettati un divario di dominio: raccogli dati dalle tue telecamere
Il tipo di output è quello richiesto dalla tua regola decisionale?Mantieni il taskCambia i pesi: -seg, -sem, -depth, -pose, -obb oppure -cls
È abbastanza veloce da soddisfare il tuo frame rate sull'hardware di destinazione?ProcediProva un modello più piccolo o un formato di esportazione ottimizzato

La prima domanda ha una risposta precisa: model.names elenca tutte le classi conosciute dal modello preaddestrato. Per le specifiche del carrello elevatore, person è una classe COCO, mentre forklift non lo è: nessuna soglia farà rilevare un carrello elevatore al modello preaddestrato. È l'esito più comune alla prima esecuzione: il modello copre solo una parte delle specifiche. La scelta giusta è creare un prototipo della logica decisionale usando le classi disponibili e, nel frattempo, costruire il dataset per le altre.

Cosa cambia in produzione#

Un modello distribuito si trova ad affrontare condizioni mai presenti nel suo dataset: nuove telecamere, stagioni, prodotti e uniformi. Senza un nuovo addestramento, la precisione peggiora; con un riaddestramento regolare sui dati raccolti in produzione, recupera:

Due grafici della precisione del modello nel tempo: un modello che perde precisione senza riaddestramento e un modello riaddestrato regolarmente che recupera precisione a ogni aggiornamento

Ogni lezione di questo corso alimenta quel ciclo: le specifiche definiscono un errore, l'analisi della copertura indica dove cercare, il controllo delle etichette e le linee guida rendono utili i nuovi dati, mentre suddivisioni e metriche affidabili ti dicono se il modello riaddestrato è davvero migliore. Due abitudini ti aiutano a far funzionare il ciclo fin dal primo giorno: registra un campione di input e predizioni, incluse quelle con bassa confidenza, e conserva il set di test congelato per confrontare ogni modello sulle stesse immagini. Osservabilità e drift approfondisce il monitoraggio del data drift.

Come proseguire#

CorsoSeguilo quando
Creare dataset YOLO ad alte prestazioniLe tue classi non sono presenti nei dati di preaddestramento oppure le tue scene differiscono da COCO
Addestra il tuo primo modello YOLOHai un dataset annotato e vuoi eseguire il fine-tuning
Ultralytics YOLO in produzioneHai un modello e ti servono esportazione, tracking e monitoraggio
Sviluppa con Ultralytics PlatformVuoi gestire dati, annotazione, addestramento e distribuzione in un unico posto

Preferisci un flusso di lavoro accessibile dal browser? Ultralytics Platform esegue lo stesso ciclo — caricamento, annotazione, addestramento, distribuzione — senza installazioni locali:

Provalo

Modifica lo script della soluzione: inserisci le classi delle tue specifiche in spec_classes e i percorsi delle tue immagini in sources, poi eseguilo e apri i risultati salvati. Crea una tabella con queste colonne: immagine, classi rilevate, corrispondenza con le specifiche (sì o no). Concludi con una frase che scelga il tuo prossimo passo e il corso che lo approfondisce.

Conferma
git add -A && git commit -m "docs(academy): completed Computer Vision Foundations"
Criteri di completamento
La lezione è completata quando tutte le seguenti condizioni sono soddisfatte.
  • Hai eseguito YOLO26 su almeno tre immagini tue e hai aperto i risultati salvati.

  • Sai quali classi delle tue specifiche sono presenti nei dati di preaddestramento e quali richiedono dati tuoi.

  • Hai scritto una frase che indica il tuo prossimo passo e il corso che seguirai.

Mostra la soluzione
from pathlib import Path

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# 1. Which classes in your output line does the pretrained model already know?
spec_classes = {"person", "forklift"}
known = set(model.names.values())
print(f"pretrained: {sorted(spec_classes & known)}  needs your own data: {sorted(spec_classes - known)}")

# 2. What does it find on your images?
sources = [
    "https://ultralytics.com/images/bus.jpg",  # replace with your own images
    "https://ultralytics.com/images/zidane.jpg",
]
for source, result in zip(sources, model.predict(sources, conf=0.25, save=True, verbose=False)):
    names = [result.names[int(c)] for c in result.boxes.cls]
    print(f"{Path(source).name}: {len(names)} detections -> {sorted(set(names))}")
pretrained: ['person']  needs your own data: ['forklift']
bus.jpg: 5 detections -> ['bus', 'person']
zidane.jpg: 3 detections -> ['person', 'tie']

Per le specifiche del carrello elevatore: person è coperto, forklift no. Prossimo passo: crea subito un prototipo della regola di zona usando il modello preaddestrato sulle persone e inizia il corso Creare dataset YOLO ad alte prestazioni per raccogliere e annotare carrelli elevatori ripresi dalle telecamere del magazzino.

Prossimi passi

Corso completato: sostieni il quiz finale per ottenere il certificato, poi continua con Creare dataset YOLO ad alte prestazioni per trasformare le tue specifiche in un dataset pronto per l'addestramento.

Accedi per salvare i progressi