File size: 2,343 Bytes
df02b79
31d4b6e
 
 
7f642aa
a18be24
6efb943
2b3c38f
df02b79
8604064
 
3fa008c
8604064
0549f6a
df02b79
 
3fa008c
2339e41
 
 
 
3fa008c
2339e41
3fa008c
 
 
df02b79
 
 
5900a6d
 
 
6efb943
5900a6d
 
df02b79
3c55658
 
 
 
 
 
 
3fa008c
3c55658
 
43e9c7e
19aa63a
3c55658
df02b79
 
 
 
 
 
 
 
 
 
 
efa5092
1e52d4f
df02b79
3fa008c
 
 
c639849
df02b79
 
 
 
b5f6374
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import gradio as gr
import pandas as pd
import numpy as np

from keras.models import model_from_json
from tensorflow.keras.preprocessing import image
from keras.applications.vgg16 import VGG16, preprocess_input
import heapq

file = open("focusondriving.json", 'r')
model_json2 = file.read()
file.close()
loaded_model = model_from_json(model_json2)
loaded_model.load_weights("focusondriving.h5")

class_dict = {
    'c0': 'Conduciendo de forma segura',
    'c1': 'Móvil en la mano derecha',
    'c2': 'Hablando por el teléfono con la mano derecha',
    'c3': "Móvil en la mano izquierda",
    'c4': 'Hablando con el teléfono con la mano izquierda',
    'c5': 'Tocando la radio o el salpicadero',
    'c6': 'Bebiendo',
    'c7': 'Buscando en la parte trasera',
    'c8': 'Manos en la cara o el pelo',
    'c9': 'Mirando hacia el lado'
}

def predict_image(pic):
    img = image.load_img(pic, target_size=(224, 224))
    x = image.img_to_array(img) 
    x = np.expand_dims(x, axis=0)
    x = preprocess_input(x)
    preds = loaded_model.predict(x)
    preds = list(preds[0])

    list_desc_order = heapq.nlargest(2, range(len(preds)), key=preds.__getitem__)
    result1 = f'c{list_desc_order[0]}'
    result2 = '-'
    result2_ = 0
    if preds[list_desc_order[1]] > 0.3:
        result2 = f'c{list_desc_order[1]}'
        result2_  = round(preds[list_desc_order[1]], 2)
        
    score = round(preds[list_desc_order[0]], 2)*100
    score = int(score)
    txt2 = f"Resultado: {class_dict.get(result1)}     Probabilidad {score}%"
    txt3="pepe"
    return txt2
    
    
iface = gr.Interface(
    predict_image,
    [
        
        gr.inputs.Image(source="upload",type="filepath", label="Imagen")
    ],

    "text",
    
  
    
    interpretation="default",
    title = 'Focus on Driving',
    description = 'El objetivo de este proyecto es ajustar un modelo de Machine Learning capaz de identificar y clasificar las diferentes distracciones a que estamos expuestos siempre que conducimos. https://saturdays.ai/2022/03/16/focus-on-driving-redes-neuronales-aplicadas-a-la-seguridad-vial/',
    examples=[["img_50156.jpg"], ["img_32161.jpg"], ["img_97052.jpg"], ["img_95082.jpg"], ["img_32168.jpg"], ["img_42945.jpg"], ["img_62638.jpg"], ["img_30.jpg"], ["img_13171.jpg"], ["img_90752.jpg"]],
    theme = 'peach'
 )


   
iface.launch()