Come creare un'app di classifica / riconoscimento delle immagini

Contenuti

Questo post è stato reso pubblico come parte del Blogathon sulla scienza dei dati.

introduzione

793797-migliore-riconoscimento-immagine-apis-e1587080882739-2831707

Applicazioni

  1. Accreditamento facciale – Le fotocamere del telefono utilizzano il badge facciale per sbloccare il telefono. I sistemi di accreditamento facciale potrebbero essere implementati alle porte d'ingresso degli edifici per uffici.
  2. Classificazione delle immagini – Utilizzato per distinguere tra più set di immagini. Settori come l'automobile, Al dettaglio, i giochi, eccetera. lo usano per molteplici scopi.
  3. Accreditamento immagine Le società di sicurezza utilizzano l'accreditamento delle immagini per rilevare varie cose nelle valigie negli aeroporti, scanner di immagini, eccetera.

Passaggi per creare l'applicazione

  • Ottieni i dati
  • Preparazione dei dati
  • Modellazione dei dati
  • Progetta l'interfaccia utente
  • Integra interfaccia utente e modellazione

Ottieni i dati

I dati sarebbero sotto forma di immagini, In altre parole, Fotografie. Le immagini sono una serie di pixel. Per creare l'intera applicazione end-to-end sarebbero necessarie immagini in numero maggiore. I dati saranno disponibili all'interno dell'organizzazione stessa o devono essere ottenuti da Internet aperto. A seconda del tipo di applicazione, il tipo di dati richiesti varierà. Se si tratta di una domanda di accreditamento facciale, Possiamo persino creare dati attraverso la raccolta di immagini di varie persone. Se le immagini devono essere ottenute da Internet aperto, possiamo raschiare le immagini dal web.

Las imágenes capturadas deben ser de alta risoluzione y pueden estar ligeramente distorsionadas. Potrebbe esserci una certa quantità di rumore presente nelle immagini in modo che l'algoritmo possa categorizzare correttamente le immagini.

Esempio di web scraping di immagini in una pagina web –

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument("--tipo di test")
options.binary_location = "/usr/bin/cromo"
driver = webdriver. Cromo(chrome_options=opzioni)

driver.get('https://imgur.com/')

immagini = driver.find_elements_by_tag_name('img')
per l'immagine nelle immagini:
    Stampa(image.get_attribute('src'))

driver.chiudi()

Preparazione dei dati

  • Le immagini devono essere ridimensionate in modo che tutte le immagini abbiano la stessa dimensione
  • Le immagini possono essere nitide con l'alta risoluzione, oltre che un po' sfocato e rumoroso.
  • Operazioni di trasformazione come traduzione, la rotazione e il ridimensionamento dovrebbero essere applicati in modo che le immagini catturate siano presenti a tutti gli angoli.
  • Le immagini possono essere distorte o troncate per generalizzare bene.
  • Introdurre rumore nelle immagini se non presente
  • Una distribuzione uniforme del numero di immagini deve essere presentata in ciascuna delle classi.

– Autore di Sapiens

Codice per ridimensionare un'immagine

