CUDA NVIDIA e codici orfani

La sigla CUDA, ben conosciuta da chi si occupa di programmazione nell’ambito della computer graphics e computer vision, è l’acronimo di Compute Unified Device Architecture e rappresenta una infrastruttura API di accesso alle potenzialità di calcolo offerte dalla schede video NVIDIA, direttamente da codice, offrendo enormi vantaggi di scalabilità computazionale.

Rilievo integrato Chiesa S. Maria Maddalena

Lavorare su un rilievo integrato è un’attività che necessita di una pianificazione e programmazione accurata per agevolare l’integrazione di due o più tipologie di rilievo, spesso con caratteristiche e requisiti differenti.
In questo caso, il rilievo ha riguardato la Chiesa S. Maria Maddalena a Sammichele di Bari, costituita nel XVII sec. su un impianto precedente, ed è stato effettuato mediante due metodologie: Rilievo Laser terrestre e rilievo fotogrammetrico aereo.

Ego4D, dataset video in soggettiva

Chi studia le applicazioni di intelligenza artificiale, e più in particolare di computer vision, sa bene che uno dei limiti più importanti nella definizione e apprendimento dei modelli è la disponibilità di dataset normalizzati su cui effettuare la fase di apprendimento e testing.<!–more–>

Per questa ragione, in questo ultimo periodo, molti enti di ricerca si stanno adoperando per realizzare e mettere a disposizione del mondo scientifico tali raccolte, organizzandole su base tematica o disciplinare.

In questo contesto, è stato presentato Ego4D (Egocentric 4D Live Perception), un progetto sviluppato da Facebook insieme ad un consorzio di università internazionali, nato dalla volontà di raccogliere registrazioni video in soggettiva durante le comuni attività giornaliere.

Cosa rende originale Ego4D ?

La scelta di questo POV (point of view) nasce dal fatto che attualmente gran parte dei dataset disponibili è composto da fotografie o video riprese da punti di vista esterni al soggetto che compie l’azione, offrendo agli algoritmi la possibilità di distinguere con maggiore facilità gli elementi costituivi ed il tracking dei soggetti coinvolti.
Nei video in soggettiva, invece, la descrizione visiva di una scena o di una azione cambia totalmente, portando limitazioni e problematiche che attualmente non possono essere affrontate a causa proprio della scarsità di dataset di training.

Una delle novità di questo progetto è proprio la scelta del punto di ripresa.
Infatti, a differenza di quanto avviene normalmente con altre tipologie di raccolte video, in questo caso le registrazioni sono avvenute mediante camere indossabili, posizionate in modo da registrare secondo il punto di vista del soggetto, permettendo così di addestrare futuri modelli AI che possono coadiuvare attività umane mediante sensori “egocentrici”, capaci cioè di percepire la scena dal punto di vista dell’operatore.

Il progetto ha coinvolto oltre 850 partecipanti distribuiti in nove paesi, tra cui l’Italia ,con l’Università di Catania, preservando una eterogeneità di scenari e attività, oltre ovviamente garantendo la privacy dei soggetti ripresi.

I contesti registrati, come detto in precedenza, riguardano attività quotidiane personali (ad esempio cucinare, fare shopping, disegnare, ecc.) e professionali (es. elettricisti, muratori, cuochi, ecc.).

Tale scelta è stata motivata dalla volontà di rendere eterogeneo l’ambiente in cui si svolgono tali azioni, consentendo così che future applicazioni possano essere facilmente predisposte indipendentemente dal contesto in cui si svolgono.

 Raccolta video eterogenea. Sono stati coinvolti 855 partecipanti da 74 location in 9 nazioni differenti.

A partire dal mese di novembre 2021, il database contenente oltre 3.000 ore di video sarà reso disponibile alla comunità scientifica.

I benchmark di Ego4D

Oltre alla creazione della raccolta video, il progetto Ego4D si pone l’obiettivo di verificare 5 benchmark applicativi riguardanti i temi: interazione sociale, interazione mano-oggetto, diarizzazione audiovisiva, memoria episodica e previsione.
Questi obiettivi, rappresentano in modo chiaro la direzione della ricerca applicativa:

  • la possibilità di riconoscere un’azione svolta nel passato, in modo da riconoscere e “ricordare” avvenimenti e azioni svolte
  • comprendere comportamenti e abitudini, in modo da simulare previsioni sociali o sistemiche;
  • apprendere i movimenti e i meccanismi che l’uomo usa per interagire con gli oggetti, in modo da interpretare gesture da integrare nei vari algoritmi;
  • consentire l’utilizzo del suono in soggettiva per migliorare l’apprendimento dell’ambiente e delle azioni che si svolgono;
  • studiare e comprendere l’interazione interpersonale.

