CARIA.2.0
Precedent repo CARIA : Ajout de nouveau modele. Travail sur multiple ia. ...
This commit is contained in:
84
server-ia/Camera_Identification_RoadSign/modele.py
Normal file
84
server-ia/Camera_Identification_RoadSign/modele.py
Normal file
@@ -0,0 +1,84 @@
|
||||
import cv2
|
||||
import glob
|
||||
import numpy as np
|
||||
import json
|
||||
import requests
|
||||
|
||||
# Charger le modèle TensorFlow
|
||||
import tensorflow as tf
|
||||
model = tf.keras.models.load_model('server-ia/data/modeles/traffic_signs_model/')
|
||||
|
||||
# Chemin vers les images de test
|
||||
# path = 'server-ia/data/videos/autoroute.mp4'
|
||||
path = 'server-ia/data/images/panneaux/France_road_sign_B14_(5).svg.png'
|
||||
|
||||
images = glob.glob(path)
|
||||
|
||||
# Initialiser les listes pour les données et les étiquettes
|
||||
data = []
|
||||
|
||||
# Récupérer les images et leurs étiquettes
|
||||
for im in images[:5]: # Charger seulement les 5 premières images pour l'exemple
|
||||
try:
|
||||
# Lire l'image et redimensionner
|
||||
image = cv2.imread(im)
|
||||
image = cv2.resize(image, (30, 30))
|
||||
|
||||
# Ajouter l'image à la liste des données
|
||||
data.append(image)
|
||||
except Exception as e:
|
||||
print(f"Erreur lors du chargement de l'image {im}: {e}")
|
||||
|
||||
# Convertir la liste des données en un tableau numpy
|
||||
test_imgs = np.array(data)
|
||||
|
||||
# Effectuer les prédictions sur les images
|
||||
predictions = model.predict(test_imgs)
|
||||
|
||||
# Afficher les prédictions
|
||||
print(predictions)
|
||||
|
||||
#dictionary to label all traffic signs class.
|
||||
classes = { 0:'Speed limit (20km/h)',
|
||||
1:'Speed limit (30km/h)',
|
||||
2:'Speed limit (50km/h)',
|
||||
3:'Speed limit (60km/h)',
|
||||
4:'Speed limit (70km/h)',
|
||||
5:'Speed limit (80km/h)',
|
||||
6:'End of speed limit (80km/h)',
|
||||
7:'Speed limit (100km/h)',
|
||||
8:'Speed limit (120km/h)',
|
||||
9:'No passing',
|
||||
10:'No passing veh over 3.5 tons',
|
||||
11:'Right-of-way at intersection',
|
||||
12:'Priority road',
|
||||
13:'Yield',
|
||||
14:'Stop',
|
||||
15:'No vehicles',
|
||||
16:'Veh > 3.5 tons prohibited',
|
||||
17:'No entry',
|
||||
18:'General caution',
|
||||
19:'Dangerous curve left',
|
||||
20:'Dangerous curve right',
|
||||
21:'Double curve',
|
||||
22:'Bumpy road',
|
||||
23:'Slippery road',
|
||||
24:'Road narrows on the right',
|
||||
25:'Road work',
|
||||
26:'Traffic signals',
|
||||
27:'Pedestrians',
|
||||
28:'Children crossing',
|
||||
29:'Bicycles crossing',
|
||||
30:'Beware of ice/snow',
|
||||
31:'Wild animals crossing',
|
||||
32:'End speed + passing limits',
|
||||
33:'Turn right ahead',
|
||||
34:'Turn left ahead',
|
||||
35:'Ahead only',
|
||||
36:'Go straight or right',
|
||||
37:'Go straight or left',
|
||||
38:'Keep right',
|
||||
39:'Keep left',
|
||||
40:'Roundabout mandatory',
|
||||
41:'End of no passing',
|
||||
42:'End no passing veh > 3.5 tons' }
|
||||
47
server-ia/Camera_Identification_RoadSign/predict.py
Normal file
47
server-ia/Camera_Identification_RoadSign/predict.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import cv2
|
||||
import numpy as np
|
||||
import tensorflow as tf
|
||||
|
||||
# Chemin vers le dossier contenant le modèle SavedModel
|
||||
model_dir = "server-ia/data/modeles/traffic_signs_model/1"
|
||||
|
||||
# Chargement du modèle SavedModel
|
||||
model = tf.keras.models.load_model(model_dir)
|
||||
|
||||
# Fonction de prétraitement de l'image
|
||||
def preprocess_image(image):
|
||||
# Redimensionner l'image à la taille attendue par le modèle
|
||||
processed_image = cv2.resize(image, (30, 30))
|
||||
# Assurez-vous que l'image est dans le format attendu par le modèle
|
||||
processed_image = processed_image.astype("float32") / 255.0 # Normalisation
|
||||
processed_image = np.expand_dims(processed_image, axis=0) # Ajouter une dimension pour l'axe du lot
|
||||
return processed_image
|
||||
|
||||
# Fonction de détection des panneaux
|
||||
def detect_signs(video_path):
|
||||
cap = cv2.VideoCapture(video_path)
|
||||
while cap.isOpened():
|
||||
ret, frame = cap.read()
|
||||
if not ret:
|
||||
break
|
||||
|
||||
# Prétraitement de l'image
|
||||
processed_frame = preprocess_image(frame)
|
||||
|
||||
# Faire une prédiction avec le modèle
|
||||
predictions = model.predict(processed_frame)
|
||||
|
||||
# Analyser les prédictions et afficher les résultats sur l'image
|
||||
# Remplacez cette partie par votre code de détection et d'affichage des panneaux
|
||||
|
||||
# Affichage de la vidéo avec les détections
|
||||
cv2.imshow('Video', frame)
|
||||
if cv2.waitKey(1) & 0xFF == ord('q'):
|
||||
break
|
||||
|
||||
cap.release()
|
||||
cv2.destroyAllWindows()
|
||||
|
||||
# Appel de la fonction pour détecter les panneaux dans la vidéo
|
||||
video_path = "server-ia/data/videos/autoroute.mp4"
|
||||
detect_signs(video_path)
|
||||
Reference in New Issue
Block a user