Intelligenza Artificiale: le nuove frontiere – resoconto dell’evento

Grazie di cuore ai numerosi partecipanti, a tutti gli interventi e tutte le stupende domande che abbiamo ricevuto all’evento che ha avuto un grandissimo successo ed una partecipazione oltre ogni aspettativa. Grazie anche ai miei fantastici colleghi di Torino e Milano che hanno partecipato a sorpresa rendendo la mia esperienza ancora più bella. Grazie a tutto il gruppo Gosub 42 per lo straordinario supporto in tutte le fasi ed a Stefania Oliviero e Marco Piva come co-relatori e grandi sostenitori dell’iniziativa. Grazie all’Amministrazione Comunale per il patrocinio, per aver accettato il nostro patto di collaborazione e per l’apertura del Maker Space all’interno degli spazi della biblioteca.

Durante la conferenza, dopo qualche sondaggio rompighiaccio ai partecipanti per focalizzare la mente sul tema, abbiamo parlato della storia dell’intelligenza artificiale, con qualche accenno a letteratura e cinema di fantascienza, della rivoluzione introdotta dal paradigma Machine Learning, abbiamo mostrato varie tipologie di deep fake e approfondito la conoscenza con ChatGPT e Midjourney. Per ChatGPT abbiamo anche parlato delle allucinazioni, prompt injection e dei rilevatori di testi prodotti da ChatGPT e della loro affidabilità. Al termine dell’evento ci sono state delle bellissime domande e delle interessanti riflessioni da parte degli intervenuti sui possibili scenari futuri.

Seguono solo alcune delle immagini inedite realizzate con Midjourney usate per la preparazione delle slide o per la promozione dell’evento:

Dai partecipanti mi è stato chiesto di porre questa bellissima domanda a ChatGPT-4:

“dimmi quali professioni saranno meno intaccate dallo sviluppo dell’intelligenza artificiale”

Risposta GPT-4:

L’intelligenza artificiale (IA) sta rivoluzionando molti settori e cambiando il panorama del mondo del lavoro. Tuttavia, ci sono alcune professioni che dovrebbero essere meno intaccate dall’IA, almeno nel breve e medio termine. Queste professioni tendono ad avere un forte elemento di creatività, empatia, interazione umana o competenze manuali che sono difficili da replicare con l’IA. Ecco alcune professioni che dovrebbero essere meno intaccate:

Professioni sanitarie: Medici, infermieri e terapisti sono professioni che richiedono un’alta competenza umana, empatia e abilità nella presa di decisioni complesse. L’IA può aiutare in termini di diagnosi e raccomandazioni, ma l’interazione umana e la capacità di valutare il contesto sono difficili da sostituire.

Educazione: Insegnanti e formatori sono professioni che richiedono un’alta capacità di interazione umana, empatia e adattamento alle diverse esigenze degli studenti. L’IA può fornire strumenti di supporto, ma la relazione tra insegnante e studente e l’adattamento dell’insegnamento alle esigenze individuali sono difficili da replicare.

Professioni artistiche e creative: Artisti, musicisti, scrittori e designer sono professioni in cui la creatività e l’espressione umana sono elementi fondamentali. Anche se l’IA può produrre arte e musica, la componente umana dell’arte e della creatività è difficile da replicare.

Professioni sociali: Psicologi, consulenti, lavoratori sociali e altre professioni che si occupano di aiutare le persone a gestire problemi emotivi o relazionali richiedono un’alta capacità di empatia e comprensione delle sfumature umane. L’IA può fornire strumenti di supporto, ma la relazione terapeutica e la capacità di comprendere le emozioni umane sono difficili da replicare.

Professioni legate all’artigianato: Falegnami, muratori, sarti e altre professioni che richiedono abilità manuali e competenze specifiche saranno meno colpite dall’IA, in quanto il lavoro manuale e l’abilità richiesta sono difficili da automatizzare completamente.

