Prueba de Tenseorflow en R para el reconocimiento de imagenes. Primero con una NN simple entrenada desde cero. Luego, sumando layers a una arquitectura red ya probada. En ambos casos, uso el modelo desarrollado para jugar clasificando imagenes tomadas desde la web.
Armo un pequeño dataset con imagenes de 6 clases de frutas a partir del de Kaggle.
Training
Limes | Banana | Clementine | Strawberry | Huckleberry | Peach Flat |
---|---|---|---|---|---|
490 | 492 | 490 | 492 | 492 | 492 |
Validation
Limes | Banana | Clementine | Strawberry | Huckleberry | Peach Flat |
---|---|---|---|---|---|
166 | 164 | 166 | 164 | 164 | 164 |
0_Training_frutas.R :
- Define las 5 clases,
- arma el grafo del modelo y
- lo entrena tomando lotes de imagenes desde el disco.
- el modelo queda guardado en : fruits_model_checkpoints.h5
1_Pruebas_frutas.R :
- carga el modelo de : fruits_model_checkpoints.h5
- carga las clases de : fruits_classes_indices.RData
- permite pasar la url de una imagen y clasificarla de acuerdo al modelo
Viewer :
Tensorboard :
Tomo de ejemplo una frutilla de wikipedia/strawberry:
[Izq : Imagen original (resized) - Der : Imagen transformada (resized) ]
Parte de 1_Pruebas_frutas.R :
> img_url <- ‘https://upload.wikimedia.org/wikipedia/commons/5/53/Strawberry_gariguette_DSC03063.JPG’
....
> paste0(rownames(df_classes_indices)[clase_pred+1],':', round(df_classes_indices[clase_pred+1,2],4) )
> plot(df_classes_indices$indice,df_classes_indices$prob, type = 'b', main=paste0(rownames(df_classes_indices)[clase_pred+1],':', round(df_classes_indices[clase_pred+1,2],4) ))
Strawberry prob :0.9999 :
[Probabilidad por clase]