Come fare la “predict” a partire da un modello neurale salvato? Esempio riconoscimento volti con mascherina e senza mascherina
Nell’articolo precedente ho fatto vedere come addestrare un modello neurale basato su inception_v3 per il riconoscimento di volti con e senza mascherina.
In questo articolo farò vedere come fare la “predict” caricando il modello salvato precedentemente. Il codice è molto semplice, in ogni caso lascio qui il ink del codice completo.
Il codice è stato sviluppato su colab, pertanto, per evitare di perdere i risultati del training, come di consueto uso google drive come disco esterno.
Vediamo il codice nelle line generali:
Prima di iniziare montiamo il drive google
from google.colab import drive drive.mount('/content/drive')
ed importiamo le librerie necessarie:
from keras.layers import Dense from keras.models import Model from keras.preprocessing.image import ImageDataGenerator from keras.optimizers import Adam import pathlib import math import tensorflow as tf import cv2 import matplotlib.pyplot as plt import matplotlib.image as img import numpy as np from PIL import Image import urllib.request
creiamo una funzione per il caricamento delle immagini e la conversione in un tensore
def load_image(path): img = cv2.imread(path) img = cv2.resize(img,(224,224),3) plt.imshow(img) plt.show() img_array_batch = np.expand_dims(img, axis=0) img_array_batch = img_array_batch/255 return img_array_batch
definiamo una funzione di softmax per ottenere il risultato dell’inferenza in forma percentuale:
def softmax(x): e_x = np.exp(x - np.max(x)) return e_x / e_x.sum()
ricostruiamo il modello definendo il backbone ed i vari livelli della coda:
backbone = InceptionV3(include_top=False, pooling="avg")
ricostruiamo i livelli di coda:
x = backbone.output x = Dense(1024, activation='relu')(x x = Dense(1024, activation='relu')(x) x = Dense(512, activation='relu')(x) classificatore = Dense(2, activation='softmax')(x)
carichiamo i pesi a partire dal modello salvato:
model = Model(inputs=backbone.input, outputs=classificatore) model.load_weights("drive/MyDrive/Colab Notebooks/MASKNOMASK/model2.h5")
scarichiamo l’img di test dal web e convertiamola in un tensore:
URL = "https://www.intoscana.it/wp-content/uploads/shutterstock_1628718772.jpg" #URL="https://ilfattoalimentare.it/wp-content/uploads/2020/03/coronavirus-ragazza-donna-mascherina-AdobeStock_258966698-scaled.jpeg" #URL="https://lh3.googleusercontent.com/proxy/eoIJn-u1COjfOefuOVwqDEQlZWvpIP1uRXcMICCJY0z24QrFsTlIL5-Q-BKxummMmWPU6SwuYxuYLOTpfCPVbIs=s0-d"à #URL="https://qph.fs.quoracdn.net/main-qimg-b86ff4fdfc72aeff3af8419340486f99" with urllib.request.urlopen(URL) as url: withopen('test.jpg', 'wb') as f: f.write(url.read())
carico e converto l’img di test
image_test = load_image('test.jpg')
ed infine effettuo la predizione:
tensore_predizione = model.predict(image_test) #print(tensore_predizione predizionePercentuale = softmax(tensore_predizione) #print(predizionePercentuale) print("Predizione MASK: " + str(predizionePercentuale[0][0]*100) + "%") print("Predizione NO MASK: " + str(predizionePercentuale[0][1]*100) + "%")
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments