7 votes

comment ajouter un modèle Keras personnalisé dans OpenCv en python

J'ai créé un modèle pour la classification de deux types de chaussures

maintenant comment le déployer dans OpenCv (détection de videoObject) ???

Merci d'avance

8voto

Ajinkya Points 532

Vous pouvez le faire avec l'aide du module OpenCV DNN :

import cv2

# Load a model imported from Tensorflow
tensorflowNet = cv2.dnn.readNetFromTensorflow('card_graph/frozen_inference_graph.pb', 'exported_pbtxt/output.pbtxt')

# Input image
img = cv2.imread('image.jpg')
rows, cols, channels = img.shape

# Use the given image as input, which needs to be blob(s).
tensorflowNet.setInput(cv2.dnn.blobFromImage(img, size=(300, 300), swapRB=True, crop=False))

# Runs a forward pass to compute the net output
networkOutput = tensorflowNet.forward()

# Loop on the outputs
for detection in networkOutput[0,0]:

    score = float(detection[2])
    if score > 0.9:

        left = detection[3] * cols
        top = detection[4] * rows
        right = detection[5] * cols
        bottom = detection[6] * rows

        #draw a red rectangle around detected objects
        cv2.rectangle(img, (int(left), int(top)), (int(right), int(bottom)), (0, 0, 255), thickness=2)

# Show the image with a rectagle surrounding the detected objects 
cv2.imshow('Image', img)
cv2.waitKey()
cv2.destroyAllWindows()

vous avez besoin d'un graphe d'inférence figé et d'un fichier pbtxt pour exécuter votre modèle dans OpenCV

0voto

Amin Golnari Points 114

Vous devez enregistrer le modèle dans un fichier H5 model.save("modelname.h5"), puis le charger dans le code OpenCV load_model("modelname.h5"). Puis, dans une boucle, détectez les objets que vous trouvez via model.predict(ImageROI).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X