Nelle aziende di beni di consumo, è importante sviluppare modelli di previsione della stabilità per prevedere la durata di conservazione del prodotto o il rischio di cedimento della stabilità a lungo termine nelle fasi iniziali dello sviluppo del prodotto. La fotografia time-lapse (TLP) si è affermata come strumento principale per misurare la stabilità fisica dei prodotti di consumo liquidi.
In precedenza, era stato sviluppato un modello di intelligenza artificiale/deep learning utilizzando Python per prevedere le modalità di guasto della stabilità fisica a partire da immagini TLP. Grazie alla disponibilità del nuovo componente aggiuntivo Torch Deep Learning per JMP Pro, possiamo sviluppare rapidamente un modello di intelligenza artificiale/deep learning per rilevare guasti della stabilità fisica a partire da immagini, senza alcuna programmazione. In questa presentazione, condividiamo l'applicazione del componente aggiuntivo a un problema di classificazione di immagini per rilevare guasti della stabilità fisica di prodotti di consumo formulati.
Mi chiamo Fangyi Luo. Sono uno statistico e data scientist presso Procter & Gamble. Oggi presenterò un poster con Russ Wolfinger di JMP. Lavoro in P&G da circa 28 anni e attualmente mi occupo di accelerare l'innovazione di prodotti e packaging utilizzando metodi statistici e di data science. Russ, vuoi presentarti brevemente?
Sì. Grazie, Fangyi. Sono entusiasta di lavorare con te a questo progetto. Come sai, l'apprendimento automatico basato sull'intelligenza artificiale è un argomento molto attuale e adoriamo applicazioni pratiche come questa, che credo stiano davvero facendo la differenza ora, e la possibilità di utilizzare il nuovo componente aggiuntivo Torch per la classificazione delle immagini. Penso che sia molto potente e pratico. Sarà una bella storia quella che abbiamo oggi per condividere come sei riuscito a fare progressi. So che sono personalmente molto entusiasta di vederlo andare avanti. Questo progetto è in lavorazione da diversi anni e ora sta davvero iniziando a guadagnare terreno.
Grazie, Russ. Oggi condivideremo un problema di classificazione delle immagini utilizzando il nuovo componente aggiuntivo JMP Torch Deep Learning. Per prima cosa, parlerò del contesto del problema. In Procter & Gamble produciamo molti prodotti di consumo, alcuni dei quali sono prodotti liquidi, come shampoo, balsamo, detersivo liquido, detersivo per i piatti e così via.
Prima di lanciare un prodotto sul mercato, dobbiamo effettuare numerosi test sul prototipo. Utilizziamo una tecnica fotografica chiamata time-lapse per monitorare le immagini del prototipo esposto a diverse temperature nel tempo. Qui a destra, potete vedere alcuni dei problemi di stabilità di alcuni prototipi liquidi formulati, come la separazione di fase e la cremosità. C'è un sottile strato sulla superficie. Si tratta di fluttuazione, fessurazione e cristallizzazione.
Poiché abbiamo testato migliaia di prototipi di prodotti formulati, utilizziamo questa fotocamera digitale per tracciare tutti i prototipi nel tempo. Abbiamo catturato milioni di immagini. Una classificazione manuale di queste immagini in diverse modalità di guasto era impossibile. Qualche anno fa, abbiamo formato un team presso PNG e abbiamo sviluppato un algoritmo di Deep Learning per classificare queste immagini in modalità di guasto stabili e con diverse modalità di guasto basate sulla stabilità fisica, utilizzando un modello di Deep Learning sviluppato da Python.
Con la nuova disponibilità di JMP Pro Torch Deep Learning, credo che vorremo provare ad applicare questa funzionalità, aggiungendola al nostro problema di classificazione delle immagini.
Abbiamo provato questa classificazione delle immagini sul nostro problema utilizzando sia la classificazione binaria, che classifica le nostre immagini in classi stabili e instabili. Abbiamo anche provato a classificare le nostre immagini in più classi, ad esempio in base a modalità di guasto stabili e diverse modalità di guasto per la stabilità fisica. Abbiamo testato il componente aggiuntivo di Deep Learning più avanzato su questi due tipi di problemi di classificazione. Abbiamo incluso circa 3.500 immagini nel set di addestramento e oltre 500 immagini nel set di test. Lasciate che vi mostri alcuni dei risultati.
Quando abbiamo provato questo componente aggiuntivo di Torch Deep Learning sulla classificazione binaria, inizialmente ho utilizzato le impostazioni predefinite dei parametri di questo componente aggiuntivo di Torch Deep Learning e ho scelto il modello di immagine, chiamato ResNet-34. Molto rapidamente, sono riuscito a ottenere un modello molto buono con un'accuratezza di convalida delle previsioni del 95%, in modo molto rapido e semplice. Al centro, potete vedere un esempio del grafico della cronologia di training, e vogliamo vedere come la diminuzione della perdita nel numero di epoche aumenti, così come l'aumento delle iterazioni di training. Perché il nostro obiettivo è sviluppare un modello che raggiunga un'accuratezza di convalida del 95%. Questo modello iniziale era molto buono, ma vogliamo vedere se possiamo continuare a migliorare l'accuratezza di convalida del nostro modello.
Quello che ho fatto è stato provare a modificare manualmente alcuni iperparametri. Ho provato a utilizzare un modello di immagine più complesso come ResNet-50 e anche a ridurre il tasso di apprendimento e aumentare il numero di epoche. Dopo un paio di tentativi, sono riuscito a ottenere rapidamente un modello di classificazione binaria con una precisione di convalida del 99%. Ero molto entusiasta di vedere questi risultati. Poi, per la classificazione multi-classe utilizzando il componente aggiuntivo JMP Torch Deep Learning, questo richiede un po' più di tempo e inizialmente non sono riuscito a ottenere un modello valido.
Peter Hirsch di JMP mi ha detto che avete un componente aggiuntivo Torch Companion, in grado di eseguire l'ottimizzazione degli iperparametri, per il componente aggiuntivo Torch Deep Learning. Ho scaricato questo componente aggiuntivo, come potete vedere, allo stesso indirizzo: marketplace.jmp.com. Potete scaricare sia il componente aggiuntivo Torch Deep Learning sia il componente aggiuntivo Torch Companion. Ho provato questo componente aggiuntivo ed è stato in grado di progettare un progetto sperimentale degli iperparametri.
Ne ho usato 20. Ha generato 20 combinazioni di iperparametri, con diversi numeri di epoche, velocità di apprendimento, dimensioni del batch, numero di layer, dimensioni del layer e anche dimensioni dell'immagine. Ho provato questo componente aggiuntivo Torch Companion e il miglior modello che ho potuto ottenere per questa classificazione multiclasse aveva una precisione di convalida di circa il 78%. Il nostro obiettivo è ottenere un modello con una precisione di convalida di circa il 95% e superiore, quindi questo modello non è sufficiente. Ho quindi provato a ottimizzare manualmente il modello, utilizzando diversi iperparametri. Ho provato diversi modelli di immagine. Ho provato ResNet-50. Ho anche provato ad aumentare il numero di epoche, diminuire la velocità di apprendimento, modificare la dimensione del batch o modificare la dimensione dell'immagine.
Per la classificazione multi-classe, l'esecuzione richiede molto più tempo. Ecco uno screenshot del modello ancora in esecuzione dopo 1 giorno. A volte, mi dice che la mia GPU NVIDIA ha esaurito la memoria, ma ho continuato a provare e, dopo diversi tentativi, sono riuscito a ottenere un ottimo modello di deep learning per classificare le immagini in più classi, come la modalità stabile e diverse categorie di modalità sfumata. La precisione di convalida è stata del 95%. Sono stato molto soddisfatto dei risultati. Inoltre, Russ mi ha suggerito di ridurre la dimensione del batch o il numero di epoche per ridurre la memoria. Questo è parte di ciò che abbiamo imparato, vediamo.
Torniamo indietro. Come puoi vedere, è molto facile e veloce sviluppare il modello di classificazione binaria utilizzando il componente aggiuntivo Torch Deep Learning, e possiamo usare il componente aggiuntivo Torch Companion per ottimizzare gli iperparametri. Inoltre, possiamo sviluppare un buon modello per un problema di classificazione multi-classe ottimizzando manualmente gli iperparametri. Russ, hai qualcosa da aggiungere?
Sì, che bella progressione, Fangyi, e so che abbiamo parecchi clienti che stanno seguendo questa strada. Questa non è la tipica analisi rapida a cui siamo abituati in JMP, semplicemente perché i dati sono così tanti e i calcoli sono davvero intensi, ed è fantastico che tu possa usare la tua GPU NVIDIA. Ti ricordi per caso quanta memoria c'era su quella scheda GPU, Fangyi?
Penso che siano più di 200, 256 gigabyte.
Di solito, le GPU sono da 12 o 16 gigabyte. Parlo della memoria della GPU, non della CPU. Dovremo guardare, ma so che NVIDIA ha così tante schede diverse. È difficile dirlo. Oggigiorno riceviamo molte richieste su quale scheda dovrei prendere, e la cosa positiva è che NVIDIA, dato che sta andando così bene, continua a proporre schede sempre migliori a un prezzo inferiore. Ho sentito dire che ne stanno per lanciare una nuova. Sarà ancora più potente a un prezzo inferiore, quindi ci aspettiamo che i tempi di esecuzione diminuiscano. È tutto in funzione, soprattutto se si elaborano immagini più grandi.
Ad esempio, credo che alla fine siate passati da 2 a 4, che è una dimensione standard. È comunque una dimensione piuttosto buona, e potete iniziare a utilizzare davvero le schede, e le cose diventano costose. Comunque, è per questo che le abbiamo. È davvero bello che siate in grado di sfruttare quella potenza di calcolo di fascia alta, con un po' di pazienza e di messa a punto. Grazie a Peter Hirsch e Scott Allen per quel componente aggiuntivo extra, che conosco in molti. È semplicemente un componente aggiuntivo davvero bello da aggiungere a Torch stesso, che vi permette di ottenere modelli migliori un po' più velocemente e di automatizzare alcune di queste cose.
Questo è il punto, ovviamente, quei tempi di esecuzione lunghissimi, a volte si vuole lasciarli andare durante la notte, per poi tornare il giorno dopo e vedere. Per me, penso che tu abbia davvero fatto i passi giusti in termini di utilizzo dell'automazione, ma poi un po' di messa a punto manuale e di tentativi, credo sia consigliabile. Non solo è spesso il modo per arrivare al modello migliore, ma aiuta anche a saperne di più sul problema, solo per vedere quali fattori stanno davvero guidando i miglioramenti e quali no. Quello che ho notato è che spesso non si riesce proprio a capirlo. A volte uno di quei modelli di immagine sembra semplicemente catturare la natura delle immagini e spesso può fare molto meglio di altri.
A volte sono tutti più o meno uguali, e allora dipende più dalle dimensioni dell'immagine o dal regime di allenamento. Fondamentalmente, è necessario eseguire alcuni esperimenti solo per provare, ed è così che l'abbiamo impostato. È importante, sono contento che tu abbia mostrato la curva di perdita di allenamento, perché è importante tenerla d'occhio per assicurarsi che scenda e poi si appiattisca. Questa è una bella curva. Fai attenzione, però, perché i due casi in cui non vorresti usarla sarebbero uno in cui scende e poi risale, soprattutto la curva continua.
Ciò indicherebbe un overfitting, che a volte può verificarsi, e un altro caso sarebbe se il valore continuasse a scendere costantemente, di solito è un caso in cui probabilmente si vorrebbero eseguire più epoche fino a ottenere una maggiore convergenza, ma queste sono tutte piccole cose, piccoli trucchi che si imparano man mano che si procede. Per me, è davvero divertente perché si tratta di un'interfaccia senza codice, che permette di entrare rapidamente nella modellazione senza impantanarsi nella scrittura del codice Python e doverlo modificare ogni volta che si vuole provare qualcosa di leggermente diverso. Cavolo, questa è davvero un'applicazione fantastica, Fangyi. Congratulazioni. Sono davvero felice di vederla.
Grazie, Russ. Per concludere, ecco alcuni riferimenti. Questo è un link alla documentazione del componente aggiuntivo JMP Torch Deep Learning e un link al componente aggiuntivo Torch Companion. Inoltre, ho presentato un problema simile quando abbiamo sviluppato un modello in Python alla conferenza statistica ASA, IMS e Spring Research Conference un paio di anni fa.
Inoltre, vorrei ringraziare il mio team P&G per aver lavorato insieme su questo problema in passato. Inoltre, come ha detto Russ, vogliamo ringraziare Peter Hirsch per aver condiviso il suo componente aggiuntivo Storage Companion. Questo è tutto. Quindi, se avete domande, sapete chi contattare. Potete contattare Russ o me. È stato davvero divertente imparare a usare questo componente aggiuntivo JMP Torch Deep Learning da Russ e penso che potremmo avere molte altre applicazioni in P&G. Grazie.
Ottimo lavoro, Fangyi. Grazie.