Apprendimento automatico e Reti Neurali - pagina 37

 

Lezione 9 Deep Learning 2: modelli generativi, GAN, codificatori automatici variazionali (VAE) (MLVU2019)



9 Deep Learning 2: modelli generativi, GAN, codificatori automatici variazionali (VAE) (MLVU2019)

Il video copre vari argomenti relativi al deep learning, inclusi dati divisi per progetti di deep learning, transfer learning e un focus sui modelli generativi. Il relatore esplora il concetto di utilizzo di reti neurali per generare risultati casuali e distribuzioni di probabilità, spiegando diversi metodi di addestramento di generatori come reti generative avversarie e codificatori automatici. Approfondiscono inoltre l'importanza di GAN, GAN condizionali, steganografia e codificatori automatici in varie applicazioni di apprendimento automatico come la manipolazione dei dati e la riduzione della dimensionalità. L'oratore discute la manipolazione dei dati nello spazio latente per manipolazioni di dati di alto livello senza molti dati etichettati e la necessità di un approccio alternativo come gli auto-codificatori variazionali.

Questa seconda parte del video esplora gli autocodificatori variazionali (VAE), un tipo di modello generativo volto ad affrontare il problema del collasso della modalità spesso riscontrato con altri modelli. Due reti neurali vengono utilizzate per codificare l'input nello spazio latente e decodificarlo nuovamente nello spazio di input, consentendo l'ottimizzazione sia della codifica che della decodifica. L'oratore scompone la funzione di perdita in un termine di divergenza KL e in un termine di probabilità logaritmica atteso, che può essere utilizzato per ottimizzare la rete. Vengono spiegate le sfide per massimizzare un'aspettativa nei VAE e viene discusso il trucco della riparametrizzazione come un modo per superare questo problema. Il relatore confronta i VAE con altre tecniche come GAN e PCA, concludendo che mentre i VAE sono più potenti, sono anche più difficili da addestrare.

  • 00:00:00 In questa sezione, il relatore ricorda al pubblico di suddividere i propri dati in serie di addestramento e test prima di esaminare i dati, poiché una volta visti non possono essere nascosti. Per coloro che lavorano su progetti di deep learning, suggeriscono di utilizzare il transfer learning per creare modelli potenti senza costose formazioni, utilizzando una rete pre-addestrata di aziende come Google e aggiungendo i propri livelli in cima. Questa è una buona opzione per coloro che non hanno accesso a grandi macchine con grandi GPU. Inoltre, il relatore consiglia di controllare la rubrica del progetto per garantire che tutti gli aspetti importanti siano coperti per un punteggio minimo minimo.

  • 00:05:00 In questa sezione, il video discute il deep learning per la modellazione generativa, in cui una rete neurale viene addestrata per produrre una distribuzione di probabilità da cui è possibile campionare cose nuove, come immagini o frammenti di linguaggio. Il primo passo è costruire una rete neurale chiamata generatore in grado di produrre queste nuove cose. Viene mostrato un esempio di una rete neurale che è stata addestrata per generare immagini di persone che in realtà non esistono. Il video prosegue poi spiegando i due modi di addestrare i generatori, che sono reti generative avversarie e codificatori automatici, con un focus sugli codificatori automatici variazionali come approccio più basato sui principi.

  • 00:10:00 In questa sezione, il relatore spiega come utilizzare le reti neurali per generare risultati casuali e distribuzioni di probabilità. Ci sono due modi per farlo: fornendo alla rete alcuni input e interpretando il suo output come media e Sigma di una distribuzione normale multivariata, o campionando input casuali da una distribuzione normale multivariata standard e alimentandoli attraverso una rete neurale per osservare il produzione. Quest'ultimo approccio può produrre distribuzioni di probabilità molto complesse e interessanti, come mostrato dall'esperimento del relatore con una rete neurale a due strati che ha trasformato una distribuzione normale multivariata in una distribuzione non normale con una forma complessa. Questo approccio può essere utilizzato per modellare distribuzioni molto complesse come i volti umani.

  • 00:15:00 In questa sezione, l'istruttore spiega i passaggi di addestramento per i modelli generativi e i problemi che potrebbe incontrare, come il collasso della modalità. Un approccio ingenuo per adattare la distribuzione di probabilità che una rete neurale rappresenta a un set di dati è attraverso la retropropagazione, utilizzando la distanza tra le immagini generate e quelle originali come una perdita. Tuttavia, questo approccio spesso fallisce e causa la compressione di tutte le modalità del set di dati in una modalità. L'istruttore presenta quindi due esempi di modelli generativi che hanno funzionato bene: Generative Adversarial Networks (GAN) e Variational Autoencoders (VAE). L'istruttore spiega la storia dietro le reti neurali convoluzionali (CNN), che hanno ispirato i GAN, e come funzionano attraverso due reti in competizione tra loro per migliorare le immagini generate. I VAE, d'altra parte, hanno una rete di codificazione che comprime l'immagine originale in una distribuzione di probabilità e una rete di decodificazione che genera una nuova immagine da quella distribuzione.

  • 00:20:00 In questa sezione, il relatore discute una tecnica utilizzata per ottimizzare l'input per generare immagini che corrispondono a un certo neurone di output, portando all'emergere di esempi contraddittori, che sono immagini false che la rete può essere indotta a pensare siano qualcosa di completamente diverso. Questa tecnica è stata inizialmente un duro colpo per la comunità delle reti neurali, ma ha portato allo sviluppo di un algoritmo di apprendimento ad hoc in cui vengono generati esempi contraddittori e aggiunti al set di dati come esempi negativi. Questo approccio, tuttavia, non era del tutto efficiente, quindi è stata sviluppata una soluzione end-to-end chiamata Vanilla GAN, che è un approccio di base che il relatore utilizza per illustrare altri tre modi di costruire sopra il framework per creare esempi impressionanti.

  • 00:25:00 In questa sezione, i relatori spiegano come funzionano i GAN (Generative Adversarial Networks). I GAN sono costituiti da due reti neurali, un generatore che produce output e un discriminatore che è un classificatore di immagini che determina quali degli output sono falsi. L'obiettivo dell'addestramento di un gan è consentire alla rete del generatore di creare risultati sempre più realistici. Come spiega il presentatore, il generatore e il discriminatore funzionano come un gioco a somma zero per due persone, con ciascuna rete che cerca di superare in astuzia l'altra. Il generatore è responsabile del tentativo di creare output falsi che ingannano il discriminatore e il compito del discriminatore è catturare questi output falsi. I relatori spiegano che dopo la formazione, gli output del GAN saranno una combinazione dell'input target e della casualità.

  • 00:30:00 In questa sezione, il relatore discute i GAN condizionali, che mirano a combinare la capacità di generare dati con il controllo sull'output. A differenza dei normali GAN, che generano output senza alcun controllo, i GAN condizionali accettano un input che controlla l'output, rendendoli utili per set di dati con più etichette. L'oratore discute anche del ciclo GAN, che utilizza due generatori per mappare due sacchi di immagini non accoppiati e aggiunge un termine di perdita di coerenza del ciclo per garantire che se un'immagine viene mappata avanti e indietro, si ottenga l'immagine originale. Ciò consente la generazione di immagini aggiuntive che sarebbero altrimenti costose da creare.

  • 00:35:00 In questa sezione, il relatore spiega il concetto di steganografia, che nasconde un codice in bella vista, e come si relaziona a modelli generativi come GAN e VAE che nascondono un'immagine all'interno di un'altra. L'obiettivo di questi modelli è fare in modo che il discriminatore non possa dire che un'immagine è nascosta all'interno di un'altra. Il relatore mostra esempi di come questi modelli possono trasformare le immagini in stili diversi, come trasformare una fotografia in un dipinto di Monet. Il relatore parla anche dello stile GAN, che genera immagini iperrealistiche di persone, e di come funziona alimentando il vettore latente attraverso una rete neurale deconvoluzionale che genera immagini da proprietà semantiche di basso livello a quelle di alto livello.

  • 00:40:00 In questa sezione, il relatore discute un modello che consente di controllare i dettagli delle immagini generate immettendo rumore casuale nella rete a ogni livello. Questo metodo riduce il carico di lavoro sul vettore latente e consente anche la generazione di immagini uniche. L'oratore dimostra questa tecnica alterando la luce e il vettore in punti specifici durante il processo di generazione, ottenendo immagini con caratteristiche specifiche scelte a ciascun livello. Questo modello presenta un livello di controllo che va oltre la semplice generazione di volti iperrealistici.

  • 00:45:00 In questa sezione, l'oratore discute cosa si può fare una volta creato un generatore. Una delle tecniche è chiamata interpolazione, che consiste nel prendere due punti dallo spazio di distribuzione multivariato e tracciare una linea tra di loro, individuando punti uniformemente distanziati e alimentandoli attraverso il generatore, consentendo una visione della trasformazione graduale da un output al Prossimo. Questo può essere fatto su una griglia di punti equidistanti per mappare gli angoli a punti arbitrari nello spazio di illuminazione, creando una griglia di interpolazione. Questi spazi latenti sono generalmente disposti in topologie sferiche, il che significa che per eseguire l'interpolazione, dobbiamo anche spostarci attraverso questa regione sferica, nota come interpolazione sferica. Infine, per eseguire la manipolazione dei dati o la riduzione della dimensionalità, è necessario eseguire la mappatura nello spazio latente, che richiede l'utilizzo di codificatori automatici per mappare dall'output allo spazio latente.

  • 00:50:00 In questa sezione, il relatore discute i codificatori automatici e la loro importanza in varie applicazioni di machine learning come la manipolazione dei dati e la riduzione della dimensionalità. I codificatori automatici sono reti neurali che aiutano a mappare i dati dall'input allo spazio latente e viceversa. L'architettura del collo di bottiglia della rete consente di apprendere e riprodurre le caratteristiche dell'input in una forma più compressa. Una volta addestrata, la rete può produrre un raggruppamento di codici latenti in uno spazio bidimensionale, che presenta caratteristiche semantiche di alto livello come una faccia sorridente come un cluster nello spazio.

  • 00:55:00 In questa sezione, l'oratore discute la manipolazione dei dati nello spazio latente per eseguire manipolazioni di alto livello dei dati senza bisogno di molti dati etichettati. Mostrano un semplice algoritmo per far sorridere qualcuno usando immagini codificate che vengono manipolate nello spazio latente e poi decodificate. Il relatore discute anche i limiti degli auto-codificatori e la necessità di un approccio alternativo come l'auto-codificatore variazionale (VAE), che costringe un decodificatore a decodificare i punti vicino all'input originale ma non proprio lo stesso per garantire una corretta interpolazione nello spazio .

  • 01:00:00 In questa sezione del video, il relatore discute gli autocodificatori variazionali (VAE), che sono un tipo di modello generativo che consente al modello di concentrarsi sui punti tra i dati e garantisce che i dati siano centrati all'origine e ha varianza non correlata in ogni direzione. Il principio di massima verosimiglianza viene utilizzato per adattare il modello ai dati e una rete neurale viene utilizzata per approssimare il vero posteriore. Il collasso della modalità è ancora un problema, in quanto non esiste alcuna mappatura da X a Zed, ma i VAE offrono una soluzione migliore rispetto ai modelli precedenti.

  • 01:05:00 In questa sezione, apprendiamo i modelli generativi e come possono subire il collasso della modalità, in cui vengono prodotti output simili per input diversi. Per risolvere questo problema, possiamo utilizzare gli autocodificatori variazionali (VAE), che utilizzano due reti neurali per codificare l'input in una distribuzione nello spazio latente e decodificare la distribuzione dello spazio latente in una distribuzione nello spazio di input. Possiamo utilizzare la scomposizione della probabilità logaritmica dell'input per ottenere un limite inferiore per la probabilità effettiva, che può essere utilizzata come funzione di perdita. Questo ci consente di ottimizzare le reti neurali sia per la codifica che per la decodifica, il che aiuta ad alleviare il problema del collasso della modalità.

  • 01:10:00 In questa sezione, il relatore spiega come riscrivere la funzione L in qualcosa che possa essere utilizzato nei sistemi di deep learning. L'obiettivo è massimizzare un limite inferiore della verosimiglianza e, minimizzando la L negativa, possiamo aumentare la verosimiglianza il più possibile. L'oratore scompone la parte superiore della frazione utilizzando la definizione di probabilità condizionata e la semplifica in una somma di aspettative, che diventa la divergenza KL e la probabilità logaritmica attesa. Questi termini possono essere calcolati e utilizzati come funzione di perdita nel sistema di deep learning. Il termine KL attira i vettori impostati verso l'origine e li ispessisce verso un'ipersfera attorno all'origine, mentre l'altro termine richiede l'assunzione di un'aspettativa, rendendola un po' più impegnativa da implementare.

  • 01:15:00 In questa sezione, il relatore discute le sfide per massimizzare un'aspettativa nel contesto del Variational Autoencoder (VAE). L'oratore spiega che approssimano l'aspettativa prelevando un campione e calcolando il logaritmo della densità di probabilità per ciascun campione, quindi calcolando la media. Hanno impostato L su 1 per mantenere le cose semplici. Tuttavia, notano che il loro metodo si blocca nella fase di campionamento, che non è differenziabile. Per risolvere questo problema, incorporano il trucco della riparametrizzazione, che consente loro di implementare la fase di campionamento come parte della loro rete neurale. Questo porta allo sviluppo del Variational Encoder, che è un approccio di principio all'addestramento di un generatore che è più semplice da implementare.

  • 01:20:00 In questa sezione, il relatore spiega la differenza tra un modello generativo chiamato Generative Adversarial Networks (GAN) e Variational Autoencoders (VAE). Mentre i GAN offrono una mappatura dallo spazio latente allo spazio dei dati, i VAE funzionano al contrario dallo spazio dei dati allo spazio latente e di nuovo allo spazio dei dati. I VAE offrono l'interpolazione tra gli elementi dei dati, inclusi lingua e dati discreti, e funzionano meglio dei GAN nella generazione di variabili discrete. Il relatore fornisce un esempio di come i VAE possono utilizzare un vettore del sorriso, un documento esistente e il vettore degli occhiali da sole sottratti per eseguire l'esperimento del malfattore. Il relatore conclude che i VAE offrono un approccio diretto dai primi principi, ma i GAN sono più adatti per le immagini.

  • 01:25:00 In questa sezione, il relatore confronta i codificatori automatici variazionali (VAE) con l'analisi dei componenti principali (PCA), affermando che entrambe le tecniche sono utilizzate per la riduzione della dimensionalità e la mappatura dei dati in una distribuzione standardizzata, ma i VAE sono più potenti e possono fare più cose. Tuttavia, l'addestramento dei VAE è molto più difficile in quanto richiede la discesa del gradiente mentre la PCA può trovare una soluzione analitica. Inoltre, PCA spesso fornisce dimensioni significative basate sui dati, come una dimensione sorridente per i volti, mentre le dimensioni prodotte dai VAE di solito non hanno alcun significato a meno che non venga presa di mira una caratteristica semantica specifica.
 

Lecture 10 Tree Models and Ensembles: Decision Trees, AdaBoost, Gradient Boosting (MLVU2019)



10 modelli e insiemi di alberi: alberi decisionali, AdaBoost, Gradient Boosting (MLVU2019)

Questa prima parte del video introduce gli alberi decisionali, un popolare modello di machine learning utilizzato per la classificazione e la regressione, che funziona segmentando lo spazio dell'istanza e scegliendo una classe per ogni segmento. Il video illustra anche come gli alberi decisionali possono essere addestrati utilizzando l'acquisizione di informazioni e come la potatura può aiutare a mitigare l'overfitting. Il relatore sottolinea l'importanza di suddividere i dati in set di addestramento, convalida e test per garantire l'equità tra i modelli. Inoltre, il video discute l'apprendimento dell'ensemble, in cui più alberi decisionali o altri modelli vengono addestrati e combinati per affrontare problemi come l'elevata varianza e l'instabilità. Il potenziamento viene anche introdotto come tecnica di insieme di modelli, che prevede l'addestramento sequenziale dei classificatori e la riponderazione dei dati per migliorare l'insieme. Infine, viene spiegato l'algoritmo Adaboost, che seleziona classificatori che minimizzano una funzione di perdita per migliorare l'insieme.

