Amazon Rekognition per il riconoscimento delle immagini
da Massimo Della Rovere · pubblicato il 20 dicembre, 2016 · modificato il 17 agosto, 2017

Nel precedente convegno sugli Amazon Web Services avvenuto a Las Vegas sono stati presentati alcuni servizi di intelligenza artificiale (IA). Durante quest’anno cercherò di pubblicare alcuni articoli sull’argomento e presentare i vari servizi che fanno parte di questo interessante gruppo. Oggi iniziamo con Amazon Rekognition che permette di analizzare un’immagine ed eseguire il riconoscimento di scene o oggetti presenti nella foto, il riconoscimento facciale e la comparazione del viso.

Amazon Rekognition

Usare questo servizio è veramente semplice, basta memorizzare un’immagine su una risorsa come ad esempio Amazon S3, richiamare una API specifica in base al tipo di elaborazione che si vuole eseguire e leggere il file JSON di ritorno con le informazioni generate, il tutto con tempi di risposta incredibili (meno di 0.5 sec). Non si necessita di configurare nessun server ne tanto meno di installare complessi software.

Per capire il funzionamento delle chiamate API messe a disposizione dal servizio in questo momento non c’è cosa migliore che fare qualche esempio concreto. Proveremo nel proseguimento di questo articolo la funzione di riconoscimento scene e/o oggetti presente nell’immagine, l’analisi facciale e il riconoscimento facciale. Il linguaggio di programmazione da utilizzare è vasto, Amazon mette a disposizione diversi SDK.

Riconoscimento scene/oggetti

Nella console degli Amazon Web Services possiamo trovare nella pagina del servizio un tool per eseguire i primi test senza dover scrivere codice di programmazione, però come detto in precedenza l’operazione è cosi semplice che anche provare subito con il codice è una operazione molto veloce e non vi fa perdere troppo tempo.

La prima foto che ho preso è stata usata in un’articolo che trattava del cioccolato in Perù presente nel blog locale presente in questo stesso sito web. Ho fatto anche altri tentativi usando delle foto con degli animali presenti nella Selva Peruana e ho sempre ricevuto un risultato coerente con l’immagine elaborata. Il servizio funziona bene anche con immagini che rappresentano dei paesaggi o dei monumenti storici.

Dal momento che eseguite l’upload di un’immagine all’elaborazione dei tag che vedete sulla destra di questa schermata vi posso dire che il tempo è quasi immediato. Sono tanti anni che faccio il lavoro di sistemista e ho affrontato anche progetti molto difficili ma se mi domandate come questo sia possibile vi assicuro che faccio fatica :D

Analisi facciale

Con questa API è possibile analizzare un viso e capirne alcune caratteristiche, come ad esempio se sorride, se è donna o uomo, se porta gli occhiali, se ha la barba, se gli occhi sono aperti o chiusi e molte altre informazioni. Dato che queste elaborazioni possono essere eseguite su una grande quantità di immagini e non solo sull’analisi di una foto alla volta, immaginate quante utility automatiche di archiviazione è possibile eseguire.

In questo esempio ho usato la fotografia messa a disposizione dalla stessa Amazon dato che la ragazza ha un bel sorriso e merita la pubblicazione :D In ogni caso ho provato diverse foto di famiglia ed escono fuori anche cose divertenti. Sicuramente è un servizio da provare sui cui sviluppare tantissime idee per le vostre applicazioni.

Comparazione facciale

Con questo servizio e possibile prendere un viso origine che dovrà essere presente in un’immagine chiamata “Reference Face” e cercarlo in altre foto che verranno chiamate con il termine “Comparison Faces”. Il file JSON risultante indicherà per ogni foto target la percentuale di riconoscimento con cui valutare se la persona è stata trovata.

Sul file JSON di ritorno vengono indicate anche le coordinate della foto target per indicare la parte di foto esatta in cui è avvenuto il riconoscimento. Sicuramente questa API è più complessa delle precedenti ma comunque sempre facile da implementare. Vi consiglio di leggere anche la documentazione ufficiale per approfondimenti.

Esempio per gli sviluppatori

Sono sicuro che gli sviluppatori più curiosi vorranno subito vedere la struttura dei dati che viene generata dopo la chiamata API. Come detto in precedenza è solo un file JSON da cui estrapolare le informazioni necessarie. Via allego qui di seguito il file generato dall’ultimo esempio:

{
  "FaceMatches": [
  {
    "Face": {
    "BoundingBox": {
      "Height": 0.07888888567686081,
      "Left": 0.34166666865348816,
      "Top": 0.185555562376976,
      "Width": 0.11833333224058151
    },
    "Confidence": 99.99418640136719
  },
  "Similarity": 98
  },
  {
  "Face": {
    "BoundingBox": {
      "Height": 0.08444444090127945,
      "Left": 0.5766666531562805,
      "Top": 0.2177777737379074,
      "Width": 0.12666666507720947
  },
  "Confidence": 99.98779296875
  },
  "Similarity": 0
  },
  {
  "Face": {
    "BoundingBox": {
      "Height": 0.07444444298744202,
      "Left": 0.46666666865348816,
      "Top": 0.15666666626930237,
      "Width": 0.11166666448116302
    },
    "Confidence": 99.9874267578125
  },
  "Similarity": 0
  }
  ],
  "SourceImageFace": {
    "BoundingBox": {
      "Height": 0.5899999737739563,
      "Left": 0.3288888931274414,
      "Top": 0.1966666728258133,
      "Width": 0.39222222566604614
    },
   "Confidence": 99.97590637207031
  }
}

Guida completa su AWS

Questo articolo appartiene ad una serie di pubblicazioni che costituiscono una guida completa dedicata agli Amazon Web Services. Molti servizi che trattiamo in questo blog vengono anche spiegati con dei video che trovate nel nostro canale youtube. Se volete seguire questo percorso didattico iscrivetevi alla community Cloud AWS.

1 Commento

  1. Grazie mille per questo interessante articolo. Come giustamente riporti nel post l'aspetto veramente interessante sono le performance. Come sviluppatore sapere di poter utilizzare queste funzioni avanzate senza preoccuparsi di configurare server, api, ect e garantire sempre un basso tempo di risposta non è cosa da poco.

condividi