L’obiettivo ultimo che si pone il progetto è quello di integrare e migliorare le potenzialità e l’integrazione della computer vision all’interno dei sistemi di automazione

Per approfondire:

Articolo

Facebook AI Research

Pagina web del progetto Ego4D

HuMoR: 3D Human Motion Model for Robust Pose Estimation

In questo periodo così florido per il settore dell’intelligenza artificiale, e più in particolare per la computer vision, si susseguono giornalmente pubblicazioni in cui si sperimentano applicazioni di modelli per la stima delle pose umane. Questo tema, sebbene possa sembrare apparentemente ristretto a specifici ambiti applicativi, in realtà trova applicazioni in svariati settori disciplinari: dalla guida autonoma al gaming, dai sistemi di sicurezza ad applicazioni sul tracciamento automatizzato del comportamento umano.

Oggi voglio descrivervi una pubblicazione che utilizza un metodo alternativo per svolgere questo tipo di identificazione.

Pubblicata da Rempe, Davis and Birdal, Tolga and Hertzmann, Aaron and Yang, Jimei and Sridhar, Srinath and Guibas, Leonidas J. all’ International Conference on Computer Vision (ICCV) di quest’anno, la ricerca illustra un approccio metodologico innovativo per la stima di pose umane con un approccio generativo espressivo basato su un conditional variational autoencoder.
Il progetto risulta supportato dal Toyota Research Institute (“TRI”) tramite il programma di finanziamento University 2.0 program, dal programma Samsung GRO, Ford-Stanford Alliance e da altre fonti universitarie.

HuMoR: come funziona

Iniziamo col dire che l’individuazione di una posa umana parte da processi prioritari di individuazione di una persona, individuazione della forma di questa persona ed individuazione di un contesto ambientale che eventualmente può occludere il soggetto in movimento.

Queste procedure possono essere affrontate con metodi differenti, anche in base al tipo di input su cui stiamo lavorando (ad esempio una nuvola di punti, keypoint mocap, un semplice video, ecc.) ma conservano delle difficoltà computazionali legate alla variazione della forma umana del soggetto coinvolto e alla variabilità che questa forma umana compie durante i suoi movimenti.

L’approccio utilizzato dai ricercatori prova a risolvere queste problematiche tramite un approccio statistico, che modella una distribuzione di probabilità delle possibili transizioni di posa.

Volendo azzardare una semplificazione, si potrebbe immaginare questo approccio come un tentativo di “prevedere” le possibili pose che il soggetto potrà compiere nei fotogrammi successivi tramite l’analisi della posa attuale utilizzata da un modello predisposto in fase di training da opportuni dataset (tra cui AMASS)

I risultati presentati dal gruppo di ricerca mostrano l’utilizzo di questo algoritmo nell’individuazione di movimenti umani in video RGB-D (RGB+Depth) con parziale occlusione, riuscendo a identificare correttamente i movimenti e l’interazione tra soggetto e oggetti.

Inoltre, il modello può essere utilizzato per generare plausibili transizioni di movimenti, partendo da una pose iniziale e generando automaticamente le restanti.

La ricerca dimostra un’ottima applicabilità ed una robustezza applicativa anche in caso di zone parzialmente occluse, lasciando ottime aspettative a future implementazioni strutturate all’interno di applicativi appositi.

Per approfondire:

Pagina GitHub del progetto

Articolo pubblicato

iTwin.js, il Digital Twin opensource

Negli ultimi anni, con lo sviluppo e l’applicazione sempre più diffusa della metodologia BIM e, più in generale, delle tecniche di progettazione parametrica e informativa, il termine digital twin è sempre più presente e incluso nelle politiche di sviluppo digitale, soprattutto in ambito ingegneristico.

Facciamo innanzitutto una brevissima premessa.
Con il termine digital twin, intendiamo una rappresentazione digitale di un elemento, un asset o un’opera, descritta nelle sue componenti formali e informative, con la caratteristica di consentire l’aggiornamento continuo dei suoi attributi.
Come è facile intuire, quindi, una delle proprietà fondamentali di un gemello digitale è proprio la sua capacità di essere aggiornato e interrogato nel tempo, possibilmente da remoto.
Proprio questa sua scalabilità temporale suggerisce un approccio possibilmente basato su architetture opensource, in modo da essere svincolato da policy commerciali che possono, nel tempo, limitare o rallentare la sua fruizione.