Questa seconda parte del video copre vari modelli e insiemi di alberi, tra cui AdaBoost e il potenziamento del gradiente. AdaBoost è un popolare metodo di potenziamento per i modelli di classificazione che pondera le istanze di dati in base alle prestazioni del classificatore. Il potenziamento del gradiente comporta l'inizializzazione di un modello con una funzione costante, il calcolo dei residui, l'adattamento di un nuovo modello ai residui etichettati e l'aggiunta all'insieme. Il relatore spiega le differenze tra il potenziamento del gradiente e AdaBoost e osserva che gli ensemble non sono molto utilizzati nella ricerca in quanto possono confondere i risultati. Inoltre, il bagging riduce la varianza e il boosting riduce il bias.

  • 00:00:00 In questa sezione del video, il presentatore introduce tre modelli di apprendimento automatico e gruppi modali, che è un approccio popolare nella produzione e nelle competizioni come Kaggle. L'approccio combina l'idea di base dell'apprendimento dell'albero decisionale, un modello di classificazione o modello di regressione, e il metodo dell'insieme, che addestra molti modelli e li combina per rendere il modello più forte. Il presentatore spiega anche che gli alberi decisionali funzionano sia su caratteristiche numeriche che categoriche; sono utilizzati principalmente per caratteristiche categoriali. La sezione termina introducendo un set di dati sui film, che verrà utilizzato per dimostrare il modello dell'albero decisionale.

  • 00:05:00 In questa sezione, il video illustra come funzionano gli alberi decisionali e come possono essere addestrati utilizzando set di dati. Il processo di apprendimento dell'albero decisionale comporta la ricerca di una buona caratteristica su cui suddividere, l'estensione dell'albero passo dopo passo e la creazione di sottoinsiemi di dati. Le divisioni sono determinate creando la distribuzione meno uniforme delle etichette di classe all'interno di ciascun sottoinsieme. Viene fornito un esempio per un set di dati su classificazioni e generi di film, in cui la suddivisione in base alle classificazioni non produce una buona distribuzione delle classi, ma la suddivisione in base al genere sì.

  • 00:10:00 In questa sezione, il video spiega come funzionano gli alberi decisionali segmentando lo spazio dell'istanza e scegliendo una particolare classe per ogni segmento. L'albero si espande selezionando nuove divisioni per ogni foglia, ma non ha senso dividere due volte sulla stessa caratteristica categorica in un percorso dalla radice alla foglia. Le condizioni di arresto si verificano quando tutti gli input o tutti gli output sono uguali e la non uniformità è determinata dalla distribuzione delle classi tra i segmenti. Questo può essere difficile per tre o più classi poiché è necessario considerare la proporzione di ciascuna classe.

  • 00:15:00 In questa sezione, il relatore spiega come l'entropia può essere utilizzata come misura dell'uniformità di una distribuzione e come calcolare il guadagno di informazioni di una caratteristica nella classificazione dell'albero decisionale. L'entropia è una misura di quanto sia uniforme una distribuzione, con una distribuzione uniforme che ha un'entropia più alta. L'oratore lo dimostra con due distribuzioni e utilizza la formula per l'entropia per mostrare che la distribuzione uniforme ha un'entropia di due bit, mentre la distribuzione non uniforme ha un'entropia molto inferiore a causa della sua maggiore efficienza nella trasmissione di informazioni con codici più brevi. Viene anche spiegata l'entropia condizionale, che è solo un'entropia condizionata a qualcosa, e il guadagno di informazioni di una caratteristica viene calcolato prendendo l'entropia generica prima di vedere la caratteristica meno l'entropia dopo aver visto la caratteristica.

  • 00:20:00 In questa sezione viene spiegato in dettaglio il processo di suddivisione dell'albero utilizzando le caratteristiche con il maggior guadagno di informazioni. L'algoritmo inizia con una foglia senza etichetta e si ripete finché tutte le foglie non sono etichettate. Per ogni foglia senza etichetta con il segmento, l'algoritmo controlla la condizione di arresto, che potrebbe essere l'esaurimento delle funzionalità o tutte le istanze con la stessa classe. Se la condizione di arresto non è soddisfatta, l'anta viene suddivisa sulla caratteristica con il maggiore guadagno di informazioni. La soglia per le caratteristiche numeriche viene scelta per massimizzare il guadagno di informazioni e un classificatore ad albero decisionale con caratteristiche numeriche può avere un limite decisionale più complicato a causa della possibilità di suddividere la stessa caratteristica più volte con soglie diverse.

  • 00:25:00 In questa sezione, il relatore discute il problema dell'overfitting quando si utilizzano alberi decisionali grandi e complessi. Spiegano come l'accuratezza dell'addestramento può aumentare con la dimensione massima dell'albero, ma l'accuratezza sui dati di test o convalida può diminuire in modo massiccio. Per affrontare questo problema, il relatore introduce il concetto di potatura e come aiuta a mitigare l'overfitting. Sottolineano inoltre l'importanza di suddividere i dati in set di addestramento, convalida e test per la selezione di iperparametri e la ricerca di modelli per garantire l'equità tra i modelli. Infine, il relatore osserva che strumenti come SK Learn trattengono automaticamente alcuni dati di addestramento durante il processo di addestramento per eseguire la potatura.

  • 00:30:00 In questa sezione, l'oratore parla degli alberi di regressione, che vengono utilizzati quando l'etichetta di destinazione non è una classe, ma invece un valore numerico. I principi di base sono gli stessi degli alberi decisionali, ma ci sono alcune differenze da notare. In primo luogo, negli alberi di regressione, le foglie sono etichettate con numeri invece che con classi. La media o mediana viene spesso utilizzata per etichettare le istanze nel segmento. In secondo luogo, invece dell'entropia, viene utilizzata la varianza per determinare su quale caratteristica suddividere ad ogni passaggio, il che massimizza le informazioni ottenute. Il relatore discute anche una gerarchia di generalizzazione per lo spazio modello, in cui il modello più generalizzante è una funzione costante e l'aggiunta di più divisioni aumenta la complessità del modello.

  • 00:35:00 In questa sezione, il relatore discute gli alberi decisionali e gli alberi di regressione come modelli e i loro limiti come l'elevata varianza e problemi di instabilità. La soluzione a questi problemi è addestrare più alberi decisionali e combinarli in un insieme, che è una tecnica popolare. L'obiettivo dell'apprendimento dell'ensemble è risolvere il compromesso tra bias e varianza, dove il bias è un problema strutturale e la varianza è la diffusione degli errori dei modelli. L'ensemble learning aiuta a risolvere questi problemi ed è possibile combinare alberi decisionali con altri modelli. L'analogia della valutazione dei progetti degli studenti con una rubrica viene utilizzata per spiegare l'elevata distorsione e la bassa varianza.

  • 00:40:00 In questa sezione, il relatore discute il problema del bias e della varianza nell'apprendimento automatico e come il bootstrap può aiutare a risolvere questo problema. A causa del set di dati limitato disponibile, può essere difficile determinare se la distanza osservata dal bersaglio sia dovuta a bias o varianza elevati. Il bootstrap risolve questo problema simulando il processo di campionamento da un altro set di dati attraverso il ricampionamento del set di dati originale con sostituzione per creare un nuovo set di dati di esempio. Analizzando la funzione di densità cumulativa della distribuzione empirica, diventa chiaro che il ricampionamento dal set di dati originale approssima il campionamento dalla distribuzione dei dati originale, consentendo il rilevamento di un'elevata varianza creando diversi set di dati su cui allenarsi.

  • 00:45:00 In questa sezione, il video spiega l'aggregazione Bootstrap o Bagging, che prevede il ricampionamento del set di dati e l'addestramento di più modelli su ciascun set di dati di ricampionamento. I modelli vengono quindi combinati prendendo il loro voto di maggioranza per classificare i nuovi dati e il metodo riduce la variabilità, ma non riduce la distorsione. Inoltre, il video discute del potenziamento, che aiuta a rafforzare insieme una famiglia di modelli deboli per ottenere una distorsione inferiore. Il potenziamento implica l'aggiunta di una piccola colonna chiamata peso al set di dati che indica quanto sia importante ciascuna caratteristica in un punto specifico del processo di apprendimento. L'idea generale del potenziamento è iniziare con un classificatore, M0, che potrebbe essere qualsiasi cosa: un classificatore lineare, un modello costante o uno che emette una classe maggioritaria.

  • 00:50:00 In questa sezione viene introdotto il concetto di potenziamento come tecnica di insieme modello. Il potenziamento comporta l'addestramento sequenziale dei classificatori e la riponderazione dei dati aumentando il peso per le istanze in cui i classificatori precedenti hanno sbagliato e diminuendo il peso per le istanze in cui hanno ragione. Ai classificatori viene assegnato un peso in base alla loro importanza nel migliorare l'insieme e l'insieme finale è una somma di tutti i modelli addestrati con i rispettivi pesi. AdaBoost è un approccio più basato sui principi al potenziamento e prevede la definizione di una funzione di errore da ridurre al minimo e l'utilizzo di dati di addestramento ponderati. La funzione di errore viene utilizzata per determinare il peso assegnato a ciascun modello nell'insieme.

  • 00:55:00 In questa sezione del video, il relatore spiega la funzione di perdita utilizzata in Adaboost e come viene minimizzata per selezionare il classificatore successivo da aggiungere all'insieme. Descrive come, per ogni istanza nel set di dati, l'errore viene calcolato prendendo l'esponenziale della differenza tra l'etichetta di destinazione e l'etichetta prevista e mostra come questo errore viene sommato sull'intero set di dati per fornire l'errore dell'insieme corrente . Il relatore spiega quindi come questo errore sia ulteriormente semplificato in una nuova funzione che può essere minimizzata selezionando il classificatore successivo per minimizzare la somma dei pesi delle istanze classificate in modo errato, che è l'unica parte dell'equazione che può essere influenzata dalla scelta di classificatore. Nel complesso, l'algoritmo Adaboost funziona selezionando in modo iterativo classificatori che riducono al minimo questa funzione di perdita, aumentando efficacemente il peso delle istanze classificate in modo errato e riducendo la frequenza delle classificazioni errate nelle iterazioni future.

  • 01:00:00 In questa sezione, il relatore spiega l'algoritmo AdaBoost, che è un popolare metodo di potenziamento per i modelli di classificazione. Per creare un insieme, l'algoritmo inizia con un particolare classificatore e i pesi vengono calcolati per ogni istanza di dati in base a come il classificatore si è comportato su quell'istanza. Viene addestrato un nuovo classificatore per ridurre al minimo la somma dei pesi delle classificazioni errate ea questo nuovo classificatore viene assegnato un peso, che viene calcolato prendendo l'esponenziale dell'errore e quindi trovando il valore di a che minimizza l'errore totale. Questo processo viene ripetuto per un determinato numero di passaggi e il risultato è il modello finale dell'insieme. L'oratore spiega anche la differenza tra boosting e bagging e introduce il gradient boosting, che è una variante del boosting progettata per i modelli di regressione.

  • 01:05:00 In questa sezione, il relatore discute l'idea di base del gradient boosting, che prevede l'inizializzazione di un modello con la funzione costante e il calcolo dei residui dell'insieme finora. Quindi, un nuovo modello viene adattato al set di dati etichettato con i residui invece delle etichette originali, che viene aggiunto all'insieme ponderato da un valore gamma. Il modello può essere scritto ricorsivamente come M3 = M2 + un altro modello, espandendo lentamente la somma. Si chiama potenziamento del gradiente perché implica il calcolo del gradiente su un modello super overfitting per la somma della funzione di perdita degli errori al quadrato, che è solo la differenza tra l'output del modello e l'output target, o il gradiente residuo.

  • 01:10:00 In questa sezione, il relatore spiega come funziona il potenziamento del gradiente dicendo a un modello di seguire il gradiente nello spazio di previsione. Il potenziamento del gradiente consente la sostituzione della funzione di perdita con un'altra funzione di perdita, come la perdita L1 anziché la perdita L2. Prendendo la derivata del valore di perdita rispetto all'output del modello e applicando la regola della catena, si può calcolare il seno dei residui invece dei residui stessi e addestrare il classificatore successivo nell'insieme per prevedere il seno del residuo. Questo metodo consente l'ottimizzazione di diverse funzioni di perdita nel potenziamento del gradiente.

  • 01:15:00 In questa sezione vengono spiegate le differenze tra gradient boosting e ADA boost. Nel gradient boosting, ogni modello si adatta agli pseudo residui del modello precedente, mentre in ADA boost, ogni nuovo modello si adatta a un set di dati riponderato in base alle prestazioni del modello precedente. L'aumento del gradiente funziona meglio per i modelli che non ottimizzano una funzione di perdita e non funzionano con metodi di apprendimento ispirati al calcolo. Lo stacking, d'altra parte, è una tecnica semplice che combina i giudizi di diversi modelli in un unico output. Questa tecnica viene utilizzata per ottenere un ulteriore incremento delle prestazioni dopo aver addestrato una manciata di modelli e desidera combinarli in un modello ancora migliore.

  • 01:20:00 In questa sezione, il relatore spiega che gli ensemble, pur dando un vantaggio rispetto ai singoli modelli, non sono molto utilizzati nella ricerca in quanto i modelli devono essere testati isolatamente per confrontarli senza alcun potenziamento che possa confondere i risultati. Inoltre, gli insiemi possono essere costosi se utilizzati con enormi reti neurali e quindi vengono utilizzati principalmente con modelli minuscoli come timbri decisionali o piccoli alberi decisionali. L'oratore ribadisce inoltre che il bagging riduce le varianti e il potenziamento riduce i pregiudizi.
 

Lezione 11 Dati sequenziali: modelli di Markov, word embedding e LSTM



11 Dati sequenziali: modelli di Markov, incorporamenti di parole e LSTM

In questo video, il relatore discute i diversi tipi di dati sequenziali incontrati nell'apprendimento automatico, come i dati numerici o simbolici disposti nel tempo o in sequenza. Introducono modelli di Markov, incorporamenti di parole e LSTM come modelli per affrontare questi problemi. Il video delinea il processo di addestramento e previsione con dati sequenziali, incluso il concetto di convalida e addestramento sui dati che si sono verificati prima dell'oggetto specifico testato. Inoltre, il relatore spiega come modellare sequenze con reti neurali, incluso come gestire sequenze di diverse lunghezze e modellazione temporale, e il processo di addestramento di una rete neurale ricorrente utilizzando la propagazione all'indietro nel tempo. Infine, il video copre aspetti della classificazione da sequenza a etichetta, che possono essere migliorati con i modelli di Markov quando le reti neurali ricorrenti dimenticano rapidamente le cose.