È importante notare che, anche se queste professioni potrebbero essere meno intaccate dall’IA, ciò non significa che non subiranno alcun cambiamento. L’IA e altre tecnologie continueranno a evolversi e potrebbero influenzare queste professioni in modi diversi, come migliorando la produttività o fornendo nuovi strumenti e metodi di lavoro.

I’avventuroso viaggio all’interno di una mente artificiale generativa di una tazzina di caffè

Nel corso dell’evento abbiamo mostrato la stessa immagine di una tazzina di caffè davanti ad una finestra, reinterpretata moltissime volte tramite Midjorney per ambientazione e stile.

Abbiamo anche mostrato come ChatGPT-4 è in grado di immedesimarsi in personaggi storici chiedendo:

“potresti spiegarmi come funziona un forno a microonde come se tu fossi dante alighieri”

Risposta GPT-4:

Nel profondo dell’oscuro regno di cucina,
Ove l’uomo si adopra per placar la fame,
Risiede un nobile arnese di rara virtute:
Il forno a microonde, di calore diletto.

Questo mostro d’acciaio, di vetro e circuiti,
Genera onde invisibili, rapide e potenti,
Che di nome portano “microonde”, vere arpie
Che l’acqua agitano, nel cibo celata.

Le molecole d’acqua, da questo incantesimo,
S’avvampano e danzan come anime nel fuoco,
E per tal movimento il calore si scatena.


Il cibo, assediato da queste oscure forze,
Si scalda e si cuoce, mentre il tempo scorre,
E ben presto è pronto per l’ingordo palato.


Ma fa’ attenzione, o amico, a non restar trafitto
Da questa magia, ché potria nuocerti assai.
Usa saviamente il forno, con rispetto e cautela,
E i deliziosi frutti della sua opera gusterai.

Abbiamo anche chiesto a ChatGPT-4 di riformulare la risposta verso un destinatario preciso ottenendo risultati sorprendenti.

“potresti spiegarmelo come se io fossi un bambino di 7 anni”

Risposta GPT-4:

Immagina che il forno a microonde sia una scatola magica che può riscaldare il tuo cibo preferito in pochi minuti! All’interno di questa scatola, c’è un componente speciale chiamato “magnetrone” che crea delle piccole onde invisibili, come quando lanci un sasso nell’acqua e vedi le onde allontanarsi dal centro.

Queste onde invisibili si chiamano “microonde” e si muovono velocemente all’interno della scatola magica, facendo muovere e ballare le particelle d’acqua nel cibo. Quando le particelle d’acqua si muovono e ballano, si scontrano tra di loro e si riscaldano, e questo fa sì che il tuo cibo si scaldi velocemente!

Però, devi stare attento a non mettere oggetti di metallo, come forchette o fogli di alluminio, nella scatola magica, perché le microonde non vanno d’accordo con i metalli e potrebbero creare scintille e fumo.

Ecco, adesso sai come funziona il forno a microonde! È un aiuto fantastico per scaldare il tuo cibo velocemente, ma ricorda di chiedere sempre aiuto a un adulto quando lo usi, così starai al sicuro.

Alcuni volti fake realizzati tramite un modello generativo

Queste persone non sono reali. I loro volti fake sono stati generati da un modello generativo.

Altre immagini realizzate con Midjourney nel corso dell’evento o della promozione

Abbiamo richiesto di a Midjourney degli strumenti musicali del futuro che potrebbero essere usati nel 2100. Riuscite ad immaginare il loro suono?

Invito al Makerspace

Siete tutti invitati ai nostri simposi tecnologici che si svolgeranno ogni secondo giovedì del mese presso il Makerspace situato all’interno della Biblioteca Comunale di Gorgonzola.

Share

Invito all’evento Intelligenza Artificiale: Le nuove Frontiere

Vi invito a partecipare all’evento in cui sarò relatore insieme a Stefania Oliviero e che, con il gruppo GOSUB42, stiamo organizzando presso la Sala Consiliare del Comune di Gorgonzola il giorno 14 aprile 2023 alle ore 21:00.

immagine realizzata dalla collaborazione di ChatGPT con Midjourney

