Esplora i fondamenti della convoluzione nella visione artificiale e nel deep learning. Scopri come i kernel e le mappe delle caratteristiche alimentano Ultralytics per le attività in tempo reale.
La convoluzione è un'operazione matematica fondamentale che costituisce l'elemento base dei moderni sistemi di visione artificiale (CV) e deep learning (DL). Nel contesto dell' elaborazione delle immagini, la convoluzione consiste nello scorrere un piccolo filtro, spesso chiamato kernel, su un'immagine di input per creare una mappa delle caratteristiche significative. Questo processo consente ai modelli di intelligenza artificiale (AI) di apprendere e identificare automaticamente modelli quali bordi, texture e forme senza l'intervento umano. A differenza del tradizionale machine learning (ML), che spesso richiede l'estrazione manuale delle caratteristiche, la convoluzione consente alle reti di costruire una comprensione gerarchica dei dati visivi, partendo da semplici linee e progredendo verso oggetti complessi come volti o veicoli.
L'operazione funziona passando un filtro sui dati di input, eseguendo la moltiplicazione elemento per elemento e sommando i risultati per produrre un singolo valore per ciascuna posizione. Questo output è noto come mappa delle caratteristiche.
Per comprendere appieno il concetto di convoluzione, è utile distinguerlo da termini simili che ricorrono spesso nella letteratura sulle reti neurali (NN):
L'efficienza della convoluzione ha permesso all'intelligenza artificiale di rivoluzionare vari settori industriali alimentando robusti sistemi di percezione:
È possibile ispezionare i livelli convoluzionali all'interno dei modelli all'avanguardia utilizzando Python. L'esempio seguente carica il
YOLO26 modello e verifica che il suo strato iniziale utilizzi un'
operazione convoluzionale standard, implementata tramite torch.nn.
import torch.nn as nn
from ultralytics import YOLO
# Load the latest YOLO26 model
model = YOLO("yolo26n.pt")
# Access the first layer of the model's backbone
first_layer = model.model.model[0]
# Verify it is a Convolutional layer
if isinstance(first_layer.conv, nn.Conv2d):
print("Success: The first layer is a standard convolution.")
print(f"Kernel size: {first_layer.conv.kernel_size}")
Le operazioni convoluzionali sono altamente ottimizzabili, il che le rende ideali per le implementazioni Edge AI in cui le risorse computazionali sono limitate. Poiché lo stesso kernel è condiviso dall'intera immagine (condivisione dei parametri), il modello richiede una quantità di memoria significativamente inferiore rispetto alle precedenti architetture completamente connesse. Questa efficienza consente l'esecuzione di modelli avanzati su smartphone e dispositivi IoT.
Per i team che desiderano sfruttare queste operazioni per set di dati personalizzati, Ultralytics offre un ambiente perfettamente integrato per annotare immagini e addestrare modelli basati sulla convoluzione senza dover gestire infrastrutture complesse. Utilizzando il transfer learning, è possibile ottimizzare i pesi convoluzionali pre-addestrati per riconoscere nuovi oggetti con una quantità minima di dati di addestramento.