Il video copre una serie di argomenti relativi all'elaborazione sequenziale dei dati, inclusi i modelli di Markov e i loro limiti, le reti LSTM (Long Short-Term Memory) e i loro vantaggi, l'utilizzo di LSTM per la generazione di testo e immagini, le tecniche di forzatura degli insegnanti e la didascalia delle immagini. Il relatore fornisce spiegazioni dettagliate della struttura LSTM e delle varie porte che contiene, nonché come addestrare e campionare da queste reti per attività come la generazione di testi shakespeariani e la didascalia delle immagini. Viene inoltre discussa l'importanza dell'utilizzo di livelli di incorporamento per migliorare gli LSTM a livello di parola, insieme allo spettro di metodi disponibili per l'elaborazione delle sequenze, dai modelli più semplici a quelli più potenti come gli LSTM.

  • 00:00:00 In questa sezione, il relatore discute l'importanza di partecipare al National Student Survey per gli studenti di informatica, poiché l'affluenza alle urne è stata bassa. Successivamente, l'oratore annuncia che la prossima settimana non ci saranno compiti a casa, poiché saranno sostituiti da esami pratici. L'oratore assicura agli spettatori che la parte difficile del corso è finita e le restanti lezioni saranno meno complicate. L'argomento di questa conferenza sono i dati sequenziali e il relatore introduce i modelli di Markov, i word embedding e gli LSTM come modelli per affrontare tali problemi.

  • 00:05:00 In questa sezione, il relatore discute i diversi tipi di dati sequenziali che potrebbero essere incontrati nell'apprendimento automatico, come i dati numerici o simbolici disposti nel tempo o in sequenza. I dati possono avere dimensioni diverse, ad esempio unidimensionali o bidimensionali, a seconda della natura del problema. Ad esempio, i dati linguistici possono essere visualizzati come unidimensionali con ogni parola come valore discreto o come bidimensionali con una parte post-testo del tag vocale. Il relatore menziona anche possibili attività di apprendimento automatico come la classificazione o la previsione, a seconda del tipo e della dimensione dei dati.

  • 00:10:00 In questa sezione, il relatore spiega come utilizzare i modelli di apprendimento automatico per prevedere il valore successivo di una sequenza dati i valori precedenti in un'unica impostazione di sequenza trasformando i dati in una tabella con caratteristiche per i valori precedenti e un obiettivo valore. Suggeriscono di utilizzare uno studente di regressione come la regressione lineare o l'albero di regressione per addestrare un modello, ma attenzione che è importante suddividere i dati in set di addestramento, convalida e test con un processo di convalida walk-forward per garantire che il modello sia addestrato solo su dati passati e testati su dati futuri, che è ciò che accade nei casi d'uso del mondo reale.

  • 00:15:00 In questa sezione, il relatore discute diversi metodi per l'addestramento e la previsione con dati sequenziali. Sottolineano l'importanza della convalida e della formazione sui dati che si sono verificati prima della cosa specifica su cui viene testato. Introducono il modello di Markov come modello probabilistico per la modellazione a livello di parola e spiegano come abbattere la distribuzione di probabilità congiunta di più variabili casuali utilizzando la regola della probabilità a catena. Mostrano come scomporre la frase "Congratulazioni, hai vinto un premio" in una distribuzione di probabilità congiunta su sei variabili casuali, che sono sei variabili casuali separate e decompongono la distribuzione di probabilità congiunta in un prodotto di distribuzioni condizionate delle parole condizionate dal parole che lo precedono.

  • 00:20:00 In questa sezione, l'oratore discute come calcolare la probabilità di una frase scomponendola in un prodotto di probabilità condizionali. Si consiglia di utilizzare le probabilità logaritmiche per evitare sottoflussi poiché la probabilità di una parola particolare può diventare molto bassa, specialmente con un vocabolario ampio, quindi è meglio prendere invece il logaritmo. Il modello linguistico ideale dovrebbe includere non solo le regole grammaticali ma anche il ragionamento di buon senso e la fisica, ma per ora il parlante usa l'ipotesi di Markov, che presuppone che la probabilità di una parola dipenda solo dalle sue ultime due parole. Possiamo stimare queste probabilità contando quante volte si verificano in un ampio set di dati di linguaggio noto come corpus.

  • 00:25:00 In questa sezione, il video illustra come utilizzare i modelli di Markov e le probabilità condizionali per creare un modello linguistico che generi testo. Il modello di Markov consente il calcolo delle probabilità per una sequenza di parole, che possono essere utilizzate per la generazione di testo attraverso il campionamento sequenziale. Questa tecnica, sebbene abbia i suoi limiti, consente di testare i modelli linguistici per verificarne la capacità e l'accuratezza. Inoltre, il modello di Markov può essere utilizzato per la classificazione, che viene eseguita tramite un classificatore bayesiano che modella le parole con un modello linguistico, condizionato da spam o ham, per dedurre una probabilità che un'e-mail sia spam.

  • 00:30:00 In questa sezione, i relatori hanno discusso i modelli di Markov, che vengono utilizzati per modellare i dati della sequenza stimando la probabilità di una sequenza data una classe, e quindi utilizzando la regola di Bayes per ottenere le probabilità della classe. Un modello Markov di ordine zero può essere utilizzato per lo spam, ma per altre attività un modello di ordine superiore potrebbe essere migliore. Tuttavia, i modelli di Markov trattano le parole come simboli atomici e non considerano il fatto che alcune parole abbiano significati simili. Per risolvere questo problema, è possibile utilizzare modelli di incorporamento per assegnare a ciascun oggetto (in questo caso parole) un vettore di peso che modella le somiglianze tra gli oggetti. Questo viene fatto imparando i parametri oi valori in questi vettori per calcolare i fattori latenti, simili alla codifica delle immagini nelle rappresentazioni vettoriali.

  • 00:35:00 In questa sezione viene introdotta l'ipotesi distributiva, la quale afferma che le parole che si trovano vicino a parole simili possono spesso significare la stessa cosa. L'algoritmo di incorporamento delle parole viene quindi discusso come applicazione di questa ipotesi per calcolare un incorporamento. Prima di applicare l'algoritmo, è necessaria una rappresentazione delle parole, che è una rete neurale con un vettore one-hot per ogni parola, consentendo una rete neurale molto semplice in cui il vocabolario è mappato su un output di 300 per lo spazio di incorporamento. La parte inferiore del modello viene utilizzata come codifica per lo spazio di incorporamento e, sebbene alcuni ricercatori credano che sia una tabella di ricerca, è essenzialmente la stessa cosa di una mappatura da un vettore one-hot a un incorporamento.

  • 00:40:00 In questa sezione, il docente discute il concetto di word embedding, un metodo in cui un oggetto discreto come una parola è rappresentato come un vettore denso. Gli incorporamenti vengono addestrati creando una matrice di una mappatura lineare degli incorporamenti, che può quindi essere utilizzata per trovare una distribuzione di probabilità sul contesto delle parole. Fornisce un esempio di come la sottrazione dell'incorporamento di "uomo" da "donna" crei una direzione in cui le cose diventano più femminili e di come questa direzione possa essere utilizzata per calcolare vettori di parole per altre parole come "regina". Il docente spiega come questi incorporamenti possono essere utilizzati come punto di partenza per reti neurali più grandi per l'apprendimento automatico e come un vasto numero di incorporamenti di parole formati su enormi quantità di dati di testo può essere scaricato dalla libreria di modelli open source di Google per l'utilizzo in altri progetti .

  • 00:45:00 In questa sezione, il relatore discute su come modellare sequenze con reti neurali, incluso come gestire sequenze di diverse lunghezze e come modellare il tempo. Un approccio consiste nell'utilizzare una connessione ricorrente, in cui uno strato nascosto accoglie lo strato nascosto precedente per consentire un ciclo nella rete. Ciò consente alla rete di operare su sequenze di lunghezze diverse e le sequenze possono essere inserite una alla volta per ottenere un output di sequenza. Il relatore sottolinea inoltre l'importanza delle sequenze di riempimento per renderle della stessa lunghezza per il batching e l'addestramento con le reti neurali.

  • 00:50:00 In questa sezione viene spiegato il processo di addestramento di una rete neurale ricorrente utilizzando la propagazione all'indietro nel tempo. La sfida sta nel propagarsi all'indietro attraverso il livello ricorrente mentre il livello nascosto continua a cambiare. Un modo per risolvere questo problema è srotolare la rete in modo che la connessione ricorrente passi dalla copia precedente della rete alla copia successiva. La rete risultante viene trattata come una grande rete feedforward senza connessioni ricorrenti e i pesi vengono aggiornati tramite propagazione all'indietro. Questo processo di addestramento è chiamato apprendimento da sequenza a sequenza, in cui la sequenza di input è mappata su una sequenza di output.

  • 00:55:00 In questa sezione, l'oratore spiega la sequenza all'etichetta in cui l'etichetta di output proviene da dati di sequenza, come la classificazione della banda. Tuttavia, non è l'ideale utilizzare solo l'ultimo elemento della sequenza per prevedere l'output, in quanto crea asimmetria e può portare a problemi con la propagazione del gradiente. Invece, è meglio prendere l'intero output della sequenza e calcolarne la media, il che consente alla rete di considerare ogni parte della sequenza di input, rendendola un migliore predittore dell'etichetta. Inoltre, l'oratore spiega che la sequenza etichettata può presentarsi in due modi, o ripetendo l'etichetta di input n volte e inserendola in una rete neurale per produrre output o inizializzando lo stato finale con un input e fornendo alla rete neurale 0 vettori per generare il sequenza. Tuttavia, questo non è efficiente, poiché le reti neurali ricorrenti tendono a dimenticare rapidamente le cose, il che significa che un modello di Markov potrebbe essere una scelta migliore per alcuni casi.

  • 01:00:00 In questa sezione, il relatore discute i limiti dei modelli di Markov quando si tratta di memoria, in particolare nel decidere quali informazioni vale la pena ricordare. La soluzione è la Long Short-Term Memory (LSTM), che è un tipo di rete neurale ricorrente che ha diverse porte di apprendimento che decidono quali informazioni ricordare o dimenticare. Le porte contengono due vettori di valori compresi tra 0 e 1 o tra -1 e 1, dove il valore a sinistra seleziona la parte da aggiungere alla memoria e il valore a destra determina quali informazioni conservare, a seconda di quante informazioni di input devono essere aggiunto e quanto deve essere cancellato. Utilizzando l'LSTM, le informazioni selezionate per la memoria vengono aggiunte continuamente, il che favorisce la conservazione di ricordi a lungo termine.

  • 01:05:00 In questa sezione, il relatore spiega la struttura della rete Long Short-Term Memory (LSTM), che è un tipo di rete neurale ricorrente costituita da cellule. Le celle accettano l'input e forniscono l'output in ogni fase temporale mentre trasmettono un valore C (stato della cella) e un valore Y (output) tra le fasi temporali. L'oratore scompone la notazione visiva della rete LSTM e prosegue descrivendo varie porte, tra cui la porta dimenticata che riduce l'attivazione nella memoria e la porta di input che decide quali parti dell'input aggiungere alla memoria. Il passaggio finale prevede la decisione del valore di output, che avviene attraverso un altro strato attivato dal sigmoide. Il relatore sottolinea il vantaggio dell'utilizzo delle reti LSTM: non vi è alcun gradiente di fuga lungo la spina dorsale o il nastro trasportatore della rete, il che ne migliora l'efficienza.

  • 01:10:00 In questa sezione, il relatore spiega come campionare da LSTM per costruire un generatore di sequenze a livello di carattere. L'output è una distribuzione di probabilità sul carattere successivo in base alla cronologia di input. Il modello impara a disporre cose come virgole, posizionare nuove linee e pentametro giambico approssimativo, che suona shakespeariano se letto ad alta voce. Il modello è addestrato a sequenziare i dati a livello di carattere invece che a livello di parola perché è più potente, ma deve essere alimentato con l'intera sequenza anche se si stanno campionando solo pochi caratteri. L'oratore cita un esperimento in cui qualcuno ha addestrato e testato un modello di Shakespeare che ha generato un testo impressionante e abbastanza shakespeariano, dimostrando che il modello può apprendere la sintassi modificando un articolo di Wikipedia, che include collegamenti e alcuni testi di markup.

  • 01:15:00 In questa sezione, il relatore discute l'uso dei DM LS nella generazione di testo, come articoli di Wikipedia o tweet di Donald Trump, attraverso l'addestramento della rete su grandi quantità di dati. Evidenziano le diverse modalità in cui può manifestarsi LS DM, come HTML o XML, e menzionano che la rete può persino generare matematica che assomiglia a documenti di matematica di alto livello. Inoltre, il relatore suggerisce di utilizzare i DM LS per generare output casuali utilizzando un vettore casuale immesso nella rete e una rete codificatore/decodificatore basata su un codificatore esterno variazionale (VAE), che è ulteriormente dimostrato attraverso un esempio di musica generata attraverso una rete neurale addestrato su frammenti MIDI.

  • 01:20:00 In questa sezione, il relatore discute come modellare il linguaggio utilizzando una tecnica di forzatura dell'insegnante in cui un modello linguistico predittivo di campionamento sequenziale è combinato con un codificatore esterno per una sequenza più complicata. Continua dimostrando un modello che utilizza la forzatura dell'insegnante chiamato SketchRNN, che viene utilizzato per modellare schizzi che gli umani disegnano rapidamente di vari soggetti, come gatti e gufi. Lo SketchRNN utilizza una sequenza variazionale per sequenziare il codificatore che porta a uno spazio latente, che viene utilizzato per interpolare senza problemi tra diversi disegni dello stesso soggetto. Infine, il presentatore mostra come questa stessa tecnica possa essere utilizzata per interpolare agevolmente tra frasi umane, ottenendo un risultato piuttosto accurato.

  • 01:25:00 In questa sezione, il relatore discute il set di dati Image COCO, che contiene immagini dal set di dati chiamato ImageNet insieme a cinque didascalie scritte da persone che descrivono ciò che sta accadendo nell'immagine. Il relatore suggerisce che un approccio semplice all'attività di didascalia delle immagini consiste nel scaricare un modello di classificazione delle immagini pre-addestrato e rimuovere il livello di classificazione. La mappatura risultante può quindi essere inviata a un LSTM per addestrare il modello a produrre didascalie. Il relatore spiega anche come migliorare LSTM a livello di parola utilizzando un livello di incorporamento e la differenza tra LSTM e modelli di Markov. Infine, il relatore discute la gamma di metodi che possono essere utilizzati per l'elaborazione della sequenza, da quelli potenti a quelli semplici.
 

12 Modelli a matrice: sistemi di raccomandazione, PCA e convoluzioni di grafi



12 Modelli a matrice: sistemi di raccomandazione, PCA e convoluzioni di grafi

Nella prima parte del video, il relatore discute i modelli a matrice e le loro applicazioni nei sistemi di raccomandazione, che possono essere utilizzati per consigli sui prodotti, notizie e social network. I sistemi di raccomandazione si basano su feedback espliciti e impliciti, nonché su informazioni secondarie e possono essere manipolati per diffondere informazioni false se non progettati correttamente. La fattorizzazione della matrice è un metodo comune per prevedere le valutazioni in base al comportamento dell'utente, con il problema di ottimizzazione di trovare matrici U e M per rendere UTM il più vicino possibile a R risolto attraverso metodi di errore al quadrato e calcolando la norma di Frobenius. Il relatore discute anche i metodi per ottimizzare questo problema utilizzando la discesa del gradiente e spiega la regola di aggiornamento del gradiente per il filtraggio collaborativo. Inoltre, il relatore copre cinque modi per migliorare il modello di fattorizzazione della matrice, incluso il controllo del pregiudizio dell'utente e del film, l'utilizzo di Mi piace impliciti e l'incorporazione di informazioni sul sito. Infine, il relatore discute il potere della fattorizzazione della matrice nel classico ambiente di apprendimento automatico, le estensioni del PCA nella fattorizzazione della matrice e l'utilità dei modelli grafici nella memorizzazione dei dati.

