Documento Defenza ExternaGSF
Documento Defenza ExternaGSF
Documento Defenza ExternaGSF
La Paz – Bolivia
2023
DEDICATORIA
This document presents the undergraduate project that focuses on the design of a digital
dermatoscope for the detection and classification of melanoma and melanocytic nevi skin
lesions. The main objective is to contribute to the advancement of biomedical engineering
in Bolivia.
The project is based on the use of digital image processing and convolutional neural
networks to improve accuracy and efficiency in the detection and classification of skin
lesions. This is of great importance, as early diagnosis of skin diseases such as melanoma
can save lives.
It is expected that this project will have a significant impact on Bolivian society. The digital
dermatoscope will enable more precise and rapid detection of skin lesions, facilitating
early diagnosis and timely treatment of diseases such as melanoma. Additionally, being
a project developed in Bolivia, it will contribute to the advancement of biomedical
engineering in the country and foster research and technological development in the field
of health.
ÍNDICES
CAPÍTULO I
MARCO INTRODUCTORIO
1. INTRODUCCIÓN ........................................................................................................ 1
1.1 ANTECEDENTES .................................................................................................. 2
1.1.1 ANTECEDENTES INSTITUCIONALES ....................................................... 2
1.1.2 ANTECEDENTES TECNOLÓGICOS .......................................................... 2
1.1.3 ANTECEDENTES ACADÉMICOS ............................................................... 3
1.2 JUSTIFICACIÓN. ................................................................................................... 3
1.2.1 JUSTIFICACIÓN ACADÉMICA. ....................................................................... 3
1.2.2 JUSTIFICACIÓN TÉCNICA. ............................................................................ 3
1.2.3 JUSTIFICACIÓN TECNOLÓGICA. .................................................................. 4
1.2.4 JUSTIFICACIÓN SOCIAL. ............................................................................... 4
1.3 PLANTEAMIENTO DEL PROBLEMA .................................................................... 5
1.3.1 IDENTIFICACIÓN DEL PROBLEMA. .............................................................. 5
1.3.2 FORMULACIÓN DEL PROBLEMA. ................................................................. 5
1.4 OBJETIVOS........................................................................................................... 6
1.4.1 OBJETIVO GENERAL. .................................................................................... 6
1.4.2 OBJETIVOS ESPECÍFICOS. ........................................................................... 6
1.5 DELIMITACIONES................................................................................................. 6
1.5.1 LÍMITES........................................................................................................... 6
1.5.2 ALCANCES. .................................................................................................... 7
1.6 APORTE ................................................................................................................ 7
1.7 METODOLOGÍA .................................................................................................... 8
1.7.1 Tipo de estudio ................................................................................................ 8
1.7.2 Metodología y diseño: ...................................................................................... 8
1.7.3 Técnicas de investigación: ............................................................................... 9
CAPÍTULO II
MARCO TEÓRICO
MARCO PRÁCTICO
CAPÍTULO I
MARCO INTRODUCTORIO
CAPÍTULO II
MARCO TEÓRICO
MARCO INTRODUCTORIO
CAPÍTULO II
MARCO TEÓRICO
EVALUACIÓN DE LA PROPUESTA
MARCO INTRODUCTORIO
1. INTRODUCCIÓN
Las enfermedades dermatológicas son enfermedades comunes en el mundo. En el
país existen altos índices de incidencia de diferentes enfermedades dermatológicas,
siendo un problema de salud pública en Bolivia, como en muchos otros países. Aunque
no se han realizado muchos estudios específicos sobre las lesiones cutáneas en Bolivia,
según el estudio de oncología realizado por el Ministerio de Salud en el 2015, se tiene
que el cáncer de piel es uno de los tipos de cáncer más comunes en el país. Las lesiones
cutáneas son un indicador importante del cáncer de piel y su detección temprana es clave
para un tratamiento exitoso. De tal manera, tener métodos de determinación de lesiones
cutáneas es importante para la población, si bien existen médicos dermatólogos capaces
de determinar las enfermedades cutáneas, faltan métodos de corroboración que apoyen
al diagnóstico.
1.1 ANTECEDENTES
El cáncer de piel es uno de los tipos de cáncer más comunes en todo el mundo, y
el melanoma es la forma más agresiva de este cáncer. La detección temprana es
crucial para su tratamiento y supervivencia, por lo que el desarrollo de nuevas
tecnologías para su detección es esencial. Por lo cual se propone el diseño de un
dermatoscopio digital que utiliza técnicas de procesamiento digital de imágenes y
redes neuronales convolucionales para la detección y clasificación de lesiones
cutáneas de melanoma y nevo melanocítico. Según estudios previos, el uso de la
dermatoscopia digital junto con el procesamiento de imágenes puede aumentar
significativamente la precisión del diagnóstico de cáncer de piel, mientras que las
redes neuronales convolucionales han demostrado ser muy eficaces en el
procesamiento y análisis de imágenes médicas. (Hernández-Guerra et al., 2020;
Esteva et al., 2017). Lo que se plantea es mejorar la detección temprana y la
precisión en el diagnóstico de cáncer de piel en Bolivia y, en última instancia,
contribuir a reducir la tasa de mortalidad asociada a esta enfermedad.
3
1.2 JUSTIFICACIÓN.
1.4 OBJETIVOS
- Implementar una base de datos con lesiones aplicado a las redes neuronales
convolucionales.
- Generar una página web interactiva con el usuario, donde se pueda introducir
datos del paciente y funcione a la par con la red neuronal convolucional.
1.5 DELIMITACIONES
1.5.1 LÍMITES.
1.5.2 ALCANCES.
1.6 APORTE
El proyecto presenta un aporte significativo para la detección temprana del melanoma,
una enfermedad que representa un importante problema de salud pública en Bolivia y a
nivel mundial. Según la OMS (Organización Mundial de la Salud) (Organización Mundial
8
1.7 METODOLOGÍA
CAPÍTULO II
MARCO TEÓRICO
2.1.1 Melanoma
El melanoma es una de las formas más agresivas de cáncer de piel y es
responsable de la mayoría de las muertes por este tipo de enfermedad. El
melanoma es un tipo de cáncer de piel que se desarrolla a partir de los
melanocitos, células que producen pigmento en la piel (OMS, 2023). Según un
estudio realizado en Bolivia en 2020, se observó un aumento en la incidencia de
melanoma en los últimos años, y se espera que esta tendencia continúe (Loayza
& Núñez, 2020). Los factores de riesgo para el melanoma incluyen la exposición
prolongada al sol, antecedentes familiares de la enfermedad, piel clara y la
presencia de lunares atípicos. El diagnóstico temprano del melanoma es
fundamental para su tratamiento y curación, por lo que es importante estar alerta
a cualquier cambio en la piel y acudir a un especialista si se sospecha de la
presencia de esta enfermedad.
DIFERENCIAR MELANOMA
ABCDE DESCRIPCIÓN NEVO MELANOMA
La forma de la
mitad es
diferente a la otra
Asimetría mitad
Son irregulares o
Borde borrosos
Tonalidad
desigual colores
marrón, negro,
Color gris u otros
El tamaño es
Diámetro mayor a 4mm
Cambia de
tamaño, forma
color y se
Evolución presentan más
12
2.2 DERMATOSCOPIA.
La dermatoscopia, es una técnica no invasiva que permite una evaluación más precisa
de las lesiones de la piel en comparación con la evaluación visual convencional. Esta se
basa en la utilización de un instrumento óptico llamado dermatoscopio.
Fuente: Dermengine
Fuente: Melanomauk
Como el proyecto conlleva dos partes cabe mencionar sobre el estado del arte de los
dermatoscopios digitales, estos han evolucionado mucho en los últimos años, gracias a
15
DermLite DL4, que cuenta con luz polarizada y no polarizada, ajuste de brillo,
aumento 10x y conexión a dispositivos móviles su costo es de 1100 USD.
Fuente: Dermatoscope
Heine Delta 20T, con luz polarizada y no polarizada, aumento 10x y diseño
ergonómico su costo es de 1400 USD.
Fuente: Surgicalhouse
MoleScope II, que se adhiere a un dispositivo móvil, cuenta con luz polarizada y no
polarizada, aumento 20-60x y opción de guardar imágenes en la aplicación móvil su
costo es de 1500 USD.
16
Fuente: MoleScope
Estos dispositivos tienen características esenciales para el médico, pero sus costos son
una contra al momento de adquirirlos sin contar que no existen proveedores en el país.
Las CNN también utilizan capas de submuestreo, conocidas como capas de pooling, que
reducen la dimensionalidad de las características extraídas y preservan las
características más relevantes. Estas capas toman pequeñas regiones de las
19
características y las resumen en un solo valor, lo que reduce la cantidad de datos y ayuda
a la red neuronal a ser más eficiente computacionalmente. Además, las CNN suelen
incluir capas totalmente conectadas al final de la red, que se encargan de la clasificación
final de las imágenes en diferentes categorías. Estas capas utilizan los patrones
aprendidos por las capas de convolución y pooling para tomar decisiones de clasificación
basadas en la presencia o ausencia de características específicas en las imágenes. En
resumen, las CNN utilizan filtros convolucionales, capas de pooling y capas totalmente
conectadas para aprender y extraer características relevantes de las imágenes, y
posteriormente clasificarlas en diferentes categorías.
Fuente: TopBots
20
Fuente: MobileNet-Tiny
21
2.6 MICROCONTROLADORES. –
Los microcontroladores son dispositivos electrónicos altamente integrados que combinan
un microprocesador, memoria y periféricos en un solo chip. Son componentes esenciales
en muchos sistemas electrónicos que van desde electrodomésticos, automóviles y
dispositivos médicos.
Fuente: Microcontroladores2
Los microcontroladores suelen tener dos tipos de memoria: ROM (memoria de solo
lectura) para el almacenamiento permanente de programas y RAM (memoria de acceso
22
2.6.1 RASPBERRY
Un microcontrolador popular es Raspberry Pi, este dispositivo se compone de una
serie SBC (Single Board Computers) desarrollada por la Fundación Raspberry Pi,
que se ha convertido en una herramienta popular y versátil para varios proyectos
informáticos. (Upton y Halfacree, 2014), los SBC de Raspberry Pi son conocidos
por su diseño compacto, bajo costo y enfoque en el avance de la educación
informática. Estos dispositivos ofrecen una amplia gama de especificaciones,
incluidos procesadores ARM multinúcleo, capacidad de memoria variable y
opciones de almacenamiento como tarjetas microSD. Además, la Raspberry Pi
cuenta con varios puertos como USB, Ethernet, HDMI y GPIO que te permiten
conectarte a periféricos externos y realizar proyectos electrónicos.
2.6.2. ESP-32
ESP32 es un microcontrolador de bajo consumo y alto rendimiento desarrollado
por “Espressif Systems”. Tiene muchas características excelentes que lo
convierten en una opción popular para proyectos de Internet de las cosas (IoT) y
aplicaciones inalámbricas. Una de las características sobresalientes del ESP32 es
su capacidad de conectividad, compatible con Wifi y Bluetooth de modo dual, lo
que permite una amplia gama de opciones de comunicación inalámbrica. Además,
ESP32 está equipado con una CPU de doble núcleo de 32 bits que funciona hasta
a 240 MHz para garantizar un alto rendimiento y potencia informática. Además,
tiene una amplia gama de interfaces periféricas como UART, SPI, I2C, PWM y
GPIO, lo que facilita la conexión con otros dispositivos y sensores.
Fuente Altroniks
24
2.6.3 ARDUINO
Arduino consta de varias placas de desarrollo que brindan diferentes funciones
para sus proyectos electrónicos. Una de las características distintivas de las placas
Arduino es su facilidad de uso y programación. un entorno de desarrollo integrado
(IDE) que proporciona una interfaz fácil de usar para escribir código y cargarlo en
su placa.
Fuente: Bricolage
2.7 CAMARA. –
Las cámaras son dispositivos que capturan imágenes o videos mediante la utilización de
un sensor de imagen. El proceso básico de funcionamiento implica que la luz pasa a
25
través del objetivo de la cámara, que enfoca la luz sobre el sensor de imagen. El sensor
convierte la luz en señales eléctricas que se procesan para generar una imagen digital.
Fuente: Foto24
● CCD
● CMOS
Para entender un poco más sobre estas cámaras, hablaremos de las que existen
actualmente y parte de sus características
● Cámara Raspberry Pi v1: Esta fue la primera versión de la cámara lanzada por
la Raspberry Pi Foundation. Tiene una resolución de 5 megapíxeles y puede
capturar imágenes fijas y videos.
● Cámara Raspberry Pi v2: Esta versión mejorada tiene una resolución de 8
megapíxeles y también permite capturar imágenes fijas y videos. Cuenta con
un sensor Sony IMX219 y se conecta a la placa Raspberry Pi mediante un
cable plano flexible.
● Cámara Raspberry Pi NoIR: Esta versión es similar a la cámara v2, pero está
diseñada específicamente para aplicaciones de visión nocturna. Cuenta con un
filtro infrarrojo removible, lo que permite capturar imágenes en condiciones de
poca luz o con iluminación infrarroja.
● Cámara Raspberry Pi HQ: La cámara Raspberry Pi HQ (High Quality) fue
lanzada en 2020 y presentó una mejora significativa en la calidad de imagen.
Tiene un sensor Sony IMX477 de 12.3 megapíxeles y permite la captura de
imágenes fijas y videos de alta resolución. También incluye un sistema de
enfoque ajustable.
Ventajas:
Limitaciones:
Las cámaras digitales, incluida la del Raspberry Pi, han demostrado ser
herramientas valiosas en dermatología, captando imágenes de alta resolución,
facilitando la documentación y el diagnóstico, y habilitando el análisis y
procesamiento de imágenes para detectar enfermedades de la piel. A pesar de las
limitaciones inherentes a las cámaras de bajo costo, el Raspberry Pi ofrece una
solución accesible y versátil para la adquisición y análisis de imágenes
dermatológicas, abriendo nuevas posibilidades en el campo de la telemedicina y
el desarrollo de sistemas de apoyo al diagnóstico.
Fuente: ELKIN
31
Los Leds son dispositivos de estado sólido que emiten luz cuando una corriente eléctrica
pasa a través de ellos. Están compuestos por capas de materiales semiconductores,
donde se crea una unión pn (unión de tipo p y tipo n) que permite el flujo de corriente en
una sola dirección. Al aplicar una tensión adecuada a través de la unión pn, los electrones
en la capa de tipo n adquieren energía suficiente para saltar a la capa de tipo p, liberando
fotones en el proceso. La longitud de onda de la luz emitida está determinada por las
propiedades del material semiconductor y puede variar desde el ultravioleta hasta el
infrarrojo, pero los Leds más comunes emiten luz visible.
32
Fuente PygmalionTech
Fuente: LC LED
En los módulos RGB, cada LED de color primario se controla de forma independiente
mediante circuitos electrónicos integrados. Esto permite ajustar la intensidad luminosa de
cada color y crear efectos dinámicos, como transiciones suaves, cambios de color y
patrones intermitentes. Los módulos RGB también pueden ser controlados mediante
33
Los objetivos de ampliación suelen expresarse como una relación numérica, como 10x,
40x, 100x, entre otros. Esta cifra indica cuántas veces se aumenta el tamaño de la
muestra.
Fuente: Wordpress
2.10.1.1 PYTHON
Figura 2.22 Logo Python
Fuente: Ilustre
Al ser un lenguaje de programación de código abierto y libre, quiere decir que cualquier
persona puede adquirir y utilizar, así crear sus propios programas con ayuda de las
diferentes librerías con las que cuenta.
2.10.2 BACKEND
El back-end del sitio web consiste en un servidor, una aplicación y una base de datos.
(“¿Qué es Back end y Front end? – NovaTech”) Se toman las imágenes, los datos del
paciente y se procesa con la red neuronal convolucional, dando al doctor los resultados
del procesamiento con la red neuronal.
En síntesis, el back-end se refiere aquellos aspectos que las personas no pueden ver en
el navegador, entre ellos el servidor y la base de datos.
Django se encarga de gran parte de las molestias del desarrollo web, por lo que puede
concentrarse en escribir su aplicación sin necesidad de comenzar de nuevo el proceso
con la base de datos y el controlador del framework. Django fue diseñado para ayudar a
los desarrolladores a llevar la aplicación desde el concepto hasta su finalización lo más
rápido posible. (“Udemy Gratis: Curso para crear una aplicación web con Django -
Facialix”)
Fuente: Django
Arquitectura
Modelo
Una de las partes más potentes de Django es su modelo de datos. Cada modelo creado
se mapea en diferentes tablas en la base de datos. Esto permite aislar la base de datos
del código y olvidarse de los diferentes querys.
Vista
36
2.10.3 FRONT-END
Esta es la cara del proyecto, lo que las personas llegan a ver, para desarrollarlo se incluye
el diseño y ciertos lenguajes de programación. Además, hay que destacar su
característica funcional, ya que el usuario puede interactuar con el sitio web. Siendo así
cumplir altos estándares de usabilidad y estética. Se lo puede conocer como la capa que
se encuentra encima del Back-end, por sus menús desplegables, imágenes, iconos,
colores, elementos gráficos, animaciones, etc.
2.10.3.1 React
Para el front-end se usará React, esta una biblioteca de JavaScript popular para construir
interfaces de usuario interactivas y reactivas. Permite crear componentes reutilizables
que representan partes específicas de la interfaz de usuario y los actualiza de manera
eficiente cuando cambian los datos.
Fuente: Aulab
37
Fuente: Ubuntu
Después de la instalación, se podrá abrir Visual Studio Code y comenzar a utilizarlo como
editor de código para desarrollar aplicaciones en diferentes lenguajes de programación.
Este editor de código es de gran utilidad ya que se puede personalizar según las
preferencias y aprovechar las numerosas extensiones disponibles para ampliar su
funcionalidad.
CAPÍTULO III
MARCO PROPOSITIVO O
INGENIERÍA DEL PROYECTO
38
CAPÍTULO III
MARCO PRÁCTICO
3. SOLUCIÓN PROPUESTA
3.1 DESCRIPCIÓN.
El proyecto se plantea realizar por tres partes, la primera sería la captura de la imagen
con la lesión.
que facilitará procesamiento de imágenes y será útil para construir la red neuronal
convolucional.
● Diseño de arquitectura y clasificación de datos. -
Para el diseño de la arquitectura se utilizará Google colabs, con el framework de
Deep learning “Tensor Flow”, donde se realizará el entrenamiento de la red
neuronal, ya que el dataset cuenta con imágenes procesadas y etiquetas de las
lesiones más comunes.
Para finalizar se tendrá la clasificación de datos donde presentará el tipo de lesión.
3.2 DIAGRAMAS
3.4.1 ALIMENTACIÓN
3.4.3 CÁMARA
3.4.4 ILUMINACIÓN. –
Para que exista una fotografía con mejor detalle de la zona, se requerirá luces led
de color blanco RGB, se necesita esto para adquirir la pigmentación de la lesión, también
para mejorar la imagen como un procesamiento de la imagen.
3.5.1 BATERÍAS
PROTECCIÓN SI SI
BATERÍA DE POLÍMERO DE
TIPO BATERÍA PORTATIL (LI-ION)
LITIO (LI-PO)
Procesador ESP32 (dual Core, 32-bit) Broadcom BCM2711 (quad core, 64-bit)
5 V o 3.3 V (dependiendo de la
Voltaje de entrada 5V configuración)
3.5.3 CÁMARA
Parte central del proyecto es la cámara para obtener las imágenes necesarias de la
lesión, en este caso, se consideran estas cámaras de diferentes módulos.
Tabla 3.3 Comparación de Cámaras
3.5.4 ILUMINACIÓN. –
Como parte complementaría del dermatoscopio debe tener una luz blanca, en este caso
se consideraron estas opciones:
Tabla 3.4 Comparación de led
Brillo ajustable Sí No
Consumo de
energía Variable Variable
Directo a una
fuente de
alimentación o
Requiere controlador o resistencia
Conexión microcontrolador compatible limitadora
Iluminación decorativa,
Uso común efectos de luz, pantallas LED Iluminación general
Capacidad de crear efectos Mayor
de luz y colores disponibilidad y
Ventajas personalizados menor costo
Requiere controlador Limitado a una sola
Desventajas adicional tonalidad de color
Fuente Elaboración Propia, 2023
Lente de
Lente Ocular Lente Objetivo aumento
Característica 10x 40x 100x
Aumento de la
imagen 10x 40x 100x
Distancia de
enfoque 20mm 300mm 500mm
Observación de Aumento
Observación detalles más como lente
Aplicación general pequeños de cámaras
Observación
Exploración Observación detallada, de
inicial, detallada, análisis
Uso búsqueda de análisis microscópic
recomendado objetos microscópico o
En este caso se puso a prueba los diferentes lentes de aumento, se terminó a usar el
lente ocular más que todo por la distancia a enfocar y el amplio campo de visión.
3.6.1 BATERÍA
Como parte inicial se tiene la batería, esta será la Xiaomi Mi Power Bank 3 10000
mAh
Figura 3.7 Xiaomi Mi Power Bank 3
Fuente: Xiaomi
3.6.2 MICROPROCESADOR
Fuente: Bricolabs
Principalmente en este apartado se hablará sobre cómo funcionan los procesos
de instalación de librerías el raspberry mediante comandos de activación, el código
para adquirir las imágenes y también sobre los pasos para poder enviar las
imágenes a la base de datos.
49
3.6.2.1 LIBRERÍAS
Para el funcionamiento de cámara se requiere de la instalación de librerías dentro
del raspberry.
1. Dentro de la consola de comandos ingresar el siguiente comando:
cd Desktop.
2. El comando nos llevará al escritorio del raspberry, donde ingresamos los
siguientes códigos.
pip3 install picamera (instala librerías de la cámara).
pip3 install pyrebase (instala librerías de fire data base).
Con la obtención del código de enlace se podrá obtener las fotos tomadas con el
dermatoscopio y se podrá visualizar, descargar y analizar desde una página web.
Para luego poder implementarla a la página web de procesamiento con redes
neuronales convolucionales.
3.6.2.3 CÓDIGO. –
Para desarrollar el funcionamiento de la cámara se desarrolló un código basado
en un diagrama de bloques, que da instrucciones de como activar la cámara, el
código se lo desarrolló Python.
Esta línea importa la biblioteca pyrebase, que proporciona una interfaz de Python
para interactuar con los servicios de Firebase.
Figura 3.12 Importación de biblioteca que conecta con Firebase
En esta parte se establecen los pines GPIO como entradas con resistencia pull-
down habilitadas. Esto significa que los pines están en estado bajo de forma
predeterminada y leerán alto cuando se conecten a una fuente de voltaje.
3.6.3 CÁMARA
Fuente: Ja-Bots
inconvenientes salieron del tamaño del lente del sensor, al ser muy pequeño no se
adquiere una imagen de buena calidad.
Por tal motivo, se quitó el lente de la cámara, quedando expuesto el sensor, al realizar
pruebas con los objetivos de aumento no se tenía un enfoque fijo, por lo cual se
procedió a realizar un soporte mediante impresión 3D para poder acoplar un lente de
mayor ángulo, dicho lente obtenido de una cámara web.
Fuente: Logitech
Para finalizar se hicieron pruebas realizando esta adaptación, teniendo una mejor
calidad de la imagen y un enfoque óptimo.
54
Figura 3.19 Comparación de imagen sin filtros (Izquierda) contra imágenes con filtros
(Derecha)
Para el diseño del proyecto se tiene el siguiente diagrama donde se detalla los pines
GPIO a utilizar para la activación de los botones y la conexión de la cámara.
3.6.6 ILUMINACIÓN
En este diseño para regular el brillo se implementaron 12 diodos Leds de alto brillo,
se utiliza un transistor NPN BC547 en conjunto con un potenciómetro. Los ánodos
de los Leds se conectan en paralelo, mientras que a cada cátodo se le agrega una
resistencia de 220 ohm para limitar la corriente. La conexión de los cátodos se
dirige al colector del transistor BC547, y su emisor se conecta al terminal negativo
de la fuente de alimentación. El potenciómetro, un dispositivo de 100k ohmios, se
utiliza para regular el brillo de los Leds. Su terminal central se conecta a la base
del transistor BC547 a través de una resistencia de 1k ohmio. Uno de los
terminales exteriores del potenciómetro se conecta al terminal positivo de la fuente
de alimentación, mientras que el otro se conecta al terminal negativo (tierra). La
salida del potenciómetro se conecta al terminal de base del transistor a través de
la resistencia de 1k ohmio.
57
3.6.7 CARCASA
3.7.1 DATASET
El requisito principal para diseñar redes neuronales convolucionales es una cantidad
elevada de imágenes, con un diagnóstico ya realizado. Para conseguir dichas imágenes
se hizo una búsqueda en la web y se llegó al repositorio de ISIC, donde se tiene una base
de datos considerables de uso libre, este cuenta con imágenes, diagnósticos y datos
necesarios para generar un dataset propio.
Fuente: ISIC-archive
Por medio se esté dataset se descargaron las imágenes para hacer la cimentación de la
red neuronal, donde se hizo una selección manual de 1300 imágenes que muestran
características típicas de las lesiones. Se las almacenaron y se realizó un
preprocesamiento de imagen a cada una de ellas, donde se realizó otra revisión para
seleccionar las imágenes que aporten más al desarrollo de la red neuronal.
60
TIPO CANTIDAD
mel 505
Nv 495
TOTAL 1000
Fuente Elaboración Propia, 2023
Para utilizar esta herramienta es fácil de ingresar poner una cuenta de Google y generar
una base de datos, donde se cargan las imágenes, se selecciona el tamaño de las
imágenes (380 x 380), se define el nombre de las etiquetas y se empieza a hacer el
dataset (Figura 50).
La herramienta ayuda a seleccionar las imágenes que nos dan información para poder
generar el dataset, en caso de que una imagen no tenga una buena resolución o poca
información, nos facilita herramientas para poder modificar saturación, brillo y nitidez de
la imagen, hasta obtener el mayor detalle de la zona.
Finalmente, este software nos da las opciones de extraer todas las imágenes con los
parámetros configurados, sus respectivas etiquetas y cambios realizados. Al momento
de extraer nos da la opción de generar “Data augmentation”, también nos da la opción de
dividir nuestro dataset en “test”, “validación” y “train” datos importantes para generar la
red neuronal convolucional
Como este software apoya a generar datos con Data augmentation, se generaron más
imágenes para “train” así expandir la cantidad de datos, También se puede ir añadiendo
imágenes así mejorar cada nueva versión. Con el primer dataset de cimentación se
obtuvo un aumento de datos llegando a obtener 1705 imágenes repartidas como en la
tabla que se presenta a continuación.
1705 100%
Fuente Elaboración Propia, 2023
Instalación de librerías
Para hacer el código es importante descargar e instalar las librerías estas serán
necesarias para realizar todos los procesos de detección clasificación y entrenamiento
de la red neuronal convolucional. Dentro de estas librerías podemos mencionar Keras,
Tensorflow, OpenCV, Pandas, entre otras, requeridas para hacer el entrenamiento del
modelo.
Etiquetado
Esta parte de código crea un archivo de mapa de etiquetas llamado "label_map.pbtxt", el
mismo que se obtuvo de RobotFlow. Dicho archivo contiene la información de las clases
en formato pbtxt. Cada clase se define como un elemento "ítem" con su nombre e ID
correspondiente (Mel - nv). Este archivo de mapa de etiquetas se utiliza comúnmente en
tareas de detección de objetos para asociar nombres de clases con sus identificadores
únicos en el modelo.
3.7.3.1 Transfer-learning
Como el planteamiento del proyecto fue desarrollar la red neuronal mediante
transfer learning, se seleccionó MobileNetV2, este es una arquitectura de red neuronal
convolucional diseñada específicamente para dispositivos móviles y entornos con
recursos computacionales limitados. Ofrece un equilibrio entre tamaño, eficiencia y
rendimiento, lo que lo hace adecuado para una variedad de aplicaciones de visión por
computadora en dispositivos móviles.
64
Explicación de funcionamiento
● Cantidad de clases del modelo: En este caso se tiene dos tipos de clases,
que se pone en función estas son las ya mencionada anteriormente Mel y
Nv.
● El tamaño del batch size, entre más grande más costo computacional va a
necesitar en el proceso de entrenamiento, pero a su vez entrenará más
rápido. Para hacer funcionar de manera correcta se configuró un batch size
de 20
EPOCH
Figura 3.35 Configuración de pasos de entrenamiento
VERSIONES
● Versión 1
Para la primera versión de la red neuronal se la entrenó con las 1000
imágenes obtenidas, a estas imágenes no tuvieron un “data augmentation”,
al generar el modelo con esa cantidad de imágenes, el modelo tenía
confusión en su aprendizaje ya que clasificaba con las dos opciones una
imagen que contaba con una lesión. Esta versión encontraba la ubicación
de la lesión, pero la clasificaba como un 100% y un 36 nevo melanocito,
dándonos a entender que el modelo no estaba funcionando correctamente.
66
● Versión 2
Para la segunda versión se realizó un data augmentation, en este caso se
obtuvieron 1400 imágenes, con este el modelo mejoró al momento de hacer
las clasificaciones, esta mejora es por tener mayor cantidad de imágenes,
por lo tanto, se tiene en consideración que para mejorar el modelo es
imprescindible incrementar mayor cantidad de datos. En la figura de a
continuación se muestra como el modelo mejoró obteniendo una sola
clasificación correcta y con acierto de 64%, este valor es aceptable, pero se
puede mejorar.
● Versión 3
Finalmente, se volvió a entrenar el modelo con las imágenes obtenidas con
la nueva base de datos creada, que son imágenes obtenidas del
67
Como se cargaron las imágenes del nuevo dataset se pueden hacer las pruebas
necesarias, para verificar su funcionamiento, como se puede ver en las figuras de a
continuación de tiene a la derecha la imagen obtenida del dermatoscopio y a la
izquierda la misma imagen, pero procesada con la red neuronal, dando un porcentaje
de acierto de 74%. Este valor es así por la mínima cantidad de datos agregados, con
esas características, para poder mejorar hay que insertar mayor cantidad de datos.
Con las versiones explicadas se revisarán las gráficas de cómo funciona el modelo de
clasificación, estas gráficas son obtenidas al momento de hacer el entrenamiento, estas
indican como el modelo va evolucionando con relación a parámetros ambiguos, es decir
que no se tiene rangos específicos de dichos valores, solo se toma en cuenta valores
mínimos o máximos. También se obtiene la validación del modelo comparando imágenes
del dataset de validación contra los datos de entrenamiento.
Aprendizaje
Localización
Pérdida de regulación
70
Pérdida total
Clasificación
Una vez entrenado podemos realizar la validación del modelo, como el dataset se
lo dividió en las tres secciones, test, train y Valid. Se utiliza el archivo de Valid para
ver el funcionamiento del modelo. Se generó un código para ver en gráficas como
el modelo predice imágenes, las otras imágenes ya clasificadas almacenadas en
Valid.
72
VALIDACIÓN
PORCENTAJE DE
ISIC ACIERTO ENTRENAMIENTO VALIDACIÓN
NV
lesion_id IL_0591796 ENTRENAMIENTO = 87%
diagnosis nevus NV
VALIDACIÓN = 100%
NV
lesion_id IL_7365600 ENTRENAMIENTO = 96%
diagnosis nevus NV
VALIDACIÓN = 100%
MEL
lesion_id IL_3601366 ENTRENAMIENTO = 80%
diagnosis MELANOMA MEL
VALIDACIÓN = 100%
MEL
lesion_id IL_7535821 ENTRENAMIENTO = 81%
diagnosis MELANOMA MEL
VALIDACIÓN = 100%
MEL
lesion_id IL_ IL_3638805 ENTRENAMIENTO = 60%
diagnosis nv NV
VALIDACIÓN = 100%
Con la tabla anterior vemos cómo funciona el modelo, tiene un porcentaje de acierto
arriba de 75 % estando dentro de parámetros de redes neuronales funcionales, cabe
73
mencionar que la clasificación puede llegar a confundirse, Esto ocurre debido a la falta
de imágenes del dataset, al aumentar imágenes la red neuronal capturara más
características de ambas lesiones y podrá mejorar la clasificación, según las pruebas
realizadas se tiene que de 5 clasificaciones una se confunde con índices bajo de 60%,
por lo tanto ese porcentaje de clasificación no es confiable, es decir, si en la clasificación
se presenta un porcentaje por debajo de 70% este no es confiable, por lo tanto la
clasificación es errónea.
Con esto podemos llegar a determinar que la red neuronal está funcionando con un rango
alto de clasificación, para mejorar este valor de clasificación se debe incrementar los
datos con características del medio, siendo así se generará un modelo más confiable y
seguro.
VALORES DE PREDICCIÓN
POSITIVO NEGATIVO
POSITIVO 97 21
VALORES 74
ACTUALES NEGATIVO 37
Fuente Elaboración Propia, 2023
La matriz de confusión tiene una estructura de 2x2 por la clasificación binaria. Los
elementos de la matriz representan los siguientes aspectos:
3.8.1 DISEÑO
Para el diseño se tomó en cuenta las consideraciones propuestas por la metodología.
Gestor de base de datos: sqlite3, parte de Django.
IDE: El entorno de desarrollo integrado (IDE) de Visual studio code, intérprete de Python.
Bosquejos: para la creación de la interfaz se realizan bosquejos de cómo se debe realizar.
76
3.8.2 CODIFICACIÓN
Como se mencionó el apartado anterior el IDE será Visual Studio Code, por sus diferentes
ventajas.
Cuando se crea un proyecto nuevo en Django, una buena práctica de programación es
segmentarla por aplicaciones, donde se encuentres módulos similares, esto con el fin de
poder realizar reutilización
78
Además, se puede ver que se tiene 3 carpetas adicionales, estas con las aplicaciones.
▪ App1 Lesión: en donde se tiene el funcionamiento de la red neuronal
convolucional mediante el código de “inferencia”.
▪ App2 media: en donde se tiene las plantillas HTML utilizadas por el
sistema.
▪ App3 User que es donde se registra el login al sistema.
79
Una vez mostrados los directorios y archivos del proyecto, se procede a describir los
archivos más importantes y en donde se programó:
▪ setting.py
▪ models.py
En este archivo se crean las tablas de la base de datos en forma de clases, Django con
el archivo de mmange.py se encarga de crear las tablas o modificarlas.
▪ view.py
Este archivo se encarga de controlar el modelo MVC en el que se basa Django. En otras
palabras, es donde va la lógica de programación de Python para que el sistema pueda
mostrar las imágenes en plantillas HTML al usuario.
82
▪ urls.py
El archivo urls.py esta interrelacionado con el archivo view.py, este sucede así ya que en
este archivo se escriben las url’s del sistema
83
4. EVALUACIÓN DE LA PROPUESTA
En este apartado se comentará sobre los procesos que se realizan para ver el
funcionamiento correcto del proyecto, las características tecnológicas y naturales
involucradas, esto por medio de las diferentes metodologías propuestas.
Para almacenar las imágenes capturadas, se ha establecido una comunicación con una
base de datos en la nube. Esto facilita el acceso a las imágenes desde cualquier
dispositivo para su visualización, y también permite su carga en una página web que
interactúa con la red neuronal para el análisis y clasificación de las lesiones.
nevo melanocito de diversas fuentes, como bases de datos médicas y clínicas. Estas
imágenes se utilizaron para entrenar y validar la red neuronal convolucional, que es la
base del sistema de clasificación.
En el caso del dermatoscopio digital propuesto, los componentes y sus costos unitarios
son los siguientes:
● Visual Studio: Se utiliza el entorno de desarrollo integrado (IDE) Visual Studio, que
también es de código abierto y disponible de forma gratuita.
CONCLUSIONES Y RECOMENDACIONES
5. CONCLUSIONES Y RECOMENDACIONES.
5.1 CONCLUSIONES
PRIMER OBJETIVO
SEGUNDO OBJETIVO
TERCER OBJETIVO
− Se implementó una base de datos con lesiones cutáneas que fue utilizada para
entrenar y evaluar redes neuronales convolucionales. Esta base de datos
proporcionó los datos necesarios para el aprendizaje y clasificación de las
lesiones. Estas técnicas de aprendizaje automático permitieron al modelo de red
neuronal aprender características relevantes de las lesiones cutáneas a partir de
la base de datos previamente establecida. Esto contribuyó a una detección más
precisa y confiable, incluso en casos de lesiones con características sutiles o
difíciles de identificar visualmente. Los resultados obtenidos respaldan la
efectividad del dermatoscopio digital y el modelo de red neuronal convolucional
implementado. Durante las pruebas de validación, se calcularon métricas de
evaluación, como la sensibilidad, la especificidad y el valor predictivo positivo, que
demostraron la alta precisión y confiabilidad del sistema.
CUARTO OBJETIVO
QUINTO OBJETIVO
5.2 RECOMENDACIONES
REFERENCIAS BIBLIOGRÁFICAS.
TEXTOS O LIBROS
Cruz, E., Quispe, M. B., Pinto, K., & Flores, S. (2019). Prevalencia de nevos
melanocíticos en estudiantes universitarios de Cochabamba-Bolivia. Revista
Boliviana de Dermatología.
Alcalde, J. M., & Díaz, L. C. (2019). Cáncer de piel en Bolivia. Revista boliviana de
dermatología y medicina interna.
Cáceres, M. C., Alcoba, M., Aguilar, C., & Vera, E. (2018). Lesiones cutáneas en la
altitud: ¿Qué debemos saber? Revista Médica de La Paz.
Villarroel, C., Ortuño, E., Arze, M., & Gamarra, F. (2018). Incidencia del melanoma
cutáneo en Bolivia en los últimos 15 años. Gaceta Médica Boliviana.
Esteva, A., Kuprel, B., Novoa, R. A., Ko, J., Swetter, S. M., Blau, H. M., & Thrun, S.
(2018). (“Artificial Intelligence and Persuasion: A Construal-Level Account”)
(“10.1038/nature21056 - Sci-Hub'') (“Sci-Hub | Dermatologist-level classification of
skin cancer with deep ...”) Dermatologist-level classification of skin cancer with deep
neural networks. Nature.
Marchetti, M. A., Codella, N. C., Dusza, S. W., Gutman, D. A., Helba, B., Kalloo, A.,
... & Halpern, A. C. (2019). “Results of the 2016 International Skin Imaging
Collaboration International Symposium on Biomedical Imaging challenge:
Comparison of the accuracy of computer algorithms to dermatologists for the
diagnosis of melanoma from dermoscopic images.” (“Results of the 2016 International
Skin Imaging Collaboration ...”) JAMA dermatology.
Han, S. S., Kim, M. S., Lim, W., Park, G. H., Park, I. A., Chang, S. E., & Lee, D. Y.
(2020). Classification of the clinical images for benign and malignant cutaneous
tumors using a deep learning algorithm. Journal of the American Academy of
Dermatology.
Codella, N. C. F., Rotemberg, V., Tschandl, P., et al. (2018). “Skin lesion analysis
toward melanoma detection: A challenge at the 2017 international symposium on
biomedical imaging (ISBI), hosted by the international skin imaging collaboration
(ISIC).”(“[1710.05006] Skin Lesion Analysis Toward Melanoma Detection: A ...”)
(“Melanoma Detection Dataset | Kaggle”) In Proceedings of the IEEE International
Symposium on Biomedical Imaging. IEEE.
Kassianos, A. P., Emery, J. D., Murchie, P., Walter, F. M., & Hall, P. N. (2020).
“Smartphone applications for melanoma detection by community, patient and
generalist clinician users: A review.” (“[PDF] Smartphone applications for melanoma
detection by community ...”)British Journal of Dermatology.
95
McCarthy, S., Olszanski, A. J., Wirth, L. J., & Mardekian, J. (2018). VivaScope® 1500
and 3000 imaging systems in the evaluation of basal cell carcinoma and squamous
cell carcinoma: A systematic review. Journal of Skin Cancer, 2018.
Meyer, N. M., Schramm, S., Wulf, K., et al. (2020). Performance of artificial
intelligence-based image analysis for detection of cutaneous melanoma: A systematic
review and meta-analysis. Annals of Oncology.
Kawahara, J., BenTaieb, A., & Hamarneh, G. (2017). Deep features to classify skin
lesions. Proceedings of the IEEE Conference on Computer Vision and Pattern
Recognition Workshops, 2017. (“Kurt Keutzer | EECS at UC Berkeley”) (“Kurt Keutzer
| EECS at UC Berkeley”) (“DGRN: Image super-resolution with dual gradient
regression guidance”)
Esteva, A., Kuprel, B., Novoa, R. A., Ko, J., Sweater, S. M., Blau, H. M., & Thrun, S.
(2017). (“10.1038/nature21056 -“Sci-Hub | Dermatologist-level classification of skin
cancer with deep ...”) Dermatologist-level classification of skin cancer with deep
neural networks. Nature.
Ahmad, S., & Gupta, A. (2016). Skin lesion analysis towards melanoma detection: A
survey. IEEE Transactions on Medical Imaging.
PÁGINAS WEB
Argenziano, G., Cerroni, L., Zalaudek, I., Staibano, S., Hofmann-Wellenhof, R., &
Arpaia, N. et al. (2018). (“Improving diagnostic sensitivity of combined dermoscopy
and reflectance ...”) Accuracy in melanoma detection: A 10-year multicenter survey.
Journal Of the American Academy of Dermatology, Recuperado de.
https://doi.org/10.1016/j.jaad.2018.03.037
96
Guarneri, C., Costa, C., Conforti, C., & Giuffrida, R. (2018). Dermoscopy and skin
cancer: A review for the general practitioners. Dermatology Practical & Conceptual,
Recuperado de. https://doi.org/10.5826/dpc.0804a06
APÉNDICE
99
a) Poca experiencia
b) Experiencia moderada
c) Amplia experiencia
d) No estoy seguro
b) A veces
c) No, nunca
a) Sí, definitivamente
100
b) En cierta medida
c) No estoy seguro
101
El Dermatólogo utilizará las imágenes dermatológicas del Paciente con el propósito de:
El Paciente tiene los siguientes derechos en relación con sus imágenes dermatológicas:
El Paciente declara haber leído y entendido los términos y condiciones de este Contrato
y da su consentimiento para el uso de sus imágenes dermatológicas de acuerdo con lo
establecido anteriormente.
Fecha: Fecha:
104
ANEXO
105
Fuente: Propia
Fuente: Propia
Fuente: Propia
9. Seleccionar “Rules”
Fuente: Propia
108
Fuente: Propia
Fuente: Propia
Fuente: Propia
Fuente: Propia
Fuente: Propia
110
INSTALACIÓN DE RASPBERRY PI OS
La instalación de una Raspberry Pi implica adquirir los componentes necesarios, como
la placa, tarjeta microSD, fuente de alimentación y cables.
Fuente: Propia
Figura Selección de Os
111
Fuente: propia
● Luego, se prepara la tarjeta microSD, se descarga la imagen del sistema
operativo.
● Después se inserta la tarjeta en la Raspberry Pi, se conecta a una pantalla,
teclado y ratón, se enciende el dispositivo.
● A través de la configuración inicial del sistema operativo, se selecciona el idioma,
se establece la contraseña y se ajustan las configuraciones básicas. Una vez
completada la instalación, se puede explorar y utilizar la Raspberry Pi.
PYTHON
Figura Logo Python
Fuente: Ilustre
Fuente: Rasbian
2. Actualizar el sistema: Ejecutar el siguiente comando en la terminal para
actualizar los paquetes del sistema:
sudo apt update
3. Instalar el paquete de Python: Ejecutar el siguiente comando para instalar
Python:
sudo apt install python3
Este comando instalará Python 3, la versión más utilizada actualmente.
4. Verificar la instalación: Después de que se complete la instalación, puedes
verificarla escribiendo "python3" en la terminal y presionando “Enter”.
Instalación
Para realizar la instalación de Django se debe tener instalado Python, y también PIP,
como lo mencionado anteriormente. Seguido a esto para realizar la instalación se debe
poner una línea de comando en el sistema operativo, ya sea Windows, Mac Os o Linux.
Se ingresa la siguiente línea de comando
2. Crear una nueva aplicación de React: Abrir una terminal y entrar al directorio raíz
del proyecto de Django.
EDITOR DE CÓDIGO
Instalación en Windows:
Instalación en macOS:
2. Instalación en Linux:
● Una vez instalado, se puede ejecutar code en la terminal para abrir Visual
Studio Code.
115
ANEXO DATASHEET
116
117
118
119
ANEXO CÓDIGOS
Código Cámara
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
from datetime import datetime
from picamera import PiCamera
from time import sleep
import os
import pyrebase
firebaseConfig = {
'apiKey': "AIzaSyDzGCzQx7mZKCqssICQ2EhbYOjbhdtljYo",
'authDomain': "rpi-cam1412.firebaseapp.com",
'databaseURL': "https://rpi-cam1412-default-rtdb.firebaseio.com",
'projectId': "rpi-cam1412",
'storageBucket': "rpi-cam1412.appspot.com",
'messagingSenderId': "153486004440",
'appId': "1:153486004440:web:58b8bdf8912a044dad87ad",
'measurementId': "G-1DJ236R8QF"
}
firebase = pyrebase.initialize_app(firebaseConfig)
120
storage = firebase.storage()
camera = PiCamera()
while True:
try:
if GPIO.input(10) == GPIO.HIGH:
print("Boton de Inicio")
camera.start_preview()
while True:
if GPIO.input(11) == GPIO.HIGH:
print("Imagen capturada")
now = datetime.now()
dt = now.strftime("%d-%m-%H%:M")
name = "imagen_" + dt + ".jpg"
camera.capture(name)
camera.stop_preview()
print(name+" guardada")
storage.child(name).put(name)
print("Imagen enviada")
os.remove(name)
print("Archivo borrado")
break # salir del bucle while
sleep(0.1)
sleep(1)
121
except:
camera.close()
import os
import pandas as pd
import json
import pickle
import zipfile
import shutil
f.write('item { \n')
f.write('\tname:\'{}\'\n'.format(label['name']))
f.write('\tid:{}\n'.format(label['id']))
f.write('}\n')
import os
# %cd /content
# %cd /content/models/
# %cd /content/models/research
os.environ['PYTHONPATH'] +=
':/content/models/research/:/content/models/research/slim/'
!python object_detection/builders/model_builder_test.py
!wget --no-check-certificate
http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_
mobilenet_v2_fpnlite_320x320_coco17_tpu-8.tar.gz \
-O /content/ssd_mobilenet_v2_fpnlite_320x320_coco17_tpu-8.tar.gz
output_path = 'ssd_mobilenet_v2_fpnlite_320x320_coco17_tpu-8'
"""DATA AUGMENTATION"""
path_training = '/content/ssd_mobilenet'
os.mkdir(path_training)
124
source_config = "{}/pipeline.config".format(output_path)
target_config = "{}/pipeline.config".format(path_training)
shutil.copyfile(source_config, target_config)
import tensorflow as tf
config = config_util.get_configs_from_pipeline_file(target_config)
# Creamos una variable proto_str para poder modificar las variables del
archivo pbtxt
pipeline_config = pipeline_pb2.TrainEvalPipelineConfig()
proto_str = f.read()
text_format.Merge(proto_str, pipeline_config)
label_map_pbtxt_fname = "/content/label_map.pbtxt"
train_record_fname = "/content/train.tfrecord"
125
test_record_fname = "/content/test.tfrecord"
#val_record_fname = "/content/val.tfrecord"
pipeline_config.model.ssd.num_classes = 2
# El tamaño del batch size, entre más grande más costo computacional va a
necesitar en el proceso de entrenamiento, pero a su vez entrenará más
rápido.
pipeline_config.train_config.batch_size = 20
pipeline_config.train_config.fine_tune_checkpoint ="{}/checkpoint/ckpt-
0".format(output_path)
pipeline_config.train_config.fine_tune_checkpoint_type = "detection"
pipeline_config.train_input_reader.label_map_path =
label_map_pbtxt_fname
pipeline_config.train_input_reader.tf_record_input_reader.input_path[0] =
train_record_fname
pipeline_config.eval_input_reader[0].label_map_path =
label_map_pbtxt_fname
pipeline_config.eval_input_reader[0].tf_record_input_reader.input_path[0] =
test_record_fname
config_text = text_format.MessageToString(pipeline_config)
f.write(config_text)
num_steps = 5000
model_dir = "/content/ssd_mobilenet"
!python /content/models/research/object_detection/model_main_tf2.py \
127
--pipeline_config_path={target_config} \
--model_dir={model_dir} \
--num_train_steps={num_steps}
# %load_ext tensorboard
output_directory = '/content/fine_tuned_model'
!python /content/models/research/object_detection/exporter_main_v2.py \
--input_type image_tensor \
--pipeline_config_path {target_config} \
--trained_checkpoint_dir {model_dir} \
--output_directory {output_directory}
Código inferencia
# -*- coding: utf-8 -*-
"""Inferencia.ipynb
https://colab.research.google.com/drive/1LQFq4q27zCoS0mvBHiZrI-
fajhHVJfkA
"""
import os
# %cd /content
# %cd /content/models/
# %cd /content/models/research
os.environ['PYTHONPATH'] +=
':/content/models/research/:/content/models/research/slim/'
!python object_detection/builders/model_builder_test.py
129
import zipfile
local_zip = "/content/fine_tuned_model.zip"
zip_ref.extractall("/content/fine_tuned_model")
zip_ref.close()
import tensorflow as tf
import numpy as np
PATH_TO_MODEL_DIR =
"/content/fine_tuned_model/content/fine_tuned_model"
detect_fn = tf.saved_model.load(PATH_TO_SAVE_MODEL)
label_map_pbtxt_fname = "/content/label_map.pbtxt"
category_index =
label_map_util.create_category_index_from_labelmap(label_map_pbtxt_fn
ame)
image_path = "/content/Melanoma.jpg"
image_np = np.array(Image.open(image_path))
input_tensor = tf.convert_to_tensor(image_np)
detections = detect_fn(input_tensor)
num_detections = int(detections.pop('num_detections'))
detections['num_detections'] = num_detections
detections['detection_classes'] =
detections['detection_classes'].astype(np.int64)
image_np_with_detections = image_np.copy()
viz_utils.visualize_boxes_and_labels_on_image_array(
image_np_with_detections,
detections['detection_boxes'],
detections['detection_classes'],
detections['detection_scores'],
category_index,
max_boxes_to_draw=200,
min_score_thresh=0.30,
use_normalized_coordinates = True
# Visualizamos resultados
cv2_imshow(image_np_with_detections)
132
ANEXO PLANOS 3D
135
136
ANEXO MANUAL
137
138
139
140
141
142
143
144
145
146
147
148
149