ojoel98 commited on
Commit
58e8a08
verified
1 Parent(s): 54bb15e

Rename app.py to app.ipynb

Browse files
Files changed (2) hide show
  1. app.ipynb +125 -0
  2. app.py +0 -59
app.ipynb ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ !pip install pyyaml
2
+ !pip install 'git+https://github.com/facebookresearch/detectron2.git'
3
+
4
+ import torch
5
+ TORCH_VERSION = ".".join(torch.__version__.split(".")[:2])
6
+ CUDA_VERSION = torch.version.cuda
7
+ print("torch:", TORCH_VERSION, "; cuda:", CUDA_VERSION)
8
+
9
+ # Instale Detectron2 que coincida con la versi贸n de PyTorch anterior
10
+ # Ver https://detectron2.readthedocs.io/tutorials/install.html para instrucciones
11
+ !pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/$CUDA_VERSION/torch$TORCH_VERSION/index.html
12
+
13
+ # Importaci贸n de bibliotecas
14
+ import pandas as pd
15
+ import os, cv2, sys
16
+ import matplotlib.pyplot as plt
17
+ import ipywidgets as widgets
18
+ %matplotlib auto
19
+
20
+ # Importaci贸n de los paquetes de Detectron2
21
+ from detectron2 import model_zoo
22
+ from detectron2.engine import DefaultPredictor
23
+ from detectron2.config import get_cfg
24
+ from detectron2.utils.visualizer import Visualizer
25
+ from detectron2.data import catalog
26
+
27
+ # instalar colab_zirc_dims
28
+ !pip install colab_zirc_dims==1.0.10
29
+
30
+ #!python -m pip install 'git+https://github.com/MCSitar/colab_zirc_dims.git@v1_0_10'
31
+
32
+ # importar m贸dulos colab_zirc_dims
33
+ from colab_zirc_dims import save_load
34
+ from colab_zirc_dims import alc_notebook_fxns
35
+ from colab_zirc_dims import zirc_dims_GUI
36
+ from colab_zirc_dims import gen_notebook_fxns
37
+ from colab_zirc_dims import gen_filename_fxns
38
+ from colab_zirc_dims import expl_vis
39
+ from colab_zirc_dims import non_std_cfgs
40
+ # opcionalmente importar algunas funciones al IPython principal
41
+ # kernel para compatibilidad local (no Colab)
42
+ try:
43
+ from google.colab import output
44
+ except ModuleNotFoundError:
45
+ from colab_zirc_dims.jupyter_colab_compat import output_local as output
46
+ from PIL import Image
47
+ import skimage.io
48
+ !pip install gradio
49
+
50
+ import gradio as gr
51
+ from google.colab import drive
52
+ drive.mount('/content/gdrive')
53
+
54
+ def generate_medition(sample_img,Escala):
55
+ #sample_img = im.convert('RGB')
56
+ #print(sample_img.shape)
57
+ #input()
58
+
59
+ # Acceso a Google Drive
60
+ from google.colab import drive
61
+ drive.mount('/content/gdrive')
62
+
63
+ from PIL import Image
64
+ im = Image.fromarray(sample_img)
65
+ im.save("sample_image.jpg")
66
+ fn = 'sample_image.jpg'
67
+ filepath = '/content/sample_image.jpg'
68
+ #Escala = 3
69
+ selected_samples = []
70
+ sample_img
71
+ loaded_data_dict = {fn: {fn: {'img_file': filepath, 'Align_file': '', 'rel_file': fn, 'scale_factor': Escala, 'scale_from': 'default (1.0)'}}}
72
+ #print(loaded_data_dict)
73
+ #input()
74
+ alc_notebook_fxns.select_samples_fxn(loaded_data_dict, selected_samples)
75
+
76
+ model_lib_loc = 'default'
77
+ current_model_dict = {}
78
+ alc_notebook_fxns.select_download_model_interface(current_model_dict, model_lib_loc)
79
+
80
+ grain_metadata = catalog.Metadata(name='grain_meta', thing_classes=['grain'])
81
+ predictor = non_std_cfgs.smart_load_predictor(
82
+ current_model_dict['selected_config_yaml'],
83
+ current_model_dict['selected_model_weights'],
84
+ use_cpu = False,
85
+ adj_nms_thresh='auto',
86
+ adj_thresh_test='auto')
87
+ print('Predictor loaded')
88
+
89
+ ROOT_DIR = "/content/drive/MyDrive"
90
+ Try_contrast_enhanced_subimage = True
91
+ Try_Otsu_thresholding = True
92
+ Save_polygons = True
93
+ save_polys_bool = Save_polygons
94
+ alt_methods = [Try_contrast_enhanced_subimage,
95
+ Try_Otsu_thresholding]
96
+ full_auto_str = ''
97
+ %matplotlib auto
98
+ plt.switch_backend('Agg')
99
+ run_dir = gen_notebook_fxns.full_auto_proc(ROOT_DIR, selected_samples, loaded_data_dict,
100
+ predictor, save_polys_bool, alt_methods,
101
+ full_auto_str, stream_output=False)
102
+
103
+ filepath = run_dir + '/mask_images/' + fn + '/' + fn + '.png'
104
+ im = Image.open(filepath)
105
+ rgb_im = im.convert('RGB')
106
+ rgb_im.save('imagef.jpg')
107
+ imagef = '/content/imagef.jpg'
108
+ from google.colab.patches import cv2_imshow
109
+ img = cv2.imread(imagef, cv2.COLOR_BGR2RGB)
110
+
111
+
112
+ # Carga de los datos de medici贸n del fragmento de ripios de perforaci贸n
113
+ file = run_dir + '/grain_dimensions/' + fn + '_grain_dimensions.csv'
114
+ print(file)
115
+ df = pd.read_csv(file)
116
+ df = df.head()
117
+
118
+
119
+
120
+ return img, df
121
+
122
+ demo = gr.Interface(fn=generate_medition, inputs=[gr.Image(label="Imagen"), gr.Radio([1,2,3,4,5,6], label="Escala de la imagen")], outputs=[gr.Image(label="Fragmento medido"), gr.Dataframe(label="Tabla de datos")], title="MEDICI脫N DE IM脕GENES DE RIPIOS DE PERFORACI脫N",
123
+ description='La siguiente interfaz medir谩 de forma autom谩tica fragmentos en im谩genes de ripios de perforaci贸n. El usuario deber谩 ingresar en la parte de la izquierda la imagen a ser procesada y su escala en um/px, mientras que en la parte de la derecha se mostrar谩 la imagen con el fragmento ya medido y una tabla con los par谩metros medidos y calculados. Se recomienda ingresar im谩genes sin ning煤n tipo de mediciones o s铆mbolos ya que esto podr铆a afectar en la predicci贸n del modelo.',
124
+ article='Nota: En el caso de ingresar im谩genes que no tengan relaci贸n a muestras de ripios de perforaci贸n, los autores de esta aplicaci贸n no se hacen responsables por los resultados de estas, el modelo de medici贸n de ripios de perforaci贸n est谩 entrenado para dar un resultado.')
125
+ demo.launch()
app.py DELETED
@@ -1,59 +0,0 @@
1
-
2
- import gradio as gr
3
- import pandas as pd
4
- import cv2
5
- from PIL import Image
6
-
7
- def generate_medition(sample_img, Escala):
8
- # Guardar imagen de muestra
9
- im = Image.fromarray(sample_img)
10
- im.save("sample_image.jpg")
11
- fn = 'sample_image.jpg'
12
- filepath = '/content/sample_image.jpg'
13
- selected_samples = []
14
- loaded_data_dict = {fn: {fn: {'img_file': filepath, 'Align_file': '', 'rel_file': fn, 'scale_factor': Escala, 'scale_from': 'default (1.0)'}}}
15
- alc_notebook_fxns.select_samples_fxn(loaded_data_dict, selected_samples)
16
-
17
- model_lib_loc = 'default'
18
- current_model_dict = {}
19
- alc_notebook_fxns.select_download_model_interface(current_model_dict, model_lib_loc)
20
-
21
- grain_metadata = catalog.Metadata(name='grain_meta', thing_classes=['grain'])
22
- predictor = non_std_cfgs.smart_load_predictor(
23
- current_model_dict['selected_config_yaml'],
24
- current_model_dict['selected_model_weights'],
25
- use_cpu=True,
26
- adj_nms_thresh='auto',
27
- adj_thresh_test='auto')
28
- print('Predictor loaded')
29
-
30
- Try_contrast_enhanced_subimage = True
31
- Try_Otsu_thresholding = True
32
- Save_polygons = True
33
- save_polys_bool = Save_polygons
34
- alt_methods = [Try_contrast_enhanced_subimage, Try_Otsu_thresholding]
35
- full_auto_str = ''
36
- plt.switch_backend('Agg')
37
- run_dir = gen_notebook_fxns.full_auto_proc('/content/', selected_samples, loaded_data_dict,
38
- predictor, save_polys_bool, alt_methods,
39
- full_auto_str, stream_output=False)
40
-
41
- filepath = run_dir + '/mask_images/' + fn + '/' + fn + '.png'
42
- im = Image.open(filepath)
43
- rgb_im = im.convert('RGB')
44
- rgb_im.save('imagef.jpg')
45
- imagef = '/content/imagef.jpg'
46
- img = cv2.imread(imagef, cv2.COLOR_BGR2RGB)
47
-
48
- # Carga de los datos de medici贸n del fragmento de ripios de perforaci贸n
49
- file = run_dir + '/grain_dimensions/' + fn + '_grain_dimensions.csv'
50
- print(file)
51
- df = pd.read_csv(file)
52
- df = df.head()
53
-
54
- return img, df
55
-
56
- demo = gr.Interface(fn=generate_medition, inputs=[gr.Image(label="Imagen"), gr.Radio([1,2,3,4,5,6], label="Escala de la imagen")], outputs=[gr.Image(label="Fragmento medido"), gr.Dataframe(label="Tabla de datos")], title="MEDICI脫N DE IM脕GENES DE RIPIOS DE PERFORACI脫N",
57
- description='La siguiente interfaz medir谩 de forma autom谩tica fragmentos en im谩genes de ripios de perforaci贸n. El usuario deber谩 ingresar en la parte de la izquierda la imagen a ser procesada y su escala en um/px, mientras que en la parte de la derecha se mostrar谩 la imagen con el fragmento ya medido y una tabla con los par谩metros medidos y calculados. Se recomienda ingresar im谩genes sin ning煤n tipo de mediciones o s铆mbolos ya que esto podr铆a afectar en la predicci贸n del modelo.',
58
- article='Nota: En el caso de ingresar im谩genes que no tengan relaci贸n a muestras de ripios de perforaci贸n, los autores de esta aplicaci贸n no se hacen responsables por los resultados de estas, el modelo de medici贸n de ripios de perforaci贸n est谩 entrenado para dar un resultado.')
59
- demo.launch()