La seconda parte del video presenta vari modelli di matrice per i sistemi di raccomandazione, comprese le convoluzioni del grafico per la classificazione dei nodi e la previsione dei collegamenti. Le convoluzioni del grafico mescolano gli incorporamenti dei nodi moltiplicando la matrice di adiacenza con gli incorporamenti originali, ma questo approccio ha dei limiti nella rappresentazione di grandi grafici sociali. I metodi di convalida tradizionali non funzionano per i modelli di funzionalità miste utilizzati nei sistemi di raccomandazione, quindi è necessario l'apprendimento trasduttivo, in cui vengono trattenute solo le etichette dei set di formazione, ma non le funzionalità. Inoltre, la modellazione dei dati sul tempo e sulle valutazioni richiede di tenere conto dei dati di timestamp e dell'apprendimento trasduttivo. Il video si conclude con un riassunto della lezione e un'anteprima della seguente discussione sull'apprendimento per rinforzo.

  • 00:00:00 In questa sezione, il relatore introduce il concetto di modelli a matrice, che sono diversi approcci all'analisi di insiemi di dati che sono meglio visti come matrici. I modelli che verranno discussi condividono la caratteristica di trattare insiemi di dati come matrici. La conferenza si concentra sui sistemi di raccomandazione, che sono tipicamente implementati attraverso la fattorizzazione della matrice, e viene discusso il modello vincente per il concorso Netflix. La conferenza accenna anche brevemente all'analisi delle componenti principali e ai modelli grafici prima di concludere con una discussione sulla validazione.

  • 00:05:00 In questa sezione, l'oratore spiega tre forme di dati che possono essere utilizzati nei sistemi di raccomandazione: feedback esplicito, feedback implicito e informazioni secondarie. Il feedback esplicito è quando all'utente viene chiesto di valutare un articolo specifico, che è molto prezioso ma relativamente raro. Il feedback implicito può essere raccolto osservando ciò che l'utente sta facendo, come visualizzazioni di pagina, liste dei desideri o persino movimenti del mouse. Le informazioni collaterali non sono informazioni sull'associazione tra utenti e film, ma informazioni sugli utenti stessi e sui film, come durata, attori e registi. Il relatore osserva che i sistemi di raccomandazione sono utili per varie impostazioni, tra cui consigli sui prodotti (ad esempio Amazon), notizie (ad esempio Google News) e social network (ad esempio Twitter e YouTube).

  • 00:10:00 In questa sezione, il relatore discute i sistemi di raccomandazione e le loro vulnerabilità. I sistemi di raccomandazione vengono utilizzati per suggerire contenuti a utenti specifici, ma possono essere manipolati per diffondere informazioni false. Il relatore osserva che qualsiasi situazione con due serie di cose e una relazione tra di esse può essere considerata un paradigma di raccomandazione. Ad esempio, ricette e ingredienti o politici e leggi sul voto. Il problema con i sistemi di raccomandazione sono i dati incompleti, poiché non tutti gli utenti valutano ogni film. Il relatore suggerisce di utilizzare modelli di incorporamento per assegnare a ciascun utente e filmato un vettore e apprendere i valori di tali vettori in base a una funzione di perdita al fine di prevedere i dati mancanti.

  • 00:15:00 In questa sezione, il relatore descrive la fattorizzazione della matrice come un modo per rappresentare utenti e film in un modello con l'obiettivo di prevedere le valutazioni dei film in base al comportamento degli utenti. Il modello assegna un vettore a ciascun utente ea ciascun film, che vengono poi moltiplicati insieme in una grande matrice. Utilizzando un prodotto scalare, il relatore spiega come il modello prevede un valore compreso tra meno infinito e infinito positivo, con valori più alti che indicano che è più probabile che all'utente piaccia il film. Le categorie del modello tendono a rafforzare ipotesi superficiali sul comportamento degli utenti e, sebbene non particolarmente raffinato, il modello può comunque offrire previsioni affidabili. Attraverso la fattorizzazione della matrice, una matrice viene scomposta in due matrici più piccole, con una matrice che incorpora gli utenti e l'altra che incorpora i film, e il loro prodotto scalare che rappresenta le previsioni.

  • 00:20:00 In questa sezione, il relatore spiega il problema di ottimizzazione di trovare matrici U e M per rendere UTM il più vicino possibile a R. Questo viene fatto usando il metodo dell'errore quadrato e calcolando la norma di Frobenius. Tuttavia, il problema è che spesso ci sono valori mancanti nella matrice di valutazione. Per risolvere questo problema, la funzione di perdita viene calcolata solo sugli elementi di R per i quali è nota la valutazione nell'insieme di addestramento, anziché su tutti gli elementi di R. Il relatore discute anche i due metodi per ottimizzare questo problema, che sono l'ottimizzazione alternata e discesa del gradiente. Il metodo di discesa del gradiente è più flessibile e più facile da aggiungere al modello.

  • 00:25:00 In questa sezione, il relatore spiega la regola di aggiornamento del gradiente per la tecnica di filtraggio collaborativo con fattorizzazione matriciale. Definisce la matrice degli errori e spiega il processo di derivazione della funzione di perdita rispetto ai parametri. Quindi, dimostra come viene utilizzata la regola di aggiornamento del gradiente per aggiornare i valori degli incorporamenti di utenti e film. La regola di aggiornamento comporta il calcolo del prodotto scalare tra la riga e la colonna della matrice di errore e la rispettiva matrice di inclusione e l'aggiunta al parametro da aggiornare.

  • 00:30:00 In questa sezione, il relatore spiega la logica alla base della funzione di previsione del prodotto scalare nei sistemi di raccomandazione e come può essere addestrata utilizzando la discesa del gradiente stocastico. Viene anche discusso il problema di avere solo valutazioni positive e come risolverlo attraverso il campionamento negativo. L'oratore approfondisce quindi due modi per risolvere il problema della fattorizzazione della matrice non negativa, che fornisce alcune dimensioni interpretabili per i film, simili al concetto di spazio latente in PCA.

  • 00:35:00 In questa sezione, il relatore discute cinque modi per migliorare il modello di fattorizzazione della matrice per i consigli sui film. In primo luogo, spiega come è possibile incorporare nel modello il controllo della distorsione da parte di utenti e film tramite l'aggiunta di parametri scalari appresi. In secondo luogo, il problema della stella d'oro o dell'avvio a freddo viene risolto utilizzando Mi piace impliciti come il comportamento di navigazione per creare un secondo incorporamento dell'utente. In terzo luogo, il modello può essere regolarizzato per evitare l'overfitting aggiungendo un termine di penalità alla funzione di perdita. In quarto luogo, l'analisi delle componenti principali (PCA) può essere applicata per ridurre la dimensionalità degli incorporamenti di utenti e filmati. Infine, il relatore parla di come le convoluzioni del grafico possono essere utilizzate per incorporare informazioni sui generi cinematografici e inserirle nel modello.

  • 00:40:00 In questa sezione, il relatore spiega come aggiungere informazioni implicite e informazioni sul sito ai sistemi di raccomandazione. Per informazioni implicite, il sistema riassume tutti gli incorporamenti di film che un utente ha apprezzato e li aggiunge agli incorporamenti esistenti. Allo stesso modo, per le informazioni sul sito, le caratteristiche di un utente vengono codificate in dati categorici e le loro incorporazioni corrispondenti vengono riassunte per creare il terzo vettore di incorporamento. L'oratore osserva inoltre che il tempo può influire sulle valutazioni, quindi il controllo del tempo è necessario per buone previsioni. Questo può essere fatto suddividendo gli incorporamenti in periodi di tempo discreti e imparando incorporamenti diversi per ciascun periodo. La sezione si conclude con un riepilogo della fattorizzazione della matrice e dei bias per i sistemi di raccomandazione.

  • 00:45:00 In questa sezione, il relatore discute il potere della fattorizzazione della matrice nei sistemi di raccomandazione e come può essere applicato nel classico ambiente di apprendimento automatico. Prendendo una matrice di colonne di caratteristiche e righe di istanza, la fattorizzazione della matrice tramite backpropagation o altri metodi di addestramento può creare una rappresentazione a bassa dimensione di un'istanza che può essere recuperata moltiplicandola con una matrice C vettoriale C. Questo è simile alle tecniche di riduzione della dimensionalità come l'analisi dei componenti principali (PCA), ma può essere reso equivalente al PCA assumendo che le colonne di C siano linearmente indipendenti, risultando in un problema di minimizzazione vincolata.

  • 00:50:00 In questa sezione, il relatore discute la PCA e le sue estensioni nella fattorizzazione di matrici. Spiegano che la PCA può essere utilizzata per dati incompleti massimizzando la ricostruzione solo sui valori noti dei dati. In questo modo, consente la rappresentazione a bassa dimensione, o l'incorporamento, dei dati che possono essere utilizzati per la classificazione o la regressione. Viene inoltre introdotta l'estensione di sparse PCA, che utilizza il regolarizzatore L1 per imporre la scarsità e semplificare l'interpretazione dei parametri. Il presentatore prosegue poi spiegando come diversi valori di perdita possono essere applicati al problema della fattorizzazione della matrice, come l'entropia binaria incrociata per i dati binari, e mostra come questi metodi possono produrre incorporamenti migliori per i dati. La sezione si conclude con un'introduzione ai modelli grafici come utile forma di dati.

  • 00:55:00 In questa sezione, il relatore discute la flessibilità dei grafici nella memorizzazione dei dati, come social network, interazioni proteiche, reti di traffico e grafici della conoscenza. Il relatore propone quindi l'idea di utilizzare modelli di apprendimento automatico che possono consumare grafici, in particolare per attività di previsione dei collegamenti e classificazione dei nodi, che possono essere visti come problemi di raccomandazione. Il relatore introduce il concetto di incorporamento dei nodi e discute la rete neurale convoluzionale del grafico come un modo per esaminare più in profondità il grafico ed estendere l'incorporamento di base.

  • 01:00:00 In questa sezione, il relatore spiega come funzionano le convoluzioni del grafico nei sistemi di raccomandazione. Le convoluzioni del grafico assegnano un incorporamento dimensionale casuale a ciascun nodo nel grafico, che può essere interpretato come l'assegnazione di un colore casuale ai fini della visualizzazione. L'intuizione alla base delle convoluzioni del grafo è che mescolano questi incorporamenti, consentendo di estrarre informazioni dai vicini del nodo nel proprio incorporamento. Dopo diversi passaggi di miscelazione, tutti i nodi alla fine avranno la stessa rappresentazione, che rappresenta il grafico complessivo. Per mescolare gli incorporamenti dei nodi, la matrice di adiacenza viene moltiplicata con gli incorporamenti originali, che fornisce nuovi incorporamenti in cui ogni incorporamento del nodo rappresenta la somma dei suoi vicini più se stesso. Gli incorporamenti devono essere normalizzati per garantire che i valori non esplodano.

  • 01:05:00 In questa sezione, il relatore spiega come utilizzare le convoluzioni del grafico per la classificazione dei nodi e la previsione dei collegamenti. Per la classificazione dei nodi, a un grafico semplice viene assegnato un incorporamento per ciascun nodo e viene applicata una convoluzione del grafico per creare nuovi incorporamenti basati sui nodi vicini. Quindi, viene applicata un'altra convoluzione per mappare gli incorporamenti a due dimensioni per la classificazione. Per la previsione dei collegamenti, gli incorporamenti dei nodi vengono prodotti attraverso più livelli di convoluzioni del grafico e un modello di fattorizzazione a matrice viene utilizzato sopra questi incorporamenti. I gradienti vengono quindi utilizzati per la retropropagazione attraverso le convoluzioni del grafico originale per la previsione del collegamento basata su una struttura del grafico più profonda.

  • 01:10:00 In questa sezione del video, il relatore discute le sfide delle convoluzioni dei grafi, che implicano la rappresentazione di un grafo sociale in modo selettivo e non eccessivamente inclusivo. A causa della piccola proprietà del mondo dei grafi sociali, rappresentare l'intero grafo nella rappresentazione di ciascun nodo è problematico e le convoluzioni del grafo tradizionale non filtrano efficacemente le informazioni non necessarie. Inoltre, la formazione deve essere eseguita in batch completo, il che potrebbe ridurre le prestazioni. Il relatore propone l'attenzione ai grafi come un approccio più selettivo, ma è ancora un'area di ricerca attiva. Il relatore osserva inoltre che la convalida dei modelli di convoluzione del grafico è impegnativa e richiede una deviazione dai metodi di convalida standard dell'apprendimento automatico.

  • 01:15:00 In questa sezione, il relatore spiega che i tradizionali metodi di validazione dei test di addestramento non funzionano per gli approcci di funzionalità miste come quelli utilizzati nei sistemi di raccomandazione, in quanto il rifiuto delle funzionalità dell'utente o delle funzionalità dei film comporta una perdita di incorporamenti. Invece, è necessario un apprendimento trasduttivo, in cui vengono trattenute solo le etichette dei set di formazione, ma non le caratteristiche. Questo approccio è significativo quando si addestrano modelli di incorporamento, in cui l'intero vocabolario deve essere conosciuto in anticipo. Tuttavia, è ancora possibile trattenere valutazioni o collegamenti casuali per i dati rimanenti da utilizzare per la formazione e il test. Infine, il relatore osserva che la classificazione nell'etichettatura dell'ID nodo può ancora essere eseguita utilizzando l'intero grafico.

  • 01:20:00 In questa sezione, il relatore discute la sfida della modellazione del tempo e delle valutazioni in un set di dati, in cui i dati timestamp e l'apprendimento trasduttivo devono essere presi in considerazione. Spiegano che è importante non avere dati di addestramento dal futuro e che il set di test dovrebbe trovarsi nel futuro del set di addestramento. Inoltre, il relatore riassume la lezione, evidenziando l'uso della fattorizzazione matriciale per risolvere il compito astratto della raccomandazione e la generalizzazione della raccomandazione utilizzando modelli di grafi e convoluzioni di grafi. La sezione si conclude con un'anteprima della seguente lezione sull'apprendimento per rinforzo.
 

13 Reinforcement Learning: Policy Gradients, Q Learning, AlphaGo, AlphaStar (MLVU2019)



13 Reinforcement Learning: Policy Gradients, Q Learning, AlphaGo, AlphaStar (MLVU2019)