Immaginate un futuro in cui le macchine possano imparare, comprendere e risolvere problemi in modo simile agli esseri umani. Un futuro in cui l’intelligenza artificiale non sia soltanto un concetto astratto, ma un elemento fondamentale della nostra vita quotidiana, con un impatto positivo su salute, lavoro e svago.

Nel corso di questo evento, in modo divertente ed accessibile a tutti (anche ai non tecnici), ci proietteremo verso questo futuro esplorando alcune delle applicazioni più innovative dell’Intelligenza Artificiale tra cui: ChatGPT v4 e Midjorney. Siete tutti invitati!

MAGGIORI INFORMAZIONI ED AGGIORNAMENTI SULL’EVENTO FB

Segue l’invito generato dalla cooperazione di più intelligenze artificiali:

Share

Modelli generativi basati su AI: rivoluzioniamo tutto con Midjourney

La grafica di questa home page è stata rivista attraverso l’uso di Midjourney. Si tratta di un generatore di immagini che sfrutta un modello generativo basato su Intelligenza Artificiale. Dopo poche di ore di utilizzo ho ottenuto risultati straordinari. Le immagini di questo articolo sono state sintetizzate attraverso questo strumento.

immagine generata tramite Midjourney
immagine generata tramite Midjourney
Share

Viaggio alla frontiera dell’AI: ChatGPT 3

Incontriano ChatGPT 3 attraverso un’intervista esclusiva che ho realizzato per i lettori del magazine indipendente B-HOP. Il modello genativo, instancabile alchimista di parole e conoscenza, portato ai confini delle sue potenzialità, risponde brillantemente e con eleganza ad ogni domanda come mai nessuna macchina è stata in grado di fare nella storia dell’umanità. Le illustrazioni a corredo sono state realizzate tramite Deep Dream Generator.

Leggi la mia intervista esclusiva a ChatGPT sul Magazine B-HOP

Ritratto di ChatGPT che ho realizzato tramite AI con Deep Dream Generator
Share

Face Detection e Face Recognition in Python – Test su Matrix Reloaded e Game of Thrones

Uno dei post che ha generato il maggior interesse in questo blog è certamente quello dedicato alla face detection tramite OpenCV. Riprendiamo questo tema dopo molto tempo parlando degli algoritmi alla frontiera per il Face Detection e Face Recognition. Lo scopo del post è fare il punto sullo stato dell’arte ed indirizzare verso mouduli open source liberamente e facilmente utilizzabili nelle applicazioni reali.

Matrix Reloaded – The Architect

La Face Detection è l’elaborazione che ha lo scopo di rilevare la presenza di volti umani all’interno di un’immagine digitale; nel precedente articolo è stata affrontata solo questa tematica attraverso algoritmi tradizionali ma consolidati.

Gli algoritmi di Face Detection si sono evoluti nel tempo migliorando l’accuratezza della rilevazione anche attraverso l’uso di reti neurali convoluzionarie (CNN) o reti Deep Learning opportunamente strutturate ed addestrate; tale processamento sfrutta massivamente l’eventuale presenza di moderne GPU o NPU per aumentarne l’efficienza ed il parallelismo. Nel nostro caso specifico ci siamo limitati al riconoscimento di volti umani in posizione frontale.

Matrix Reloaded Architect – Face Detection Benchmark MTCNN

Il benchmark estremo che ho utilizzato per mettere alla prova i moduli python individuati, è un breve video tratto dal dialogo tra Neo e l’Architetto in Matrix Reloaded; nel video, in un’atmosfera surreale, sono presenti innumerevoli volti che variano rapidamente per dimensione, inclinazione, espressione, presenza o meno di occhiali. Un video estremo di prova che farà friggere neuroni e sinapsi anche alle più evolute e performanti reti neurali convoluzionarie.

Questo è il video che è stato prodotto attraverso la nostra elaborazione:

Il Benchmark che ho utilizzato per la Face Detection in Python – L’architetto in Matrix Reloaded – questo è il risultato ottenuto tramite l’uso del modulo MTCNN insieme ad OpenCV che ho usato per l’elaborazione del video

Il modulo Python che, almeno nei miei esperimenti, ha dimostrato i migliori risultati in termini di qualità e prestazioni è MTCNN; in esecuzione su una sessione Colab con GPU attiva elabora efficientemente il flusso di frame con un livello di accuratezza molto alto se si escludono i volti in posizione non frontale. Nel video prodotto si trova l’esito dell’elaborazione dove, oltre ai volti, sono stati marcati anche alcuni punti caratteristici del viso (occhi, naso, estremi della bocca). Questo modulo è quello che riesce a rilevare meglio volti di dimensioni più piccole e non perfettamente allineati garantendo anche un’efficienza molto più alta degli altri moduli provati; MTCNN fornisce, per ogni volto rilevato, anche un livello di confidenza nella rilevazione (in tutto il video ho trovato solo un falso positivo pertanto non ho ritenuto necessario introdurre una soglia).

Il Trono di Spade – foto usata come base per l’apprendimento dei principali personaggi

In alternativa, si propone l’uso del modulo: face_recognition che ha comunque garantito un’ottima precisione su volti di dimensioni significative ed un’efficienza adeguata; su tale modulo è possibile variare l’algoritmo di rilevamento (CNN o HOG) ed effettuare del tuning per cercare di rilevare volti di dimensioni minori. Sul benchmark utilizzato la rilevazione CNN non riusciva ad intercettare gli stessi volti di MTCNN mentre la rilevazione HOG, oltre a non velocizzare molto il processamento, riduceva drasticamente il numero di volti rilevati. In condizioni normali anche questo modulo è da considerare un’ottima scelta e noi lo useremo per effettuare anche il Face Recognition. Questo modulo può richiedere un quantitativo di memoria sulla GPU più elevato soprattutto se si vogliono rilevare i volti con dimensioni più piccole.

Tutti i personaggi sono stati correttamente rilevati

Dopo aver rilevato ed isolato i volti, l’elaborazione della Face Recognition ci permette l’associazione di un volto ad una persona. In assenza di informazioni o di preappendimento sulle persone da ricercare, è possibile aggregare i volti su possibili individui basandosi sulla similitudine delle caratteristiche fisiologiche e biometriche. Gli algoritmi per effettuare tale riconoscimento, per codificare un volto in un insieme di parametri comparabili sono davvero molteplici e tutti estremamente interessanti. Anche in questo caso le reti neurali convoluzionarie (CNN) offrono un contributo importante a questi algoritmi.

Tutti i personaggi sono stati correttamente rilevati ad eccezione di Missandei che non era presente nella foto iniziale

Per implementare un Face Recognition in pochissime righe di codice Python ed in modo efficiente è possibile usare il modulo face_recognition; se si vuole approfondire come questo modulo funziona internamente vi consiglio di leggere questo aricolo.

Tutti gli attori presenti nel file di training sono stati correttamente rilevati anche senza abiti ed acconciature di scena. Come atteso Drogo non viene rilevato perché non presente nel file di training.

In questo caso ho creato un notepad colab di test che da una foto iniziale acquisisce le caratteristiche fisiologiche e biometriche dei vari personaggi della serie Il Trono di Spade; il modulo utilizzato, alla versione attuale, dovrebbe rappresentare ciascun volto tramite 128 parametri caratteristici.

tutti gli attori presenti nella foto di training sono stati rilevati anche Daenarys che appare molto differente rispetto al personaggio interpretato

Per testare il rilevamento ho provato a far riconoscere i personaggi su altre foto contenenti anche personaggi non presenti all’interno della foto di apprendimento; i risultati sono impeccabili. Il modulo utilizzato ha un’accuratezza eccellente sia per quanto riguarda i personaggi appresi che per quelli non analizzati che non ha mai classificato come falsi positivi.

anche in questo caso tutti gli attori presenti nella foto di training sono stati individuati correttamente

