3 maggio 2012

[Google] Rilasciato Ceres, risolutore di problemi di minimi quadrati

Il riconoscimento delle immagini è il denominatore comune di molti progetti recenti di Google. Maps, Drive e Goggles sono gli esempi piú noti di software che hanno necessità di distinguere testo e immagini separandoli dallo sfondo di fotografie.


Tale operazione, pur essendo semplicissima per l'occhio umano, è estremamente difficile per un computer. Sono quindi state elaborate delle tecniche che, con velocità accettabili, riescano a svolgere questo compito con una buona precisione.

In genere si tratta di metodi computazionali per la risoluzione di problemi di minimi quadrati. Tali problemi si prestano a moltissime altre applicazioni, ad esempio la previsione di eventi basandosi su dati statistici, che esulano un po' dalle funzionalità che Google ci offre, ma che possono interessare a molti.

Google quindi ha deciso di rilasciare con licenza Open Source il proprio sistema di risoluzione di questo genere di problemi: Ceres Solver. Si tratta di una libreria scritta in C++, molto ben documentata e portabile (Linux e Mac, presto Windows, poi Android), che offre agli sviluppatori un'API molto ricca di funzioni e facilmente utilizzabile.

In particolare, offre:
  • Differenziazione algoritmica
  • Funzioni di perdita robuste
  • Parametrizzazioni locali
  • Valutatori e risolutori lineari di Jacobiani
  • Decomposizione QR densa per problemi piccoli
  • Decomposizione sparsa di Cholesky per problemi grandi
  • Risolutori specifici di problemi di determinazione dei parametri (bundle adjustment) per la visione  digitale.
Il tutto, grazie alla portabilità, è scalabile dai sistemi server di calcolo numerico, ai telefoni cellulari.

Per avere un'idea della potenza di Ceres Solver, basti dire che è alla base di tutte le funzioni avanzate di Google Maps: Google ne fa uso per allineare i dati provenienti dalle Google Cars, dagli aerei e dai satelliti, per costruire i modelli 3D degli edifici fotografati e per stimare le caratteristiche delle fotocamere dei satelliti.

Come esempio ci propone questo video, che mostra tre esecuzioni del programma, mentre viene utilizzato per stimare la corretta posizione e l'orientamento delle foto provenienti da una Google Car, basandosi sui dati provenienti dai sensori della macchina stessa e sulla mappa delle strade:


Nessun commento:

Posta un commento