The video provides an introduction to reinforcement learning and its fundamental components, discussing examples like the robotic pole balancing car and the tic-tac-toe game. The speaker delves into the challenges of reinforcement learning, including non-differentiable functions, the delay in receiving rewards, and the credit assignment problem. The credit assignment problem is addressed through techniques like random search, policy gradients, and Q-learning, where the speaker explains each algorithm, its benefits, and its limitations. The Q-learning algorithm is discussed in greater detail, with an explanation of how it works using a big table of numbers to represent Q-values. The presentation concludes with an explanation of how deep Q-learning and AlphaGo have revolutionized the field of reinforcement learning.

  • 00:00:00 In this section, the instructor introduces the topic of reinforcement learning and explains how it differs from offline learning. Reinforcement learning involves modeling an agent that interacts with a world and learns in real-time from the feedback it receives. The example of a robot vacuum cleaner in an unknown environment is used to illustrate this concept. The instructor also mentions three algorithms for solving the task of reinforcement learning, namely random search, policy gradients, and Q-learning. The discussion then shifts to recent developments in reinforcement learning, with a focus on AlphaGo, AlphaZero, and the ongoing quest to beat the world's top human player in StarCraft II through the use of AI.

  • 00:05:00 In this section, the lecturer explains the basic framework of reinforcement learning, which involves an environment, a model, and a learner. The model takes actions and receives immediate rewards and changes its state accordingly, while the learner updates the model on the fly. The lecturer introduces simple examples like the vacuum cleaner problem, tic-tac-toe, and control problems to illustrate how reinforcement learning works. In tic-tac-toe and vacuum cleaner problems, rewards are only given when the model reaches a final state, while the control problems involve learning how to control a robot or machine in an automated environment.

  • 00:10:00 In this section, the speaker discusses reinforcement learning in the context of a robotic pole-balancing car, which is a classic problem of control in the field. The objective is to keep the car upright, which is done with a simple physics engine or a physical robot. The system uses a sparse reward, where the only reward given is if the cart falls off the rail or if the pole ends up vertical. The learning goal is to maximize the reward by avoiding this penalty as long as possible. The speaker then showcases a demonstration of a remote-controlled helicopter that was trained using reinforcement learning to perform stunts, starting with supervised learning and adding auxiliary goals and reward shaping.

  • 00:15:00 In this section, the speaker discusses how reinforcement learning changed the game of deep learning. He points out that before AlphaGo, researchers used Atari games to get algorithms to learn from pixels. They created a neural network called deep reinforcement learning that enabled the system to learn to play many different games. This is a powerful concept because researchers used a deep neural network to learn the mappings from states to actions, which we call a policy. There are three main problems with reinforcement learning: non-differentiable loss, the credit assignment problem, and exploration versus exploitation.

  • 00:20:00 In this section, the speaker discusses the challenges of reinforcement learning, including the issue of non-differentiable functions within the environment and the balance between exploration and exploitation. The delay in receiving the actual reward from the environment is another problem, as it requires the recognition of which previous actions contributed to the final result. The speaker also provides an example of the challenge encountered in learning to drive a car, where the immediate reward for braking can lead to a wrong association with a subsequent crash. The solution requires distributing the reward over previous actions and learning which ones led to either positive or negative outcomes.

  • 00:25:00 In this section, the video introduces the credit assignment problem in reinforcement learning, which involves determining the weights for a neural network that will maximize reward while interacting with the world. The video explains how a reward function, state transitions, and a policy can determine the environment for the neural network. It presents three approaches to solving this problem, beginning with the simplest one - random search. The concept of population-based black box optimization methods is also introduced, with an example of a successful application of this method to an Atari game called "Frostbite".

  • 00:30:00 In this section, the lecturer discusses reinforcement learning and different techniques used for the credit assignment problem. They recommend starting with random search as a baseline approach, which works well for some simple games. However, more complex methods such as policy gradients and Q-learning are popular for deeper reinforcement learning pipelines. Policy gradient seeks to assign rewards to each step of a trajectory in a sequence, based on the total reward at the end. While this may seem counterintuitive, it averages out over multiple trajectories and works well for situations where part of the deep learning pipeline is not differentiable.

  • 00:35:00 In this section, the concept of policy gradients and how they can be used to optimize the expected ultimate reward through the estimation of gradients is discussed. The algorithm involves estimating the gradient by sampling a bunch of trajectories, following each of these actions through the rest of the pipeline, and multiplying the ultimate reward by the gradient of the logarithm of the probability of that action for each trajectory in the sample. This estimation of the gradient can then be used for further backpropagation. This algorithm has been used on AlphaGo and AlphaZero.

  • 00:40:00 In this section, the speaker discusses Q-learning, which is a popular algorithm in reinforcement learning that is used to optimize the discounted reward. The discounted reward is the total reward that a policy will receive if it chooses specific actions in different states. Q-learning uses a recursive function to calculate the discounted reward for each state based on the policy's actions. The optimal policy that maximizes the discounted reward is then determined based on this calculation. The speaker uses a simple example of a vacuum-cleaner world to demonstrate how Q-learning works.

  • 00:45:00 In this section, the speaker explains the concept of an optimal policy and an optimal value function in reinforcement learning. The optimal policy leads to the maximum value for a particular state, while the optimal value function is the value function of that policy. However, these values are often difficult to compute. The speaker then introduces the Q-learning algorithm, which redefines the optimal policy and optimal value function in terms of a function called Q. Q is defined as the immediate reward multiplied by the discounted value of Q for the next state resulting from an action taken in the current state. The circular definition of Q allows for the possibility to make up a Q function and ask if it is optimal by filling in the values.

  • 00:50:00 In this section, the speaker discusses the method of solving recurrent equations by iteration as a way to find the optimal Q function for Q-learning. He simplifies the recurrence relation by using a scalar function and demonstrates that iterative computation can be used to find the stable state/solution. Similarly, for Q-learning, the initial Q function is randomly initialized, and then the recurrence relation is applied as a program, and the Q function gets updated based on the values provided by the recurrence relation. The Q function's values get updated after each interaction with the environment where a state, action, reward, or successor state is encountered, and the max value over each successor state is used to update the Q function.

  • 00:55:00 In this section, the Q learning algorithm is explained, which involves learning a big table of numbers to represent Q-values. The algorithm works by observing the immediate reward in each state and propagating it back to the starting state through repetition of the same trajectory. The state space is explored through epsilon-greedy exploration, a process where the best policy is followed with some small probability of randomly exploring a state. Deep Q learning is then introduced, which involves implementing a neural network to learn the Q-value function. Through backpropagation, the network is updated with information from observed immediate rewards and successor states. Finally, an explanation of how AlphaGo works is promised in the remaining 30 minutes of the video, following a recommendation of the documentary "AlphaGo".

  • 01:00:00 In this section, the speaker explains the game of Go and dispels some common misconceptions about AlphaGo. While it is true that the game of Go has a high branching factor, it's not just the size of the tree that makes the game difficult. Looking deep into the tree to figure out the best move strategy is also a challenging aspect. The speaker also discusses old approaches to the game of Go, such as the minimax algorithm, which is used to enumerate all possible futures from the current state.

  • 01:05:00 In this section, the speaker discusses Monte Carlo tree search, a method for exploring a game tree quickly and efficiently in order to approximate the minimax algorithm. This method involves doing rollouts, which randomly pick moves and estimates the value of the state in reinforcement learning terms. The speaker talks about how Monte Carlo tree search combines rollouts with keeping a memory of the local tree to build up promising regions of the tree without exploring the whole thing. The basic algorithm involves expanding nodes, doing rollouts, and back-propagating values to update probabilities of all the nodes followed to the leaf. This method works well and does not involve any machine learning or neural networks.

  • 01:10:00 In this section, the speaker discusses how AlphaGo and AlphaZero are examples of reinforcement learning applied to the game of Go. AlphaGo uses two neural networks, a policy network and a value network, to play Go. The policy network maps a state of the board to an action, and the value network maps the state to the likelihood of winning from that state. They use imitation learning to train these networks by learning from human games, and then improve through self-play using policy gradient reinforcement learning. During actual play, AlphaGo uses Monte Carlo tree search with the value and policy network to make its moves. AlphaZero is a newer version that does not use any human information, but rather builds its understanding of the game entirely through self-play. AlphaZero combines the policy and value networks into a single network, uses Monte Carlo tree search as a policy improvement operator, and adds residual connections with batch normalization to improve performance.

  • 01:15:00 In this section, the concept of a "two-headed monster" is discussed, where a network has a shared set of bottom layers that get gradients from both the policy and value outputs. During training, the MCTS principle is used as a policy improvement operator, such that they start with an initial policy, let it play against itself using MCTS, and observe the resulting policy as MCTS. This observed improvement step is then given as a training objective to the network. Additionally, a combination of residual connections and better normalization is used as a trick for the neural network, allowing for a gradual ease towards learning a deeper and deeper neural network which works very well, especially in combination with batch normalization.

  • 01:20:00 In this section, the speaker discusses the importance of weight initialization and standardization of data for properly training deep reinforcement learning networks. The speaker suggests that initializing weights so that input is standardized with zero mean and variance one results in better-behaved gradients during backpropagation. Batch normalization is a useful layer in helping with this standardization since it looks at all the instances in the batch, computes the mean and standard deviation, and standardizes them. This can help speed up training and train much deeper networks; the speaker cites AlphaGo and AlphaZero's success in training using batch normalization.

  • 01:25:00 In this section, the speaker discusses the development of AlphaStar, DeepMind's latest breakthrough in machine learning applied to real-time strategy games. Unlike the game of Go, which had been considered “solved” by DeepMind's AlphaGo, StarCraft posed unique challenges for machine learning due to its diverse action space, imperfect information, and absence of a game tree. AlphaStar uses a combination of techniques including a transformer torso, deep LSDM core, pointer network, and multi-agent learning. While DeepMind has not yet published the details of how AlphaStar works, the demonstration of its abilities against world-level Starcraft players is impressive, representing the current state of the art in this field.

  • 01:30:00 In this section, the speaker discusses the use of transformers, which work like embeddings and enable neural networks to start learning relations between units. This is important because it allows the neural network to reason about the relations between particular units, e.g. for navigation in a game. The speaker then explains how reinforcement learning works in sequential sampling and how the auto-regressive policy head helps to create a more coherent and efficient sequence of actions. Finally, the speaker explains the concept of multi-agent learning and how it is used to prevent players from forgetting to beat easy strategies.

  • 01:35:00 In this section, the speaker discusses the controversy surrounding AlphaStar, an AI system developed by DeepMind to play the game StarCraft. AlphaStar was successful in defeating professional players of StarCraft, leading to debates about whether the AI system was actually showcasing human-like performance or exploiting abilities that humans do not have. One of the main advantages of AlphaStar was that it could see the whole board at once, unlike human players who have to constantly adjust the camera view. Additionally, although AlphaStar was capped at about 600 actions per minute, those actions were of higher quality than the actions of human players who could click up to 800 times per minute with a lot of noise. However, one weakness of AlphaStar was that it could not respond well to new strategies encountered during the game, which is a core problem of the system that could provide insight into cognition.
 

14 Revisione: bias induttivo, bias algoritmico, impatto sociale dell'apprendimento automatico (MLVU2019)



14 Revisione: bias induttivo, bias algoritmico, impatto sociale dell'apprendimento automatico (MLVU2019)

Questa prima parte del video fornisce una rassegna completa degli argomenti di machine learning, tra cui funzioni di perdita, sistemi di deep learning, pregiudizi induttivi e algoritmici e problemi aperti nel machine learning. Il relatore sottolinea l'importanza della metodologia e dei casi d'uso del mondo reale nel processo di data science e fornisce suggerimenti per studiare e superare la procrastinazione. Il relatore discute anche le strategie per migliorare la comprensione dei concetti di machine learning e offre risorse per un ulteriore apprendimento. Infine, il video evidenzia il problema della generalizzazione nei modelli di machine learning e l'importanza dei bias induttivi nel migliorare le prestazioni del modello.