Per spingere oltre il test abbiamo avviato la detection su foto in cui gli attori non appaiono con i costumi di scena ed hanno acconciature o il colore dei capelli totalmente differente dai personaggi che hanno interpretato; anche in questo caso l’algoritmo non sbaglia e non rileva mai falsi positivi.

Anche se non ho effettuato delle prove dirette, sono convinto che l’algoritmo scali bene all’aumentare del numero delle persone da rilevare; non ho provato a sottoporre qualche foto degli attori quando erano più giovani.

NOTEBOOK COLAB – UTILIZZATO PER LA FACE DETECTION E FACE RECOGNITION

Concludiamo dicendo che oltre alla Face Detection ed alla Face Recognition ai volti possono essere applicati altri algoritmi per l’estrazione di caratteristiche molto importanti come la rilevazione del sesso, dell’età, del sentimento (es. rabbia, gioia, paura, sorpresa, …).

Fatemi sapere i vostri pareri e le vostre esperienze su Face Detection, Face Recognition nei commenti.

Share

Kaggle Competition – Titanic – Machine Learning from Disaster – Predict survival on the Titanic

L’RMS Titanic è stato un transatlantico britannico della classe Olympic naufragato nelle prime ore del tragico 15 aprile 1912, durante il suo viaggio inaugurale, a causa della collisione con un iceberg avvenuta nella notte.

La sfida proposta da Kaggle: Titanic – Machine Learning from Disaster alla quale ho aderito, richiede l’analisi di un dataset contenente informazioni relative ad un sottoinsieme di passeggeri imbarcati sul Titanic con lo scopo di realizzare un modello predittivo che sia in grado di classificare al meglio se un determinato passeggero si salverà dal naufragio.

tassi di sopravvivenza per classe

Alcune delle informazioni disponibili per l’analisi, di cui occorre individuare il livello di correlazione con la probabilità di salvezza, sono: sesso, età, cabina, classe, ponte, numero di parenti a bordo, porto di imbarco, tariffa pagata; moltissime altre informazioni possono essere derivate da elaborazioni più o meno complesse ed implicite tra i dati disponibili come ad esempio dai nomi completi è possibile risalire ai titoli, ad alcune professioni o anche spingersi al raggruppamento delle famiglie.

La grande sfida è quella di spingere al massimo l’accuratezza del modello predittivo al fine di classificare al meglio un insieme di passeggeri di test di cui non è nota la sorte; solo dopo la sottomissione a Kaggle si scoprirà il livello di accuratezza raggiunto.

Il modello predittivo di base che occorre superare e contro il quale ci si deve confrontare, che ho definito come modello baseline, assume semplicemente che tutte le donne si salveranno; applicando questa condizione elementare, si raggiunge un’accuratezza dell’insieme di passeggeri da classificare di poco superiore al 76%.

modello baseline: tutte le donne si salvano raggiunge un’accuratezza dello 0.76555

Questa competizione è un’ottima introduzione alla piattaforma Kaggle e richiede lo sviluppo di tutte le fasi di costruzione di un modello predittivo: analisi dei dati, preparazione e raffinamento dei dati, visualizzazione dei dati, costruzione del modello, validazione del modello e della sua accuratezza, comprensione della piattaforma Kaggle.

Nel mio notebook ho deciso di affrontare la sfida in Python costruendo un modello tramite la libreria XGBoost nota sia per essere alla base delle migliori implementazioni all’avanguardia del settore ma anche perché alla base dei modelli vincenti delle competizioni Kaggle. Tale libreria implementa il framework Gradient Boost in modalità estremamente scalabile, efficiente e portabile.

La mia implementazione, già completamente funzionante, è ancora in evoluzione è raggiungibile a questo indirizzo:

Kaggle Competition – Titanic – Machine Learning from Disaster – Predict survival on the Titanic – Luca Amore

Share

Infection Spread Simulator Construction Kit

Al fine di comprendere meglio l’articolo: Modeling How Infectious Diseases like Coronavirus Spread ed i riferimenti citati, continuando ad approfondire, mi sono ritrovato a costruire il framework: “Infection Spread Simulator Construction Kit”.