Per questa ragione, si stanno diffondendo sempre più soluzioni opensource che offrono ambienti informativi fruibili su piattaforme online, sia in ambito edile che civile.
In particolare, in quest’ultimo settore, il digital-twin si pone all’interno dei normali flussi operativi, offrendo potenzialità di interrogazione progettuali o informative direttamente in loco, durante la cantierizzazione o l’utilizzo dell’opera, anche tramite tecnologie di realtà aumentata o mixed.

iTwin.js

Nel contesto sopra descritto, si inserisce la libreria di cui voglio parlarvi oggi.
Si chiama iTwin.js, e comprende una serie di strumenti che consentono di creare la propria infrastruttura digitale per la gestione degli asset. Questi pacchetti, sviluppati in JavaScript (necessitano di supporto es2017) sono basati su tecnologie open tra cui SQLite, Node.js, NPM, WebGL, Electron, Docker, Kubernetes, e naturalmente HTML5 e CSS, consentendo quindi l’integrazione con le più comuni infrastrutture dati disponibili.

Il codice sorgente della libreria è ospitato su GitHub ed è distribuito sotto la licenza MIT.

Partendo da un rilievo fotogrammetrico o Lidar, ad esempio, è possibile utilizzare dei connectors gratuiti in grado di sincronizzare questi dati con i formati più utilizzati nel settore (ad esempio .dgn, .dwg, .rvt, .ifc, ecc.) riuscendo a diventare così un contenitore informativo fruibile da qualsiasi dispositivo.

In questo modo, il progettista può creare e personalizzare la propria infrastruttura digitale in modo da rispondere perfettamente alle proprie esigenze di controllo o interrogazione di cui necessita, adottando gli approcci di federazione che meglio discretizzano il proprio flusso lavorativo.

Con iTwin.js è possibile creare webapp, applicativi per desktop o per mobile che si interfacciano con il modello digitale ospitato all’interno della piattaforma iModelHub, da cui viene copiato ed interrogato tramite i servizi dedicati.

Le API disponibili sono qui elencate.

E’ possibile visionare un esempio di interfaccia web da questo link

Per approfondire: www.itwinjs.org/

Maschere Alpha in Metashape

Durante l’elaborazione fotogrammetrica, gran parte dei software presenti sul mercato consentono l’adozione di maschere.
Queste maschere consentono di definire delle porzioni fotografiche da ignorare nei calcoli del programma.
Per intenderci, se nelle immagini di una campagna di rilievo fotografico compaiono persone o autoveicoli in movimento, ad esempio, gli algoritmi SfM avranno difficoltà nella risoluzione della scena, proprio a causa del movimento che tali oggetti hanno durante le riprese (ricordiamo che, nella maggior parte delle configurazioni di ripresa, i software fotogrammetrici si basano sulla deduzione geometrica della posizione della camera rispetto ad una scena statica).

Oltre al movimento di soggetti, ci sono particolari materiali che per loro proprietà frenel comportano condizioni riflessive o di trasparenza che cambiano in base all’angolo di ripresa (ad. esempio materiali metallici, vetrature, plastiche lucide) e che quindi portano a potenziali problemi di risoluzione fotogrammetrica.

Per tutte queste ragioni, può essere utile ignorare, mascherare, delle porzioni fotografiche, andando a migliorare e facilitare i risultati dell’elaborazione fotogrammetrica.

Per creare queste maschere, i programmi fotogrammetrici offrono alcuni semplici comandi di selezione, lasciando all’utente l’onere di operare questo partizionamento manualmente per ciascuna immagine coinvolta.

In alternativa, alcuni programmi consentono anche il caricamento delle maschere tramite appositi file esterni, opportunamente realizzati tramite una logica binaria (solitamente i pixel sono identificati con colori bianco e nero).
Questo approccio ha il vantaggio di consentire l’utilizzo di specifici software di fotoritocco che, per loro natura, offrono maggiori comandi di selezione che si basano su regole di contrasto o similitudine tonale o cromatica.

In questo tutorial, mostro il flusso di lavoro per creare, all’interno di Adobe Photoshop, delle maschere che vengono salvate nel canale alpha dell’immagine stessa, andando a sfruttare alcuni specifici comandi di selezione semi-automatizzata presenti all’interno del programma Adobe.
Infine, all’interno di Metashape, ci occuperemo di fare leggere e assegnare automaticamente i canali alpha di ciascuna immagine caricata, facendole interpretare come maschere.