La seconda parte del video discute diverse questioni relative all'apprendimento automatico, tra cui il bias induttivo, il bias algoritmico e l'impatto sociale del machine learning. La distorsione induttiva può essere incorporata in una rete neurale per risolvere problemi di causalità, composizionalità e generalizzazione. Tuttavia, questo approccio presenta anche dei limiti, tra cui una ridotta robustezza rispetto a variabili non modellate. Il pregiudizio algoritmico può essere perpetuato se i modelli di apprendimento automatico rafforzano i pregiudizi nei dati. Ciò può essere problematico in casi come gli algoritmi di riconoscimento facciale che non riescono a riconoscere le persone di colore o gli algoritmi utilizzati nel sistema giudiziario statunitense che hanno pregiudizi nei confronti dei neri. Lo sviluppo responsabile di questi sistemi è importante per evitare di perpetuare pregiudizi e promuovere l'equità nei processi decisionali.

  • 00:00:00 In questa sezione del video, il relatore fornisce una rassegna degli argomenti trattati durante il corso di machine learning, inclusa la ricetta di base del machine learning che prevede attività standard come la classificazione o la regressione, la scelta di istanze e funzionalità, la scelta una classe del modello e alla ricerca di un buon modello per adattarsi alle istanze e alle funzionalità. Il relatore sottolinea l'importanza della metodologia e l'idea di suddividere i dati in un training e in un set di test per evitare un uso eccessivo del set di test. Sottolinea l'importanza di tenere presente il caso d'uso del mondo reale e di prendere decisioni nel processo di data science che riflettano quel caso d'uso. Il relatore fornisce anche strategie d'esame e una prospettiva sullo stato attuale e sull'impatto futuro dell'apprendimento automatico.

  • 00:05:00 In questa sezione, il relatore discute varie funzioni di perdita che possono essere utilizzate nell'apprendimento automatico, a partire dall'accuratezza e dai suoi limiti. Viene presentata la funzione di perdita di regressione logistica, che utilizza una funzione sigmoidea per interpretare gli output del modello come probabilità rispetto alle classi, quindi ottimizza tali probabilità utilizzando il principio di massima verosimiglianza e la perdita di entropia incrociata. Altre funzioni di perdita discusse includono i minimi quadrati, l'entropia e il margine morbido SVM. Infine, il relatore introduce l'algoritmo di backpropagation che viene utilizzato per calcolare il gradiente per modelli complicati scomponendoli in una composizione di moduli e utilizzando la regola della catena per ottenere un prodotto di derivate locali.

  • 00:10:00 In questa sezione del video, il docente discute le basi dei sistemi di deep learning e come calcolare gradienti su funzioni differenziabili uniformi utilizzando tensori. Parla anche di modelli di variabili nascoste e descrive l'algoritmo di massimizzazione delle aspettative per trovare distribuzioni su variabili nascoste. La lezione passa quindi al generatore di reti neurali, che sono modelli di variabili nascoste contenenti reti neurali. Il docente discute l'adattamento dei parametri attraverso i dati utilizzando reti generative contraddittorie e codificatori automatici variazionali. Infine, la lezione copre i modelli di albero decisionale e di regressione, nonché dati e modelli sequenziali come reti neurali ricorrenti e modelli di Markov.

  • 00:15:00 In questa sezione, il relatore discute il pregiudizio induttivo e algoritmico nell'apprendimento automatico, suggerendo che i dati di addestramento dovrebbero sempre precedere i dati del test nel tempo e che la convalida incrociata dovrebbe essere eseguita utilizzando la convalida incrociata walk-forward. L'oratore tocca quindi i sistemi di raccomandazione che utilizzano le valutazioni degli utenti e dei film come unica fonte di dati e come questo modello a matrice sia molto informativo sia sugli utenti che sui film. Infine, il relatore spiega che l'apprendimento per rinforzo richiede un compromesso tra esplorazione e sfruttamento e che le reti neurali convoluzionali con abbandono non costituiscono un dilemma tra esplorazione e sfruttamento, ma piuttosto una tecnica di ottimizzazione degli iperparametri online.

  • 00:20:00 In questa sezione, il relatore spiega che quando si parla di argomenti complessi, i concetti sono come un grafico nella nostra testa, ma quando li spiegano diventano una sequenza. Per aiutare a ricostruire le relazioni di livello superiore tra i concetti discussi, il relatore crea una mappa mentale di ricerca e modelli. I modelli sono suddivisi in istanze specifiche di reti neurali, come regressione lineare, classificazione lineare e regressione logistica, insieme a modelli più complicati come da J di Ganz e v AE. Il relatore discute anche i diversi tipi di metodi di ricerca, con la discesa del gradiente che è la discesa del gradiente più generica e stocastica e la discesa del gradiente mini-batch sono varianti specifiche. L'oratore osserva che la discesa del gradiente mini-batch è ciò che viene comunemente utilizzato per la maggior parte del tempo. Infine, il relatore discute le diverse impostazioni e modalità di gestione dei dati, come l'impostazione di base della suddivisione in caratteristiche, istanze e valori target e l'impostazione della sequenza per trattare istanze separate in un ordine specifico.

  • 00:25:00 In questa sezione, il relatore discute i diversi tipi di set di dati e attività nell'apprendimento automatico come i dati di sequenza, i sistemi di raccomandazione e l'apprendimento online. Parlano anche di deep learning come metodo che prevede la creazione di una pipeline end-to-end senza eseguire alcuna estrazione manuale delle funzionalità per evitare di perdere informazioni. Il relatore fornisce suggerimenti su alcuni "trucchi del mestiere" e una rassegna di tutti i compiti e modelli astratti discussi nelle lezioni. Infine, il relatore fornisce suggerimenti per lo studio per l'esame, che comprende tre categorie di domande: richiamo, combinazione e ragionamento.

  • 00:30:00 In questa sezione, il docente discute i tre tipi di domande che gli studenti possono aspettarsi nel prossimo esame: domande sulla conservazione, sulla combinazione e sull'applicazione. Fornisce alcuni suggerimenti per aiutare gli studenti ad affrontare la procrastinazione, come rendersi conto che la procrastinazione è causata dal perfezionismo e trovare il minimo impegno possibile per iniziare un'attività. Il docente suggerisce inoltre di creare una barra di avanzamento per tenere traccia dei progressi ed evitare di vedere il lavoro come un'attività senza fine. Infine, ricorda agli studenti di non essere perfezionisti.

  • 00:35:00 In questa sezione del video, il relatore fornisce suggerimenti su come superare la procrastinazione e aumentare la produttività. Una tecnica che suggerisce è la tecnica del pomodoro, che prevede l'impostazione di un timer per 25 minuti e il lavoro con estrema concentrazione durante quel periodo di tempo, seguito da una pausa di cinque minuti. Suggerisce inoltre di concentrarsi sul contenuto della lezione per un esame e di utilizzare gli esami pratici per prepararsi rapidamente a un test imminente. Nel complesso, l'oratore sottolinea l'importanza di compiere piccoli passi realizzabili verso un obiettivo piuttosto che lottare per la perfezione tutto in una volta.

  • 00:40:00 In questa sezione, il relatore condivide le strategie per migliorare la comprensione dei concetti di machine learning. Invece di leggere tutto a fondo, suggerisce di fare un rapido passaggio per identificare le lacune di conoscenza e quindi concentrarsi su quelle aree specifiche. Per aiutare in questo processo, consiglia di creare un elenco di parole chiave durante l'apprendimento, a cui fare riferimento in seguito per chiarimenti. Consiglia inoltre agli studenti di formulare le proprie domande d'esame per stabilire la priorità su quali argomenti concentrarsi e suggerisce di leggere da più fonti per ottenere diverse prospettive sul materiale. Infine, consiglia il Google Machine Learning Crash Course come risorsa completa per un ulteriore apprendimento.

  • 00:45:00 In questa sezione, il presentatore discute i problemi aperti nell'apprendimento automatico, vale a dire causalità, composizionalità e generalizzazione. La causalità è un problema difficile per i moderni metodi di apprendimento automatico perché la correlazione non implica la causalità. Per identificare la causalità, è necessario l'intervento, che può essere fatto attraverso un ambiente di apprendimento per rinforzo in cui possono essere condotti esperimenti. Tuttavia, se gli esperimenti non sono possibili per motivi etici o pratici, è possibile utilizzare le conoscenze di base da inserire nel modello. Il presentatore menziona anche il disegno di piccoli grafici per modellare le possibili cause nel mondo.

  • 00:50:00 In questa sezione, il relatore parla di pregiudizi induttivi e algoritmici mentre esplora come integrare il ragionamento umano nei modelli di apprendimento automatico. Discutono su come si possa dedurre la causalità e su come utilizzare le conoscenze di base per ragionare sulle correlazioni. Discutono anche problemi con la composizionalità e la generalizzazione nell'apprendimento automatico, osservati in particolare nelle reti neurali ricorrenti. Il relatore conclude affermando la nostra necessità di comprendere gli effetti di composizione per far avanzare ulteriormente l'apprendimento automatico.

  • 00:55:00 In questa sezione, il relatore discute il problema della generalizzazione nei modelli di apprendimento automatico e come tendono a cadere a pezzi quando testati su dati che sono anche leggermente diversi dai loro dati di addestramento. La soluzione a questo sta nel pensare al pregiudizio induttivo, che si riferisce ai vincoli impliciti o espliciti posti su un modello per orientarlo verso determinate soluzioni nel suo spazio modello. Il relatore fornisce esempi di diversi tipi di modelli e dei loro pregiudizi induttivi, evidenziando come i pregiudizi induttivi più forti, come quelli trovati nelle reti neurali convoluzionali, possono migliorare la capacità di generalizzazione di un modello.

  • 01:00:00 In questa sezione, il relatore discute l'idea di bias induttivo, che può essere integrato in una rete neurale per aiutare a risolvere problemi di causalità, composizionalità e generalizzazione. Inserendo conoscenze di base e costruendo esplicitamente la composizionalità nel modello, la rete può imparare a rappresentare centinaia o migliaia di cifre, anche se ha visto solo cifre fino a cento. Tuttavia, più un modello è vincolato, meno robusto diventa rispetto alle cose che non ha modellato. Inoltre, il relatore prevede che l'apprendimento automatico si sposterà verso più sistemi di apprendimento end-to-end, in cui l'apprendimento automatico si diffonderà nell'intero sistema, portando a qualcosa chiamato programmazione differenziale o "software 2.0".

  • 01:05:00 In questa sezione, il relatore discute il potenziale per l'apprendimento automatico di diventare primitivo nei linguaggi di programmazione e come questo potrebbe portare a sistemi più grandi e più prevedibili. Il relatore esplora anche l'impatto dell'apprendimento automatico sulle arti creative, come la progettazione di caratteri, e suggerisce che l'apprendimento automatico potrebbe essere utilizzato per l'aumento dell'intelligenza, dove le macchine migliorano i processi umani esistenti come la creatività e il design. Viene inoltre introdotto il concetto di infrastruttura intelligente come possibile soluzione alle preoccupazioni sullo sviluppo di robot killer.

  • 01:10:00 In questa sezione, il relatore discute i potenziali pericoli dei generatori di linguaggi, come GPT, che ha la capacità di produrre un linguaggio coerente e generare fake news su larga scala. La preoccupazione è che questo tipo di tecnologia possa avere un impatto sociale significativo, influenzando potenzialmente le discussioni e le elezioni nazionali consentendo alle persone di manipolare i contenuti. Inoltre, viene discussa anche la questione del pregiudizio algoritmico, in quanto i modelli di apprendimento automatico possono rafforzare i pregiudizi nei dati su cui vengono addestrati, il che può avere conseguenze negative quando vengono messi in produzione.

  • 01:15:00 In questa sezione, il relatore discute la questione del bias algoritmico, in cui gli algoritmi di apprendimento automatico possono amplificare i bias già esistenti nei dati, anziché eliminarli. Ciò può comportare conseguenze indesiderate e impatti dannosi su determinati gruppi, come si vede in esempi come gli algoritmi di riconoscimento facciale che non riescono a riconoscere le persone di colore e i risultati dei motori di ricerca per le immagini del CEO che sono prevalentemente maschi. Il relatore sottolinea inoltre l'importanza del monitoraggio dei sistemi e della consapevolezza dei pregiudizi inerenti agli algoritmi di apprendimento automatico.

  • 01:20:00 In questa sezione, il relatore discute la questione del bias algoritmico nei sistemi di apprendimento automatico e gli impatti sociali che può avere. Spiega il caso di un sistema di apprendimento automatico utilizzato per prevedere la recidiva nel sistema giudiziario statunitense che aveva pregiudizi nei confronti dei neri, portando a previsioni errate e perpetuando pregiudizi sociali. Sostiene che anche se i dati utilizzati in questi sistemi sono accurati, fare affidamento sull'apprendimento automatico per prendere decisioni basate sulla razza può portare alla profilazione razziale e perpetuare pregiudizi sistemici. Cita un caso nei Paesi Bassi in cui la profilazione razziale è stata normalizzata e accettata dal pubblico. Il relatore sostiene l'uso etico dell'apprendimento automatico per evitare di perpetuare pregiudizi e promuovere l'equità nei processi decisionali.

  • 01:25:00 In questa sezione, il relatore discute la questione del profilo razziale e come si collega all'uso improprio delle probabilità. Spiegano il concetto di fallacia del pubblico ministero e come si possa erroneamente presumere che la probabilità di un esito data una certa condizione sia la stessa della probabilità della condizione dato l'esito. L'oratore sostiene che anche se le previsioni sono accurate, ciò non significa necessariamente che le azioni basate su tali previsioni siano giuste o morali. Inoltre, sottolineano che alcuni attributi come l'etnia possono ancora essere dedotti o correlati con altri attributi, rendendo difficile eliminare completamente i pregiudizi razziali dai sistemi di apprendimento automatico. Infine, il relatore osserva che mentre gli individui dovrebbero essere ritenuti responsabili delle proprie azioni, è fondamentalmente ingiusto consentire loro di essere penalizzati per le azioni di altri che condividono i loro attributi, il che può avere impatti negativi come microaggressioni o essere presi di mira ingiustamente in situazioni come le fermate del traffico.

  • 01:30:00 In questa sezione, il relatore discute il potenziale impatto sociale dell'apprendimento automatico e la necessità di uno sviluppo responsabile di questi sistemi. Con l'apprendimento automatico che governa molte decisioni, c'è un nuovo problema di fare affidamento su un componente difettoso su larga scala, e il sistema di credito sociale cinese ne è un esempio. I politici e gli esseri umani stanno bene con lo sviluppo di tali sistemi, quindi c'è bisogno di informatici, scienziati dell'informazione e scienziati dei dati che siano informati su questi problemi per costruire e sviluppare questi sistemi in modo responsabile. La responsabilità di costruire questi sistemi ricade sugli studenti che stanno studiando questi campi, e il relatore augura loro buona fortuna con i loro esami e progetti finali.
 

Segmenta immagini e video in Python usando Segment Anything Model (SAM) | YOLOv5 | YOLOv8 e SAM



Segmenta immagini e video in Python usando Segment Anything Model (SAM) | YOLOv5 | YOLOv8 e SAM

Questo video introduce il Segment Anything Model (SAM), un modello di intelligenza artificiale in grado di identificare ed estrarre oggetti da immagini e video per varie attività. Il SAM viene addestrato su un enorme set di dati di 11 miliardi di immagini e 1,1 miliardi di maschere e offre ottime prestazioni in una varietà di attività di segmentazione. Il video fornisce istruzioni dettagliate per l'utilizzo del SAM su un sistema locale, incluso come installare i pacchetti necessari, scaricare checkpoint del modello pre-addestrato ed eseguire la segmentazione su immagini e video utilizzando Python. Il video mostra anche come utilizzare il SAM con YOLOv5 o YOLOv8 per creare riquadri di delimitazione attorno agli oggetti di interesse. Il SAM ha potenziali applicazioni anche nell'animazione.

  • 00:00:00 In questa sezione, il video introduce il Segment Anything Model (SAM), un modello AI recentemente rilasciato da Meta che può identificare ed estrarre oggetti da immagini e video per varie attività. Il SAM è addestrato su 11 miliardi di immagini e 1,1 miliardi di maschere e ha una forte generalizzazione zero-shot su una varietà di attività di segmentazione. Il video mostra come utilizzare il SAM attraverso una demo che consente agli utenti di caricare un'immagine ed eseguire la segmentazione sull'immagine completa o tagliare ogni oggetto separatamente. Gli utenti possono anche disegnare riquadri di delimitazione, aggiungere maschere ed eseguire il multi-mascheramento. Il SAM ha potenziali applicazioni anche nell'animazione. Il video fornisce inoltre ulteriori informazioni sull'architettura del SAM, sulla disponibilità del set di dati e sulle domande frequenti.

  • 00:05:00 In questa sezione del video, il presentatore mostra come utilizzare Segment Anything Model (SAM) per creare maschere multiple per diversi oggetti in un'immagine. Il SAM è stato addestrato su un set di dati di 11 milioni di immagini e 1,1 miliardi di maschere e ha ottime prestazioni in una varietà di attività di segmentazione. Il presentatore mostra come selezionare un'immagine, eseguire la segmentazione sull'immagine completa e quindi ritagliare gli oggetti separati. Il presentatore mostra anche come disegnare riquadri di delimitazione attorno agli oggetti e come scaricare e distribuire i dati risultanti. Il video si conclude con informazioni sull'installazione di SAM e sul suo utilizzo in Python, anche con YOLOv5 e YOLOv8.

  • 00:10:00 In questa sezione del video, il presentatore spiega i requisiti per l'esecuzione del modello segment any su un sistema locale, inclusa la disponibilità di una GPU e l'installazione dei pacchetti necessari come Torch e Dodge Vision con supporto CUDA. Dimostrano come clonare il repository Segment Anything Model e installare tutte le dipendenze richieste utilizzando pip. Il video spiega anche come convertire un modello di segmentazione in formato ONNX e come scaricare i checkpoint del modello preaddestrati per tre diverse dimensioni di backbone. Il presentatore mostra quindi come eseguire la segmentazione su immagini e video utilizzando il modello. Il video include anche istruzioni dettagliate dettagliate per ogni attività, facilitando il seguito da parte degli spettatori.

  • 00:15:00 In questa sezione del video, il relatore importa innanzitutto tutte le librerie richieste, incluso Matplotlib per visualizzare le immagini di input e output nel taccuino dell'app Google. Quindi scaricano immagini di esempio dal loro disco e mostrano un'immagine di esempio di più persone che camminano con edifici sullo sfondo. Successivamente, caricano un punto di controllo del modello pre-addestrato con trattino sul taccuino dell'app Google e applicano alle immagini il generatore automatico di maschere del modello di segmentazione per segmentarle. Il presentatore fornisce punti per lato delle immagini che vengono utilizzati da SMAM per scansionare l'immagine e segmentarla in base ai punti forniti. Una soglia IOT di previsione di 0,9 è impostata per aumentare la precisione della segmentazione.

  • 00:20:00 In questa sezione del video, il presentatore mostra come utilizzare il Segment Anything Model (SAM) per eseguire la segmentazione di oggetti su immagini e video utilizzando Python. Dimostrano come regolare il programma IU per aumentare la precisione e ridurre la quantità di spazzatura nell'output. Applicano il modello di segmentazione a un'immagine campione e mostrano come segmenta accuratamente la persona, l'edificio e l'albero. Quindi utilizzano lo stesso modello per segmentare un video di esempio installando il pacchetto di metasegmentazione e scaricando video di esempio da Google Drive. Il relatore quindi copia il codice da un repository GitHub e lo applica al video, implementando efficacemente il SAM sul video.

  • 00:25:00 In questa sezione, il relatore discute il repository Segment Anything Model (SAM), che contiene tre diversi modelli con diverse dimensioni di backbone, consentendo agli utenti di definire il nome del modello e chiamare il video che desiderano implementare. L'oratore quindi esegue il codice necessario per integrare il SAM con YOLOv5 o YOLOv8, utilizzando pacchetti esistenti e immagini di esempio. Il relatore dimostra come il SAM viene utilizzato per eseguire la segmentazione su edifici, alberi e automobili, utilizzando codici colore per eliminare il rumore dell'output. Il relatore discute anche le diverse versioni del modello di segmentazione, indicando che ogni modello ha una diversa dimensione della spina dorsale. La dimostrazione evidenzia la precisione e la velocità del più piccolo modello YOLOv8 Nano.

  • 00:30:00 In questa sezione, il relatore mostra come sono stati in grado di utilizzare il Segment Anything Model (SAM) con YOLOv8 per eseguire la segmentazione e creare riquadri di delimitazione attorno agli oggetti di interesse. Dimostrano la capacità del modello mettendo in mostra un riquadro di delimitazione che circonda una persona e segmenta anche la sua immagine. Il relatore conclude il video tutorial evidenziando l'integrazione di YOLOv8 con SAM e salutando gli spettatori.
 

Corso YOLOv8 - Applicazione web per il rilevamento di oggetti in tempo reale utilizzando YOLOv8 e Flask - Webcam/telecamera IP


Corso YOLOv8 - Applicazione web per il rilevamento di oggetti in tempo reale utilizzando YOLOv8 e Flask - Webcam/telecamera IP