Si tratta di un notebook Python su Colab per la modellazione della diffusione di un’infezione attraverso un modello SEIR descritto da un sistema di equazioni differenziali (o un algoritmo); lo stesso modello proposto per l’analisi della diffusione del covid-19 nell’articolo che ha ispirato questo lavoro.

Chiunque, anche senza nessuna base matematica, con una conoscenza basilare di programmazione, può modificare il notebook all’interno della propria sandbox Colab, descrivere un virus o il comportamento di un’infezione ed analizzare la sua diffusione nel tempo per comprendere come la variazione di certi parametri può incidere nella diffusione.

Si tratta di un prototipo, nato per uso strettamente personale, con molti limiti ma voglio comunque condividerlo con la comunità rilasciandolo come software libero sotto la licenza GNU/GPL v.3.

Sarei felice di ricevere i vostri feedback, i vostri modelli, le vostre evoluzioni anche direttamente su github. Nei prossimi giorni, utilizzando questo framework o una sua evoluzione, vorrei provare a realizzare il complesso modello di diffusione del covid-19 descritto nell’articolo.

Segue il link diretto al notebook su github:

NOTEBOOK INFECTION SPREAD SIMULATOR CONSTRUCTION KIT (GITHUB)

MALARIA
Il primo modello reale (non SEIR) che rilascio è quello della malaria. In questo caso ho dovuto apportare delle modifiche più complesse al modello base.

MALARIA NOTEBOOK (GITHUB)

Share

ffdup – Ultra Fast (and Light) Portable Duplicate File Finder


Alcuni anni fa, avendo la necessità di individuare rapidamente i file duplicati all’interno di file-system Unix residenti su dispositivi embedded o su NAS (es. Synology, QNAP, D-Link), non soddisfatto dei tool che ho trovato in rete, ho realizzato un tool Perl a riga di comando con i seguenti obiettivi:

  • molto leggero ed utilizzabile anche su dispositivi embedded (richiesto solo l’interprete Perl 5.7.3 o superiore senza altre dipendenze);
  • massima efficienza su dischi molto lenti o unità di rete.

E’ nata così la prima versione del software libero ffdup che rilascio sotto licenza GNU/GPL v3.0 su:

ffdup – progetto su Github

Nel progetto è incluso lo script bash per la generazione parametrica di una struttura di directory e file per gli unit test automatici.

In una futura versione vorrei introdurre la rilevazione delle directory duplicate.

Share

AI: Pac-Man and Ms Pac-Man

E’ da molto che non scrivo in questo blog; semplicemente sono stato impegnato in alcuni progetti che non reputo ancora pubblicabili.

Voglio segnalarvi due interessanti riferimenti nel campo dell’AI, computational intelligence, machine learning; argomenti di cui mi sto occupando in questo periodo.

The Pac-Man Projects

Come base degli esercizi per un corso di intelligenza artificiale, presso l’università di Berkeley, viene proposto agli studenti di sviluppare in python alcuni algoritmi all’interno del famoso gioco del Pac-Man; il corso termina con un multi-player contest.

The Pac-Man Projects

Trovo questa idea geniale e molto efficace dal punto di vista didattico.

Il materiale può essere liberamente utilizzato come base per corsi di intelligenza artificiale ma si richiede di non pubblicare online le soluzioni dei problemi posti.

Pac-Man

Ms Pac-Man vs Ghost Team Competition

Per chi volesse cimentarsi nello sviluppo in java di algoritmi che pilotano Ms Pac-Man o la squadra dei quattro fantasmi è stata organizzata un’avvincente competizione:

Ms Pac-Man vs Ghost Team Competition

Un risultato interessante (che mi sorprende) è che i punteggi ottenuti dai migliori giocatori artificiali sono molto più bassi di quelli umani.

Tra i vari algoritmi utilizzati: Ant Colony Optimization, Genetic Programming, Neural Networks, Influence Maps, Minimax, Rule Based.

 

Share