img = cv2.imread('/home/img/python.png', cv2. IMREAD_UNCHANGED)
Stampa(«Dimensioni originali : ',img.forma)
scale_percent = 60
larghezza = int(img.forma[1] * scale_percent / 100)
altezza = int(img.forma[0] * scale_percent / 100)
debole = (larghezza, altezza)
# resize image
resized = cv2.resize(img, Oscuro, interpolazione = cv2.INTER_AREA)

Modellazione dei dati

Una vez que se hayan obtenido todas las imágenes, colóquelas en la carpeta adecuada para cada una de las clases. Asegúrese de que haya una distribución adecuada de imágenes para el addestramento, set di dati di convalida e test. Per la classificazione e l'accreditamento delle immagini dovremo utilizzare le reti neurali. L'architettura di convolucional neuronale rosso se adapta mejor a las imágenes cuando trabajan con matrices.

Le reti neurali convoluzionali hanno diversi strati che aiutano nelle operazioni matematiche che vengono eseguite sulle immagini. I livelli includono il livello di convoluzione, livello di raggruppamento, la capa de standardizzazione por lotes, Funzioni trigger e livelli completamente connessi. L'apprendimento pass-through ti dà la possibilità di utilizzare architetture di modelli di rete pre-addestrate che funzionano bene con immagini di set di dati standard. Quindi inizia scrivendo la tua rete, ma scoprirai che le reti pre-addestrate ti offriranno prestazioni molto migliori.

Inizia con alcuni dei modelli di base pre-addestrati come:

  • VGG16
  • Cominciare
  • Xception
  • MobileNet
  • ResNet50

Puoi utilizzare le librerie Tensorflow o Keras per utilizzare questi modelli che presentano le loro implementazioni all'interno della libreria. Esto le facilitará cambiar los parametri de las diferentes capas de la arquitectura. È possibile evitare l'ottimizzazione degli iperparametri per migliorare le prestazioni. Durante l'addestramento dei modelli, assicurati di salvare i valori dei coefficienti o i pesi del modello. Questi valori che salvi possono essere utilizzati per prevedere le immagini future che fornirai alla tua applicazione.

Código de modelo VGG16

image_size=224
from keras.applications import VGG16
from keras import models
from keras import layers
from keras import optimizers
#Load the VGG model
vgg_conv = VGG16(pesi="imagenet", include_top=Falso, input_shape=(224, 224, 3))
per il livello in vgg_conv.layers[:-4]:
    layer.trainable = False
for layer in vgg_conv.layers:
    Stampa(strato, layer.trainable)
modello = modelli. Sequenziale()
# Add the vgg convolutional base model
model.add(vgg_conv)
# Add new layers
model.add(Strati. Appiattire())
modello.aggiungi(Strati. Denso(1024, attivazione = 'rileggere'))
modello.aggiungi(Strati. Abbandono degli studi(0.5))
modello.aggiungi(Strati. Denso(29, attivazione='softmax'))
# Mostra un riepilogo del modello. Check the number of trainable parameters
model.summary()

La libreria Keras ti offre un modo semplice per salvare i coefficienti del modello usando:

modello.salvataggio('nomefile.h5')

Progetta l'interfaccia utente

Una volta che il modello è pronto per l'uso, dovrebbe funzionare nell'interfaccia utente. Se stai progettando un'applicazione Android, puoi progettare l'interfaccia utente con l'aiuto di Kotlin o Flutter. L'interfaccia utente dovrebbe essere facile da leggere e interpretare. Deve essere progettato in modo tale da soddisfare lo scopo principale dell'applicazione.

Se stai progettando un'applicazione web, Flask o Django potrebbero essere usati per lo stesso scopo. La GUI potrebbe essere progettata utilizzando librerie Python come Tkinter, eccetera.

Integra interfaccia utente e modellazione

Per le app Android, Flutter ti consente di integrare i tuoi modelli di classificazione con l'aiuto di una libreria chiamata Tensorflow Lite. L'implementazione di Tensorflow lite richiede solo due file per la classificazione delle immagini, In altre parole, il file di testo dell'etichetta della classe e il file del peso o dei coefficienti del modello. Una volta inseriti questi due file nella struttura delle cartelle, l'applicazione Android sarà completa e pronta per essere testata. Il widget della fotocamera creato con Flutter può essere utilizzato per acquisire l'immagine in ingresso.

Codice per includere i due file –

loadModel() asincrono {
  attendi Tflite.loadModel(
    modello: "asset/model_unquant.tflite",
    etichette: "asset/etichette.txt",
  );
}

Qui, il file .tflite è il file dei coefficienti che viene creato dal modello e tags.txt sono i nomi delle classi di immagini separati da una nuova riga. Incorporalo nella struttura di Android.

Per applicazioni web, Flask consente di integrare la libreria Tensorflow e consente di utilizzare i pesi del modello per effettuare il tipo corretto di previsione sull'immagine di input.

Seguendo questa procedura, Passo dopo passo, puoi costruire subito il tuo modello di classificazione.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.