Il corso YOLOv8 è una serie di tutorial che guidano gli utenti attraverso la creazione di un'applicazione web per il rilevamento di oggetti in tempo reale utilizzando YOLOv8 e Flask. I tutorial coprono l'installazione del software necessario come Python e PyCharm, la creazione di un ambiente virtuale, l'installazione di pacchetti e il test del rilevamento di oggetti su immagini e webcam. Le esercitazioni riguardano anche la conversione dell'output da tensori a numeri interi, l'etichettatura degli oggetti rilevati e il salvataggio del video di output con i rilevamenti. Agli spettatori viene mostrato come integrare YOLOv8 con Flask e come eseguire l'applicazione Web di rilevamento degli oggetti in tempo reale sia sui feed video che live della webcam.

Nella seconda parte del video il presentatore mostra come creare un'applicazione Web utilizzando Flask e YOLOv8 per il rilevamento di oggetti su feed e video live della webcam, oltre a presentare l'addestramento e l'inferenza di un modello personalizzato per il rilevamento di dispositivi di protezione individuale. L'app Web ha una home page, una pagina video e una pagina di feed webcam live, con uno stile CSS per ogni pagina, e il relatore esamina i file HTML e Flask utilizzati per il progetto. Il video mostra il processo di importazione di un set di dati, la sua preparazione per l'addestramento del modello YOLOv8, l'addestramento del modello, l'analisi dei risultati e il test del modello su video dimostrativi. Nel complesso, il video fornisce un'esercitazione completa per lo sviluppo e il test di un'applicazione Web per il rilevamento di oggetti in tempo reale.

Il relatore discute anche le modifiche apportate a un'applicazione Web che utilizza il modello YOLOv8 addestrato su un set di dati di dispositivi di protezione individuale (DPI). Le modifiche includono la modifica del codice per assegnare colori diversi ai riquadri di delimitazione e ai rettangoli delle etichette in base ai nomi delle classi e l'impostazione di un punteggio di affidabilità superiore a 0,5 per la visualizzazione dei riquadri di delimitazione e dei rettangoli. Il relatore dimostra il rilevamento riuscito degli articoli DPI in un video e in un feed live della webcam, segnando la fine del corso.

  • 00:00:00 Il prossimo passo è scaricare e installare Python e PyCharm Community Edition. L'ultima versione di Python non è consigliata in quanto potrebbe contenere errori e correzioni di bug. Possiamo scaricare l'ultima versione della versione Python 3.8 che è consigliata. La versione di PyCharm Professional offre una prova gratuita di 30 giorni, ma la Community Edition è sufficiente per il tutorial. Una volta scaricato e installato il software necessario, possiamo creare una cartella vuota con un nome a nostra scelta, per poi aprirla in PyCharm per avviare il progetto.

  • 00:05:00 In questa sezione del corso intensivo YOLOv8, l'istruttore mostra come creare un nuovo ambiente virtuale in Pycharm e installare i pacchetti necessari per il progetto. L'istruttore mostra come creare un nuovo progetto, selezionare l'interprete di base e installare i pacchetti tramite la finestra Package Manager. Mostrano anche come creare un file requirements.txt per annotare tutti i pacchetti che si desidera installare dalla riga di comando. Il video sottolinea l'importanza di installare il pacchetto ultralytics per il rilevamento degli oggetti utilizzando YOLOv8.

  • 00:10:00 In questa sezione, l'istruttore mostra come installare YOLOv8, che è l'unica versione di YOLO che ha il proprio pacchetto. Utilizzando pip install ultralytics, è possibile installare YOLOv8 e, se è necessario apportare modifiche allo script di rilevamento o training, è possibile clonare il repository. L'istruttore utilizza quindi YOLOv8 per rilevare gli oggetti in un'immagine importando il pacchetto e il modello YOLOv8, specificando il file dei pesi pre-addestrato e passando il percorso dell'immagine di input. I risultati mostrano gli oggetti rilevati nell'immagine.

  • 00:15:00 In questa sezione, il video mostra come testare il modello YOLOv8 su nuove immagini aggiungendole alla cartella delle immagini ed eseguendo lo script di test YOLO. Dopo aver importato la libreria cv2 e aggiunto un ritardo, il modello produce risultati piuttosto impressionanti rilevando accuratamente motociclette e auto. Il video affronta anche il problema della precisione rispetto alla velocità quando si utilizzano diversi modelli YOLO e suggerisce di utilizzare il modello YOLOv8x per risultati ancora più accurati. Il video passa quindi al test del modello YOLOv8 su una webcam utilizzando una nuova directory.

  • 00:20:00 In questa sezione del video, il presentatore crea un nuovo file chiamato "YOLOv8_webcam.py". Importano YOLOv8, CB2 e matematica e impostano "cap" uguale a "CV2.videoCapture(0)", che consentirà loro di eseguire YOLOv8 sulla loro webcam. Calcolano il frame rate e l'altezza chiamando rispettivamente "cap.get(5)" e "cap.get(4)". Spiegano che vogliono salvare il video di output con i rilevamenti, quindi impostano il nome del file di output come "output.avi" utilizzando CB2.VideoWriter(). Passano il frame rate e l'altezza alla funzione, quindi impostano "modern" come uguale a "YOLOv8". Il presentatore quindi verifica se la sua webcam funziona correttamente chiamando "CV2.imshow('image', image)" e "CV2.waitKey(1)" sulla sua immagine.

  • 00:25:00 In questa sezione del Corso YOLOv8, il relatore testa la webcam e controlla se il video in uscita è salvato correttamente. Quindi procede all'esecuzione dei rilevamenti sul feed Web in tempo reale utilizzando il modello YOLOv8 e salva i risultati in una variabile denominata "risultati". Il codice esamina ciascuno dei singoli riquadri di delimitazione per visualizzare le prestazioni. Ogni riquadro di delimitazione ha quattro coordinate: X1, Y1, X2 e Y2, che vengono convertite in forma intera dai tensori per l'ulteriore elaborazione e creazione di riquadri di delimitazione attorno all'oggetto rilevato.

  • 00:30:00 In questa sezione del video, il presentatore illustra come l'output viene convertito da tensori a numeri interi e come viene creato un rettangolo attorno a ciascun oggetto rilevato utilizzando cv2.rectangle. Il colore e lo spessore del riquadro di delimitazione sono definiti insieme al punto iniziale e finale per ciascun oggetto rilevato. L'output dell'applicazione mostra che i riquadri di delimitazione vengono disegnati perfettamente attorno agli oggetti rilevati. Tuttavia, il relatore menziona la necessità di visualizzare anche l'etichetta e il punteggio di affidabilità per ciascun oggetto rilevato. Il punteggio di confidenza è attualmente visualizzato sotto forma di tensori, ma il relatore prevede di convertirlo in un numero intero utilizzando mat.c.

  • 00:35:00 In questa sezione del video tutorial, l'istruttore mostra agli spettatori come aggiungere punteggi di confidenza agli oggetti rilevati, convertirli in numeri interi ed etichettarli in base al loro ID di classe. L'ID classe è determinato dal tipo di oggetto, dove 0 indica una persona, 1 una bicicletta e 2 un'auto. L'istruttore dimostra anche come creare un rettangolo attorno all'etichetta e salvare i rilevamenti di output in un file denominato output.avi. Gli spettatori possono vedere i rilevamenti dal vivo fotogramma per fotogramma e l'istruttore mostra loro come interrompere il processo facendo clic sullo schermo. L'istruttore visualizza anche il file video di output e conferma che i risultati sono quelli previsti. Infine, l'istruttore annuncia che nel prossimo tutorial eseguiranno YOLOv8 su Windows e condivideranno i risultati.

  • 00:40:00 In questa sezione del corso YOLOv8, il creatore dimostra come eseguire il rilevamento di oggetti su un video di esempio utilizzando pesi pre-addestrati YOLOv8. L'obiettivo è rilevare sia le biciclette che le persone, che fanno parte del set di dati COCO. Il creatore mostra come eseguire lo script e reindirizzare la cartella alla cartella video designata, quindi rileva correttamente biciclette, persone e altri oggetti, come un semaforo. Il creatore dimostra quindi che il video di output con i rilevamenti viene salvato nella cartella selezionata, mostrando i riquadri di delimitazione attorno agli oggetti rilevati con etichette e punteggi di affidabilità. Viene creata la funzione di rilevamento video per contenere tutto il codice e viene creato un file denominato last app dot Pi.

  • 00:45:00 In questa sezione del video, il relatore illustra i passaggi necessari per integrare YOLOv8 con Flask per creare un'applicazione web per il rilevamento di oggetti in tempo reale. Il primo passaggio è l'installazione di Flask, che viene eseguita utilizzando pip install. Successivamente, l'oratore importa le librerie necessarie e inizializza Flask. Quindi, creano una funzione chiamata genera frame che accetta il percorso del file video di input e genera l'output con riquadri di delimitazione attorno agli oggetti rilevati. Infine, il relatore discute la codifica delle immagini come byte e la conversione di singoli fotogrammi in un video utilizzando la tastiera di eliminazione. Il risultato finale sono singoli fotogrammi con riquadri di delimitazione attorno all'oggetto rilevato, etichette e punteggi di affidabilità.

  • 00:50:00 In questa sezione, il creatore del video spiega come integrare YOLOv8 con Flask per creare un'applicazione web per il rilevamento di oggetti in tempo reale. Il video mostra la codifica dei fotogrammi e la conversione dell'immagine in byte, seguita dal looping sui singoli fotogrammi per il rilevamento e la successiva visualizzazione dei fotogrammi. Il video mostra la sostituzione dei frame visivi utilizzando il tipo di mezzo, mentre il tipo di contenuto viene utilizzato per la visualizzazione dei frame successivi. Il video include una dimostrazione in cui il file video viene passato come input per il rilevamento, risultando in riquadri di delimitazione attorno agli oggetti rilevati; in questo scenario persone, biciclette e semafori. Il video si conclude affermando che il prossimo tutorial coprirà il rilevamento sui feed live della webcam, creando così un'API Fly Fast.

  • 00:55:00 In questa sezione, il relatore dimostra come eseguire l'applicazione Web di rilevamento degli oggetti in tempo reale YOLOv8 su un feed live della webcam. Modificando il percorso video su 0 nello script, il programma può essere eseguito sul feed live della webcam. Un nuovo URL viene creato e collegato all'applicazione Flask, consentendo il rilevamento di oggetti in tempo reale del feed live della webcam. Il presentatore mostra che il programma può rilevare con precisione oggetti come una persona, una bicicletta e un semaforo dal feed live. Inoltre, il percorso del video viene riportato all'URL del video e il programma dimostra anche la sua capacità di rilevare oggetti in un video.

  • 01:00:00 In questa sezione, il video tutorial si concentra sulla creazione di una pagina Web HTML completa utilizzando HTML e CSS per il design del front-end e Flask per il back-end. L'app Web è composta da tre diverse pagine: una home page, una pagina video e una pagina feed webcam live. La home page presenta un'intestazione, un contenuto e un piè di pagina con risultati di esempio di diversi progetti. La pagina del video consente all'utente di caricare un video ed eseguire rilevamenti YOLOv8 su quel video. La pagina del feed della webcam dal vivo consente all'utente di eseguire rilevamenti sul feed della webcam dal vivo. Il video mostra anche il dot pile dell'app Flask e le tre pagine HTML.

  • 01:05:00 In questa sezione, il video tutorial spiega come consentire agli utenti di caricare un file video nel modello di rilevamento degli oggetti utilizzando il modulo Flask. Il tutorial utilizza validatori per garantire che l'utente carichi il file video nel formato corretto (MP4 o .avi). Il percorso del file video caricato viene memorizzato nella variabile file utilizzando il modulo di classe. Il tutorial introduce anche la funzione di generazione dei fotogrammi che viene utilizzata per rilevare gli oggetti nel file video di input. Il file video di input viene salvato nella cartella dei file statici e l'utente può inviare il file video per i rilevamenti facendo clic sul pulsante di invio.

  • 01:10:00 In questa sezione del corso YOLOv8, l'attenzione è rivolta alla funzione di rilevamento che abbiamo nel file video YOLO Dash. La funzione di riduzione video ci fornisce una direzione e con il rilevamento dell'oggetto, ci sono riquadri di delimitazione dell'output attorno agli oggetti rilevati con etichette e punteggi di confidenza. I frame correnti vengono quindi convertiti in byte, come richiesto dall'immagine o dai frame di input di Flask. La funzione web di generazione del frame viene chiamata quando vogliamo accedere o reindirizzare alla webcam sull'app, con un punto di sessione che rimuove i file video di input dall'archiviazione della sessione, consentendo il rilevamento su nuovi video o file di input, non il precedente quelli. Viene creata l'istanza del modulo del file di caricamento, con il percorso del file video salvato nella variabile di archiviazione della sessione. L'archiviazione della sessione viene successivamente cancellata per garantire che il rilevamento avvenga sui nuovi video, impedendo all'app di rilevare i video o i file di input precedenti.

  • 01:15:00 In questa sezione, il relatore spiega il codice ei file HTML utilizzati nel corso YOLOv8 per il rilevamento di oggetti in tempo reale in un'applicazione Web utilizzando Flask e una webcam/camera IP. L'oratore dimostra come hanno salvato la parte video nell'archiviazione della sessione e chiamato il percorso video per eseguire i rilevamenti nel video. Mostrano anche il file dot Pi dell'app Flask per il progetto. Il file HTML è costituito dalla lingua, dal titolo della pagina, dal corpo e dalle intestazioni con le relative proprietà, come il colore di sfondo, la famiglia di caratteri, il colore del testo, l'altezza e altri elementi. Inoltre, l'oratore spiega lo scopo del raggio del bordo nella creazione di una forma rettangolare arrotondata.

  • 01:20:00 In questa sezione, il relatore mostra le pagine principali dell'applicazione web che ha creato. Iniziano mostrando l'URL della prima pagina di Dash che indirizza l'utente alla pagina del feed video, dove può caricare un video e consentire il rilevamento di oggetti. Quindi mostrano la pagina UI.html, dove i rilevamenti avvengono sul feed live della webcam. Dimostrano anche la pagina dei risultati di esempio, mostrando tre immagini che hanno salvato e passato all'HTML. Infine, mostrano il piè di pagina che, se cliccato, reindirizza l'utente al proprio canale YouTube. Durante la dimostrazione, il relatore mostra lo stile CSS che ha utilizzato per ogni pagina.

  • 01:25:00 In questa sezione, il relatore mostra l'applicazione web per il rilevamento di oggetti in tempo reale utilizzando YOLOv8 e Flask con feed e video live della webcam. Lo stile CSS viene aggiunto alla pagina Web e l'oratore esegue il file cap della classe Python per eseguire i rilevamenti sul video e il feed della webcam dal vivo. L'utente può anche inserire un file video per ottenere i rilevamenti. I risultati sono impressionanti in quanto il modello YOLOv8 è in grado di rilevare oggetti come persone, biciclette, semafori, ecc. e creare riquadri di delimitazione con le etichette e il punteggio di affidabilità. Il relatore conclude dimostrando che anche i rilevamenti sul feed live della webcam funzionano in modo accurato.

  • 01:30:00 In questa sezione del video, il relatore mostra un'applicazione Web Flask in grado di rilevare oggetti sia nei feed video che live della webcam utilizzando YOLOv8. L'app ha una home page, una pagina video con la possibilità di eseguire rilevamenti su qualsiasi video in ingresso e una pagina di feed webcam live. Il presentatore passa quindi a dimostrare come YOLOv8 può essere utilizzato per il rilevamento dei dispositivi di protezione individuale (DPI) utilizzando un set di dati disponibile su Roboflow, che consiste in 3235 immagini con 7 classi diverse. Il presentatore rinomina le classi di conseguenza per riflettere gli oggetti effettivi rilevati da YOLOv8, quindi mostra le statistiche del set di dati, che include una distribuzione di classi non bilanciata. Il rapporto di divisione utilizzato per il set di dati è 70-20-10. Infine, il presentatore mostra come importare il modello YOLOv8 in un notebook Collab.

  • 01:35:00 In questa sezione del corso YOLOv8, l'istruttore spiega come importare le librerie richieste e verificare l'accesso alla GPU. La libreria del sistema operativo viene utilizzata per passare a file diversi e la libreria di immagini viene utilizzata per visualizzare le immagini di input/output nel taccuino di Google Colab. Il set di dati di rilevamento dei dati DPI viene quindi importato da Roboflow e scaricato nella cartella "set di dati" appena creata. Il modello YOLOv8 viene installato utilizzando pip install ultralytics e la sua funzionalità viene quindi verificata per l'installazione e il funzionamento utilizzando import ultralytics.

  • 01:40:00 In questa sezione del video, il presentatore mostra come scaricare e preparare il set di dati di rilevamento dei DPI per l'addestramento di un modello YOLOv8. Il set di dati è costituito da set di test e convalida, oltre a un file data.yml con nomi di classe per ciascun oggetto. Dopo aver scaricato e rinominato la cartella, il relatore utilizza l'interfaccia della riga di comando per l'implementazione locale dell'addestramento, della convalida e del test del modello. L'allenamento richiede circa tre ore per essere completato e il presentatore mostra i risultati dell'allenamento, incluso il miglior file dei pesi e il 90esimo lavoro degli ultimi pesi. Il modello è stato addestrato su sette diverse classi di oggetti DPI.

  • 01:45:00 In questa sezione vengono analizzati i risultati dell'addestramento del modello YOLOv8, inclusa la precisione media media e la matrice di confusione per ogni classe. Vengono esaminate anche le perdite di addestramento e convalida, con i valori di perdita che diminuiscono continuamente durante il processo di addestramento. Vengono mostrate anche le previsioni del modello sui batch di convalida, a indicare che il modello funziona correttamente. I migliori pesi per il modello vengono utilizzati per convalidare un ordine personalizzato, con i punteggi di precisione medi medi che rimangono forti. Infine, l'inferenza viene eseguita su un'immagine per rilevare l'etichetta utilizzando il modello personalizzato. Nel complesso, il modello YOLOv8 sembra funzionare bene nel rilevare varie classi nel rilevamento di oggetti in tempo reale.

  • 01:50:00 In questa sezione, il creatore del video dimostra come eseguire il modello YOLOv8 su un set di dati di prova di immagini e un video dimostrativo. I risultati del set di dati di test vengono salvati nel file "prediction" e il creatore visualizza l'output per le prime cinque immagini utilizzando il pacchetto "ipython.display". I risultati mostrano che il modello è in grado di rilevare correttamente oggetti come pannelli protettivi, giacche, guanti, maschere antipolvere, ancelle protettive ed elmetti. Il creatore quindi scarica un video dimostrativo e lo passa attraverso il modello, visualizzando l'output che mostra che il modello è in grado di rilevare giacche protettive e ancelle. Il creatore del video menziona anche il vantaggio di utilizzare una GPU per l'addestramento e la previsione in quanto richiede meno tempo.

  • 01:55:00 In questa sezione, il presentatore testa il modello YOLOv8 su video dimostrativi per vedere come si comporta. Il modello è in grado di rilevare i caschi e le giacche protettive, ma non i guanti. Il relatore scarica i video dimostrativi di output e mostra come si comporta il modello su ciascuno di essi. Il modello è in grado di rilevare le ancelle e le giacche protettive in tutti i video dimostrativi testati. Il relatore scarica quindi il miglior file di pesi per il modello addestrato sui dispositivi di protezione individuale e discute come integrarlo con Flask per un'applicazione web di rilevamento di oggetti in tempo reale.

  • 02:00:00 In questa sezione, il relatore discute le modifiche apportate al codice nell'applicazione Web che utilizza il modello Yellow V8 addestrato su un set di dati di dispositivi di protezione individuale (DPI). Il set di dati DPI ha sette diverse classi e i loro nomi sono elencati. Il miglior file dei pesi è stato rinominato in ppe.pt dal set di dati Coco, che consiste in 80 classi diverse. Il relatore ha aggiunto una funzionalità per assegnare colori diversi al riquadro di delimitazione e al rettangolo dell'etichetta in base al nome della classe. Il relatore ha fissato un limite per il punteggio di affidabilità e ha affermato che il riquadro di delimitazione e il rettangolo verranno visualizzati solo se il punteggio è superiore a 0,5. I file Flask app.py e HTML rimangono gli stessi. Infine, il presentatore mostra i risultati del rilevamento video sul set di dati DPI e una webcam. L'applicazione è in grado di rilevare correttamente gli articoli DPI nel video.

  • 02:05:00 In questa sezione, il relatore dimostra le capacità di rilevamento di successo del modello YOLOv8 in tempo reale utilizzando un feed live della webcam. Il modello è in grado di rilevare con precisione una persona che indossa un casco protettivo e una maschera antipolvere, scontando l'assenza di guanti e schermi. I risultati sono ritenuti soddisfacenti e segnano la fine del corso.
 

Tracciamento di oggetti in tempo reale utilizzando YOLOv8 e DeepSORT | Conteggio veicoli (Veicoli in entrata e in uscita)



Tracciamento di oggetti in tempo reale utilizzando YOLOv8 e DeepSORT | Conteggio veicoli (Veicoli in entrata e in uscita)

Il video mostra l'implementazione del tracciamento di oggetti in tempo reale utilizzando YOLOv8 e DeepSORT per contare il numero di veicoli che entrano ed escono da una strada autostradale. Il relatore fornisce una guida dettagliata, a partire dalla clonazione del repository GitHub, dall'installazione dei pacchetti richiesti, dall'impostazione della directory e dall'esame dello script di tracciamento. L'esercitazione copre l'uso di code a doppia estremità, pre-elaborazione, regressione non massima e funzione Deep SORT per generare ID univoci e determinare i nomi delle classi. Il presentatore spiega anche come aggiungere una funzione di conteggio dei veicoli utilizzando una linea sullo schermo e ogni volta che la scia di un veicolo si interseca con questa linea, il conteggio aumenta. L'interfaccia utente viene impostata utilizzando una funzione specifica. Infine, il presentatore mostra come l'output corrente dello script può rilevare le intersezioni con la linea e contare i veicoli che entrano ed escono dall'area.

  • La sezione 00:00:00 del video mostra una dimostrazione dell'implementazione del tracciamento degli oggetti utilizzando il deep sort in YOLO V8. Il tutorial riguarderà la creazione di un'applicazione per contare il numero di veicoli che entrano ed escono da una strada autostradale. Il presentatore fornisce una guida dettagliata da seguire utilizzando PyCharm IDE e spiega ogni passaggio in dettaglio. Il primo passo è clonare il repository GitHub e installare i pacchetti richiesti. Il video include anche una sezione sull'impostazione della directory e sull'esame dello script di tracciamento.

  • 00:05:00 In questa sezione del video, il relatore spiega come impostare il file tracking dot e scaricare e posizionare i file DeepSORT da Google Drive nella cartella YOLOv8. I file DeepSORT sono troppo grandi per essere caricati su GitHub, quindi devono essere scaricati dal link di Google Drive fornito. Il video mostra come estrarre i file scaricati e metterli nella cartella appropriata. L'oratore mostra anche come scaricare un video di esempio ed eseguire lo script. L'esecuzione dello script potrebbe richiedere del tempo poiché lo stanno testando sulla CPU, ma l'oratore continua spiegando il codice in modo più dettagliato durante l'esecuzione dello script.

  • 00:10:00 In questa sezione, l'oratore spiega l'uso di una coda doppia (DQ) e perché è preferibile a un elenco quando si eseguono contemporaneamente operazioni di inserimento o pop. L'oratore utilizza DQ per aggiungere valori sotto forma di coordinate centrali in basso del riquadro di delimitazione e spiega come i valori vengono rimossi una volta che l'auto scompare dall'inquadratura. La lunghezza massima del DQ è definita come 64, e una volta raggiunto tale valore, non accetta ulteriori valori. L'altoparlante definisce anche la tavolozza dei colori e l'interfaccia utente per creare un bordo elegante attorno agli oggetti rilevati.

  • 00:15:00 In questa sezione, il video scompone il codice per la creazione di un'interfaccia utente (UI) con un rettangolo arrotondato e un'etichetta di testo, nonché il modo in cui il programma aggiunge gli oggetti rilevati a una coda a doppia estremità per generare sentieri. Il codice include anche la pre-elaborazione e la regressione non massima per ridimensionare i frame ed eseguire rilevamenti. La funzione Deep SORT viene chiamata per assegnare ID univoci e determinare i nomi delle classi, mentre set.modern.names aiuta a recuperare informazioni dal set di dati COCO e a generare riquadri di delimitazione.

  • 00:20:00 In questa sezione, l'oratore spiega il proprio codice per il rilevamento di oggetti utilizzando YOLOv8 e DeepSORT, fornendo una panoramica dello script e di come funziona. Dimostrano l'output corrente dello script e notano che stanno utilizzando un modello nano, quindi il rilevamento degli oggetti non è ancora perfetto. Il relatore menziona anche che creeranno una serie di conferenze sulla visione artificiale per Europa e incoraggia gli spettatori a iscriversi per più contenuti. Infine, mostrano come il loro script può rilevare quando un sentiero si interseca con una linea, indicando quando un oggetto è passato e consentendo l'implementazione del conteggio dei veicoli per entrare e uscire.

  • 00:25:00 In questa sezione, il relatore spiega come la funzione di conteggio dei veicoli è stata aggiunta al sistema di tracciamento degli oggetti in tempo reale utilizzando YOLOv8 e DeepSORT. Il sistema utilizza una linea sullo schermo e ogni volta che la scia di un veicolo si interseca con questa linea, il conteggio aumenta. Il conteggio può aumentare se un veicolo sta entrando o uscendo dall'area, a seconda della direzione di movimento del veicolo. Il presentatore mostra anche come viene impostata l'interfaccia utente tramite una particolare funzione.
 

Segmentazione e tracciamento di oggetti in tempo reale utilizzando YOLOv8 | Conteggio veicoli (in entrata e in uscita)



Segmentazione e tracciamento di oggetti in tempo reale utilizzando YOLOv8 | Conteggio veicoli (in entrata e in uscita)

Questo tutorial video si concentra sull'implementazione della segmentazione e del tracciamento degli oggetti in tempo reale utilizzando YOLOv8 e l'algoritmo di ordinamento profondo. In particolare, dimostra come contare e distinguere tra i diversi sottotipi di veicoli che entrano ed escono da una determinata area. Il tutorial copre vari aspetti, tra cui la stima della velocità, la misurazione della direzione e la segmentazione e il tracciamento accurati di ogni veicolo con ID e percorsi. Il presentatore fornisce anche i passaggi necessari per implementarlo su vari IDE e offre il codice finale per i propri sostenitori di Patreon.

  • 00:00:00 In questa sezione del video, il presentatore spiega come implementare la segmentazione degli oggetti con tracciamento utilizzando YOLOv8 e l'algoritmo di ordinamento profondo. Il video mostra la segmentazione e il tracciamento dei veicoli, incluso il conteggio del numero di veicoli che entrano ed escono, nonché i tipi di veicoli. L'implementazione include anche il calcolo della velocità dei veicoli, l'assegnazione di un ID univoco a ciascun veicolo e la definizione dei percorsi. Il relatore fornisce i passaggi necessari per implementarlo su vari IDE, tra cui Anaconda Navigator, PyCharm, Spider e Visual Studio. Le dipendenze richieste, come le librerie, devono essere installate per evitare errori durante l'esecuzione dello script predict.5.

  • 00:05:00 In questa sezione, il tutorial video si concentra sull'implementazione della segmentazione e del tracciamento utilizzando YOLOv8 e deep sort. I file di ordinamento profondo vengono scaricati da Google Drive e un video di esempio viene utilizzato per il test. Lo script viene modificato per implementare il conteggio dei veicoli in entrata e in uscita, con un dizionario utilizzato per memorizzare il conteggio dei veicoli per sottotipo. L'object counter one viene utilizzato per memorizzare il numero di veicoli in uscita per sottotipo, mentre il check counter dictionary viene utilizzato per memorizzare il numero di veicoli in entrata. Lo script modificato tiene traccia e conta i veicoli in base al loro sottotipo e se entrano o escono dal telaio.

  • 00:10:00 In questa sezione, il video illustra come creare un sistema di conteggio dei veicoli utilizzando YOLOv8, con un contatore di oggetti in grado di distinguere tra sottotipi di veicoli come automobili, camion di grandi dimensioni e motociclette che entrano ed escono da una determinata area. Il video spiega l'uso di una funzione di stima della velocità e come creare una linea che, quando viene superata da un veicolo, incrementa il contatore. Inoltre, il video definisce il PPM costante, o parametro dell'immagine, che aiuta a misurare il numero di pixel in un'immagine.

  • 00:15:00 In questa sezione, il relatore discute il concetto di misurazione dinamica della distanza basata sulla distanza tra un oggetto e la telecamera. Spiegano che ciò può essere ottenuto utilizzando una formula che prevede che la distanza in metri sia uguale alla distanza in pixel divisa per PPM (pixel per metro) moltiplicata per una costante di 3,6 divisa per il frame rate al secondo. L'oratore procede quindi a scrivere una funzione per calcolare l'angolo e restituire la velocità in base alla distanza e al tempo. Creano anche altre due funzioni - set_d e CCW - e scrivono una funzione get_direction per calcolare la direzione di un oggetto in base all'asse y.

  • 00:20:00 In questa sezione del video, il relatore esamina il proprio codice per la segmentazione e il tracciamento degli oggetti in tempo reale utilizzando YOLOv8. Apportano modifiche allo script, inclusa l'aggiunta di una struttura di direzione e il calcolo del codice rimanente. Il relatore spiega anche come calcolare la velocità dell'oggetto e aggiungerla all'elenco ID. Quindi copiano e incollano un codice di intersezione e continuano ad apportare modifiche per correggere gli errori nel codice.

  • 00:25:00 In questa sezione del video, il presentatore aggiunge un codice contatore per contare il numero di veicoli in entrata e in uscita. Il codice del contatore visualizza il conteggio totale dei veicoli e il conteggio parziale, che include il numero di auto, camion e motocicli in ingresso. Il presentatore suggerisce anche di aggiungere un display per il numero di veicoli in uscita. Si verifica un errore nella funzione di disegno delle caselle e il relatore lo corregge dichiarando una variabile globale per il conteggio in avanti e il conto alla rovescia. Lo script viene eseguito correttamente e il video dimostrativo di output mostra la stima della velocità per ogni veicolo e il conteggio totale dei veicoli con i sottoconteggi per ogni tipo di veicolo entrato.

  • 00:30:00 In questa sezione, il relatore discute i risultati della segmentazione e del tracciamento degli oggetti in tempo reale utilizzando YOLOv8 per il conteggio dei veicoli. Hanno ottenuto risultati precisi e sono persino in grado di stimare la velocità di ciascun veicolo, insieme all'ID di tracciamento e ai percorsi. Inoltre, il rilevamento e la segmentazione di ciascun veicolo sono stati eseguiti in modo accurato e viene anche menzionato il conteggio totale dei veicoli. Hanno reso questo codice disponibile esclusivamente ai loro sostenitori di Patreon che avranno accesso a tutto il codice e ai progetti che condividono. Infine, invitano gli spettatori a testare i video dimostrativi, implementare il codice sui loro siti o iscriversi al loro abbonamento Patreon.
Motivazione: