Eric2983 commited on
Commit
cd43578
verified
1 Parent(s): 60ef842

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -196
app.py CHANGED
@@ -1,196 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- """Copia de Training_fruit_vegetable.ipynb
3
-
4
- Automatically generated by Colaboratory.
5
-
6
- Original file is located at
7
- https://colab.research.google.com/drive/1h-zNQjkVokq9MDVJb61PPvYb4f1eJcF6
8
-
9
- Montaje del disco
10
- """
11
-
12
- """Importar librer铆as"""
13
-
14
- import tensorflow as tf
15
- import matplotlib.pyplot as plt
16
-
17
- """Preprocesamiento de datos"""
18
-
19
- #Preprocesamiento de imagenes del conjunto de entrenamiento
20
- training_set = tf.keras.utils.image_dataset_from_directory(
21
- '/content/drive/MyDrive/TallerIII/FruitTrainingDataset/train',
22
- labels="inferred",
23
- label_mode="categorical",
24
- class_names=None,
25
- color_mode="rgb",
26
- batch_size=32,
27
- image_size=(64, 64),
28
- shuffle=True,
29
- seed=None,
30
- validation_split=None,
31
- subset=None,
32
- interpolation="bilinear",
33
- follow_links=False,
34
- crop_to_aspect_ratio=False
35
- )
36
-
37
- #Preprocesamiento de imagenes del conjunto de validacion
38
- validation_set = tf.keras.utils.image_dataset_from_directory(
39
- '/content/drive/MyDrive/TallerIII/FruitTrainingDataset/validation',
40
- labels="inferred",
41
- label_mode="categorical",
42
- class_names=None,
43
- color_mode="rgb",
44
- batch_size=32,
45
- image_size=(64, 64),
46
- shuffle=True,
47
- seed=None,
48
- validation_split=None,
49
- subset=None,
50
- interpolation="bilinear",
51
- follow_links=False,
52
- crop_to_aspect_ratio=False
53
- )
54
-
55
- """Crear el modelo"""
56
-
57
- model = tf.keras.models.Sequential()
58
-
59
- """Capa de convoluci贸n"""
60
-
61
- model.add(tf.keras.layers.Conv2D(filters=32,kernel_size=3,padding='same',activation='relu',input_shape=[64,64,3]))
62
- model.add(tf.keras.layers.Conv2D(filters=32,kernel_size=3,activation='relu'))
63
- model.add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2))
64
-
65
-
66
- model.add(tf.keras.layers.Dropout(0.25))
67
-
68
-
69
- model.add(tf.keras.layers.Conv2D(filters=64,kernel_size=3,padding='same',activation='relu'))
70
- model.add(tf.keras.layers.Conv2D(filters=64,kernel_size=3,activation='relu'))
71
- model.add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2))
72
-
73
-
74
- model.add(tf.keras.layers.Dropout(0.25))
75
-
76
-
77
- model.add(tf.keras.layers.Flatten())
78
-
79
-
80
- model.add(tf.keras.layers.Dense(units=512,activation='relu'))
81
-
82
-
83
- model.add(tf.keras.layers.Dense(units=256,activation='relu'))
84
-
85
-
86
- model.add(tf.keras.layers.Dropout(0.5)) #To avoid overfitting
87
-
88
-
89
- #Output Layer
90
- model.add(tf.keras.layers.Dense(units=36,activation='softmax'))
91
-
92
- """Capas del modelo"""
93
-
94
- model.summary()
95
-
96
- """Compilaci贸n del modelo"""
97
-
98
- model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy',"mean_absolute_error","Precision","Recall",tf.keras.metrics.AUC()])
99
-
100
- """Configuraci贸n tensorboard"""
101
-
102
- # Commented out IPython magic to ensure Python compatibility.
103
- from tensorflow.keras.callbacks import ModelCheckpoint
104
- import tensorflow as tf
105
- import datetime
106
-
107
- # %load_ext tensorboard
108
- #!rm -rf ./logs/
109
- log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
110
- tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)
111
-
112
- """Ruta"""
113
-
114
- ruta_rfv="/content/drive/MyDrive/TallerIII/Reconocimiento_frutas_verduras"
115
-
116
- """Punto de control del modelo y devoluci贸n de llamada"""
117
-
118
- checkpoint_callback = ModelCheckpoint(
119
- filepath=ruta_rfv + '/peso2/weights.{epoch:1d}.h5',
120
- save_weights_only=True,
121
- save_best_only=False,
122
- verbose=1
123
- )
124
-
125
- """Entrenamiento del modelo"""
126
-
127
- epochs = 10
128
- history=model.fit(x=training_set,validation_data=validation_set,epochs=epochs, callbacks=[tensorboard_callback, checkpoint_callback])
129
-
130
- import os
131
- import re
132
-
133
- #Codigo para extraer el numero maximo de epoca almacenado en un directorio
134
- # Ruta del directorio
135
- dir_path = "/content/drive/MyDrive/Taller3/Reconocimiento_frutas_verduras/peso2"
136
-
137
- # Lista para almacenar los n煤meros extra铆dos
138
- num_list = []
139
-
140
- # Recorrer todos los archivos en el directorio
141
- for filename in os.listdir(dir_path):
142
- # Comprobar si el archivo es uno de los archivos de pesos
143
- if filename.startswith("weights.") and filename.endswith(".h5"):
144
- # Extraer el n煤mero del nombre del archivo usando una expresi贸n regular
145
- match = re.search(r'\d+', filename)
146
- if match:
147
- # Convertir el n煤mero a un entero y a帽adirlo a la lista
148
- num = int(match.group())
149
- num_list.append(num)
150
-
151
- # Imprimir la lista de n煤meros
152
- print(num_list)
153
-
154
- # Variable para almacenar el n煤mero m谩ximo
155
- max_num = max(num_list) if num_list else None
156
-
157
- # Imprimir el n煤mero m谩ximo
158
- print(max_num)
159
-
160
- max_num_string = str(max_num)
161
- print(max_num_string)
162
-
163
- #Definir directorio que contiene el archivo de pesos de la ultima epoca
164
- ruta = ruta_rfv + '/peso2/weights.' + max_num_string +'.h5'
165
- print(ruta)
166
-
167
- #Cargar el archivo de pesos de la ultima epoca ejecutada
168
- model.load_weights(ruta)
169
-
170
- #Entrenar el modelo desde la ultima epoca almacenada usando el parametro initial_epoch
171
- history = model.fit(x=training_set,validation_data=validation_set, epochs=epochs, initial_epoch=max_num, callbacks=[tensorboard_callback, checkpoint_callback])
172
-
173
- """Curvas de entrenamiento"""
174
-
175
- # Commented out IPython magic to ensure Python compatibility.
176
- # %tensorboard --logdir logs/fit
177
-
178
- """Evaluar el modelo entrenado"""
179
-
180
- #Precisi贸n del conjunto de entrenamiento
181
- train_loss, train_acc = model.evaluate(training_set)
182
- print('Training accuracy:', train_acc)
183
-
184
- #Precisi贸n del conjunto de validaci贸n
185
- val_loss, val_acc = model.evaluate(validation_set)
186
- print('Validation accuracy:', val_acc)
187
-
188
- """Guardar el modelo"""
189
-
190
- ruta_modelo=ruta_rfv + "/modelo/modeloRFV.h5"
191
- model.save(ruta_modelo)
192
-
193
- """Guardar pesos"""
194
-
195
- ruta_pesos=ruta_rfv + "/modelo/pesosRFV.h5"
196
- model.save_weights(ruta_pesos)