Spaces:
Runtime error
Runtime error
| from core.controllers.pages_controller import Page | |
| from core.controllers.main_process import Generador | |
| class Live_Demo(Page): | |
| variables_globales = { | |
| "img_bytes": None, | |
| "img_src": None, | |
| "settings": { | |
| "model": str("google/vit-base-patch16-224"), | |
| "tokenizer": str("google/vit-base-patch16-224"), | |
| }, | |
| "img_output": None, | |
| "predicciones": None, | |
| } | |
| archivos_css = ["main", | |
| "live_demo"] | |
| def __init__(self, title=str("Live-Demo"), icon=str("🖼️"), init_page=False): | |
| super().__init__() | |
| if init_page: | |
| self.new_page(title=title, icon=icon) | |
| self.new_body(True) | |
| self.init_globals(globals=self.variables_globales) | |
| for archivo in self.archivos_css: | |
| self.cargar_css(archivo_css=archivo) | |
| def obtener_bytes(self, archivo): | |
| self.set_global(key='img_src', value=archivo) | |
| self.set_global(key='img_bytes', value=archivo.getvalue()) | |
| def actualizar_modelo_tokenizer(self, modelo, tokenizer): | |
| _settings = {'model': modelo, | |
| 'tokenizer': tokenizer} | |
| self.set_global(key='settings', value=_settings) | |
| def procesar_imagen(self): | |
| proceso = Generador(configuraciones=self.get_global('settings')) | |
| proceso.generar_prediccion(imagen_bytes=self.imgg.open(self.get_global('img_src')).convert("RGB")) | |
| self.set_global(key='img_output', value=self.get_global('img_bytes')) | |
| self.set_global(key='predicciones', value=proceso.prediccion) | |
| def archivo_expander(self, section): | |
| archivo_expander = section.expander( | |
| expanded=False, | |
| label="Desde su galería" | |
| ) | |
| _archivo = archivo_expander.file_uploader( | |
| label="GALERIA", | |
| accept_multiple_files=False, | |
| label_visibility="visible" | |
| ) | |
| if (archivo_expander.button(label="Cargar Archivo", help="Suba un archivo.", | |
| type="secondary", use_container_width=True) and _archivo is not None): | |
| self.obtener_bytes(_archivo) | |
| def camara_expander(self, section): | |
| camara_expander = section.expander( | |
| expanded=False, | |
| label="Desde su cámara" | |
| ) | |
| _captura = camara_expander.camera_input( | |
| label="CAMARA", | |
| label_visibility="visible" | |
| ) | |
| if (camara_expander.button(label="Cargar Captura", help="Tome una fotografía.", | |
| type="secondary", use_container_width=True) and _captura is not None): | |
| self.obtener_bytes(_captura) | |
| def preview_expander(self, section): | |
| preview = section.expander( | |
| expanded=True, | |
| label="Todo listo" | |
| ) | |
| if self.get_global('img_bytes', None) is not None: | |
| preview.image( | |
| image=self.get_global('img_bytes'), | |
| caption="Su imagen", | |
| use_column_width="auto", | |
| channels="RGB", | |
| output_format="auto" | |
| ) | |
| if preview.button(label="LAUNCH", help="Procesar imagen", | |
| type="secondary", use_container_width=True): | |
| self.procesar_imagen() | |
| def config_expander(self, section): | |
| modelo = section.text_input( | |
| label="MODELO", | |
| value=self.get_global('settings').get('model'), | |
| key=None, | |
| help=None, | |
| on_change=None, | |
| disabled=False, | |
| label_visibility="visible" | |
| ) | |
| tokenizer = section.text_input( | |
| label="TOKENIZER", | |
| value=self.get_global('settings').get('tokenizer'), | |
| key=None, | |
| help=None, | |
| on_change=None, | |
| disabled=False, | |
| label_visibility="visible" | |
| ) | |
| if section.button(label="Configurar", help="Actualice configuraciones", | |
| type="secondary", use_container_width=True): | |
| self.actualizar_modelo_tokenizer(modelo, tokenizer) | |
| def agregar_card_inputs(self, columna): | |
| card_inputs = columna.container() | |
| source_tab, config_tab = card_inputs.tabs( | |
| ["Imagen", "Configuraciones"] | |
| ) | |
| self.archivo_expander(source_tab) | |
| self.camara_expander(source_tab) | |
| self.config_expander(config_tab) | |
| self.preview_expander(card_inputs) | |
| def agregar_card_outputs(self, columna): | |
| card_teoria = columna.container() | |
| result_tab, process_tab = card_teoria.tabs( | |
| ["Resultado", "Proceso"] | |
| ) | |
| if self.get_global('img_output', None) is not None: | |
| result_tab.image( | |
| image=self.get_global('img_output'), | |
| caption="Su resultado", | |
| use_column_width="auto", | |
| channels="RGB", | |
| output_format="auto" | |
| ) | |
| if self.get_global('predicciones', None) is not None: | |
| result_tab.success(body=self.get_global('predicciones'), icon=None) | |
| def build(self): | |
| # secciones | |
| columna_inputs, columna_outputs = self.get_body().columns(2, gap="small") | |
| self.agregar_card_inputs(columna_inputs) | |
| self.agregar_card_outputs(columna_outputs) | |
| if __name__ == "__main__": | |
| Live_Demo(init_page=True).build() | |