I sette task di visione
Associa una riga dell’output a classificazione, rilevamento, segmentazione di istanze, segmentazione semantica, stima della profondità, posa o OBB, quindi scegli i pesi YOLO26 da cui partire.
Scegliere il task è la decisione più costosa da prendere prima dell’addestramento. Se scegli la segmentazione quando basterebbero i riquadri, la spesa per l’annotazione aumenta notevolmente; se scegli riquadri verticali per navi viste da un drone, ogni riquadro sarà perlopiù acqua. Ultralytics YOLO supporta sette task tramite un’unica API, quindi la scelta dipende dall’output di cui hai bisogno, non dagli strumenti.
Pratico
Panoramica dei sette task#

Leggi la tabella partendo dalla colonna dell’output: è ciò a cui deve corrispondere la riga dell’output della tua specifica.
| Task | Output | Risponde a | Pesi YOLO26 |
|---|---|---|---|
| Classificazione | Un’etichetta per immagine, con una probabilità | "Cos’è questa immagine?" | yolo26n-cls.pt |
| Rilevamento | Classe, riquadro e confidenza per ogni oggetto | "Cosa si trova dove?" | yolo26n.pt |
| Segmentazione di istanze | Classe e maschera di pixel per oggetto | "Qual è la forma esatta di ogni oggetto?" | yolo26n-seg.pt |
| Segmentazione semantica | Una classe per ogni pixel | "Che tipo di regione rappresenta ogni pixel?" | yolo26n-sem.pt |
| Stima della profondità | Distanza in metri per ogni pixel | "A quale distanza si trova ogni pixel?" | yolo26n-depth.pt |
| Stima della posa | Riquadro e punti chiave per ogni persona o oggetto | "Qual è la posa del corpo?" | yolo26n-pose.pt |
| Riquadri di delimitazione orientati | Riquadro ruotato per oggetto | "Che cosa si trova dove e con quale angolazione?" | yolo26n-obb.pt |
Ci sono due coppie che spesso creano confusione. Segmentazione di istanze vs semantica: la segmentazione di istanze distingue ogni oggetto (tre auto, tre maschere); quella semantica assegna un'etichetta ai pixel solo in base alla classe (un'unica regione "auto", senza conteggio). Rilevamento vs OBB: entrambi restituiscono un riquadro per oggetto, ma un OBB ruota insieme all'oggetto, aspetto importante quando gli oggetti sono inclinati nelle immagini dall'alto.
Un'API, sette output#
Cambiare attività non significa cambiare strumenti. Il file dei pesi determina cosa viene restituito e l'oggetto Results valorizza l'attributo corrispondente:
from ultralytics import YOLO
image = "https://ultralytics.com/images/bus.jpg"
outputs = ["probs", "boxes", "masks", "semantic_mask", "depth", "keypoints", "obb"]
for suffix in ["-cls", "", "-seg", "-sem", "-depth", "-pose", "-obb"]:
weights = f"yolo26n{suffix}.pt"
model = YOLO(weights)
result = model(image, verbose=False)[0]
filled = [name for name in outputs if getattr(result, name) is not None]
print(f"{weights:18} task={model.task:9} -> {', '.join(filled)}")yolo26n-cls.pt task=classify -> probs
yolo26n.pt task=detect -> boxes
yolo26n-seg.pt task=segment -> boxes, masks
yolo26n-sem.pt task=semantic -> semantic_mask
yolo26n-depth.pt task=depth -> depth
yolo26n-pose.pt task=pose -> boxes, keypoints
yolo26n-obb.pt task=obb -> obbLeggi la colonna a destra: anche la segmentazione e la stima della posa restituiscono riquadri, perché aggiungono un elemento al rilevamento. La segmentazione semantica e la profondità non restituiscono alcun output per oggetto: descrivono invece ogni pixel. Il codice a valle legge esattamente uno di questi attributi, quindi nella riga dell'output della tua specifica devi indicare quale.
Come scegliere in pratica#
Parti da ciò che deve descrivere una singola predizione, poi scegli l'attività meno costosa che consente di prendere la decisione:
- Una sola etichetta per l'intera immagine → classificazione.
- Una classe per ogni pixel, senza dover distinguere gli oggetti → segmentazione semantica.
- Una distanza per ogni pixel → stima della profondità.
- Qualcosa che riguarda ogni oggetto:
- dove si trova, per contarlo, localizzarlo o filtrarlo → rilevamento (aggiungi il tracciamento per mantenerne l'identità tra i fotogrammi);
- la sua forma esatta, il contorno o l'area → segmentazione di istanze;
- la sua postura → stima della posa;
- la sua rotazione nelle immagini dall'alto → OBB.
Quando due attività sono entrambe adatte, scegli quella meno costosa da annotare ed eseguire. Il rilevamento è la scelta predefinita per la maggior parte dei prodotti: i riquadri sono veloci da disegnare e verificare e, con il tracciamento, consentono già di realizzare conteggi, avvisi nelle zone e analisi del traffico, come in questa immagine dell'autostrada:

Profondità: l'attività che risponde alla domanda "a quale distanza"#
La stima della profondità restituisce una mappa delle dimensioni dell'immagine con una distanza in metri per ogni pixel: nessuna classe e nessun riquadro. Usala quando la decisione dipende dalla distanza: per un robot che evita gli ostacoli, un veicolo che rallenta quando qualcosa è vicino o una stima approssimativa del volume di un cumulo.
from ultralytics import YOLO
model = YOLO("yolo26n-depth.pt")
result = model("https://ultralytics.com/images/bus.jpg", verbose=False)[0]
depth = result.depth.data # meters, one value per pixel
print(f"depth map {tuple(depth.shape)}, nearest {float(depth.min()):.1f} m, farthest {float(depth.max()):.1f} m")depth map (1080, 810), nearest 2.0 m, farthest 14.9 mUna singola telecamera deduce la profondità da indizi appresi, come la prospettiva e le dimensioni degli oggetti; prima di usarla per distanze rilevanti per la sicurezza, misurane quindi l'errore nelle tue scene. La profondità si abbina bene al rilevamento: rileva l'oggetto, poi leggi la mappa di profondità all'interno del suo riquadro.
Insidie#
| Confusione frequente | Sintomo | Scelta migliore |
|---|---|---|
| Segmentazione quando basterebbero i riquadri | Il codice a valle non legge mai la maschera | Rilevamento |
| Riquadri verticali nelle immagini dall'alto | I riquadri coprono soprattutto lo sfondo e gli oggetti vicini si sopprimono a vicenda | OBB |
| Classificazione per una scena con più oggetti | L'etichetta dipende da un piccolo oggetto | Rilevamento più una regola |
| Segmentazione semantica quando servono conteggi | Gli oggetti a contatto si fondono in un'unica regione | Segmentazione di istanze |
| Dimensione del riquadro usata come indicatore della distanza | Le regole non funzionano quando le dimensioni degli oggetti variano | Stima della profondità oppure rilevamento più profondità |
| Stima della posa per verificare la presenza | Non leggi mai un punto chiave | Rilevamento |
Gli output più ricchi costano di più in ogni fase: le maschere e i keypoint richiedono più tempo per essere disegnati e revisionati, oltre a regole di etichettatura più rigorose. Inizia con l'attività meno costosa che risponde alla riga decisionale e passa a una più complessa solo quando un utilizzatore effettivo ha bisogno di maggiori dettagli.
Mostra la soluzione
Per la specifica del carrello elevatore, la risposta è rilevamento con yolo26n.pt, leggendo da result.boxes.
La riga della decisione deve sapere dove si trovano carrelli elevatori e persone, così il codice può verificare quanto sono vicini. I riquadri rispondono a questa esigenza. La segmentazione di istanze aumenterebbe il costo dell'annotazione senza modificare l'avviso, perché il bordo inferiore di un riquadro indica già la posizione sul terreno. La stima della posa non serve, perché la postura non rientra nella decisione. La profondità potrebbe aiutare a convertire le posizioni nell'immagine in metri, ma una telecamera fissa calibrata consente di mappare il piano del pavimento senza usarla. Vale la pena testare l'OBB solo se le telecamere sono rivolte direttamente verso il basso e i carrelli elevatori appaiono con angoli diagonali molto accentuati.