El cáncer de piel es un problema grave en todo el mundo, pero afortunadamente el tratamiento en etapas tempranas puede llevar a la recuperación. JavaScript junto con un modelo de aprendizaje automático puede ayudar a los médicos a aumentar la precisión en la detección de melanoma. Durante la presentación, mostramos cómo utilizar Tensorflow.js, Keras y React Native para construir una solución que pueda reconocer lunares en la piel y detectar si son un melanoma o un lunar benigno. También mostramos los problemas que hemos enfrentado durante el desarrollo. Como resumen, presentamos los pros y los contras de JavaScript utilizado en proyectos de aprendizaje automático.
JavaScript Vence al Cáncer
Video Summary and Transcription
Esta charla discute el uso de JavaScript para combatir el cáncer de piel, con un enfoque en la integración de aprendizaje automático. El orador tiene experiencia en imágenes médicas y ha colaborado con empresas de dermatoscopia para desarrollar hardware. Se utilizan bibliotecas de JavaScript como TensorFlow.js y Pandas.js para la implementación de modelos y el análisis de datos. La charla también aborda la construcción de redes neuronales, el análisis del cáncer de piel utilizando métodos de puntuación y técnicas de procesamiento de imágenes, y la extracción de asimetría en imágenes de piel utilizando Python y JavaScript.
1. Introducción a JavaScript y el cáncer de piel
Hola, mi nombre es Karel Prystalski y hoy les contaré más sobre cómo usar JavaScript para combatir el cáncer de piel. Tengo 15 años de experiencia en aprendizaje automático y específicamente en imágenes médicas. Decidí abordar este tema y desarrollar soluciones en esta área debido a la creciente importancia del cáncer de piel, especialmente en países como Alemania, Escandinavia, Estados Unidos y Australia. También me he asociado con empresas de dermatoscopia para desarrollar hardware, como el dermatoscopio, que es utilizado por los dermatólogos. Mi solución combina el dermatoscopio con lentes especiales y luz para capturar imágenes de alta calidad de lunares en la piel.
Hola, mi nombre es Karel Prystalski y hoy les contaré más sobre cómo usar JavaScript para combatir el cáncer de piel. Tengo aproximadamente 15 años de experiencia en aprendizaje automático. Mi formación académica se centra en inteligencia artificial y su aplicación en imágenes médicas y dermatoscopia. Pueden encontrar algunos de mis artículos de investigación sobre este tema en Google Scholar, por ejemplo, aquí tienen uno de los artículos que publiqué hace unos cinco años sobre el análisis de cáncer de piel en imágenes multiespectrales. En ese caso, utilicé Python, pero debido a que JavaScript se ha vuelto cada vez más popular en los últimos años, especialmente en el ámbito del aprendizaje automático, decidí preparar una presentación y una aplicación de solución para el análisis de cáncer de piel. Mi experiencia no solo es científica, también fundé una empresa de servicios en 2010 que trabaja para empresas Fortune 500, desarrollando soluciones de ciencia de datos y aprendizaje automático. Antes de eso, también realicé algunos trabajos comerciales, por ejemplo, en IBM. Como mencioné anteriormente, tengo 15 años de experiencia en aprendizaje automático y específicamente en imágenes médicas. Entonces, ¿por qué decidí abordar este tema y desarrollar soluciones en esta área? Bueno, como pueden ver, no estoy en el grupo de riesgo cuando se trata de cáncer de piel, ya que el grupo de mayor riesgo son las personas rubias con ojos azules, es decir, el fototipo número uno con mayor riesgo de tener cáncer de piel, especialmente si su piel no se broncea al exponerse al sol, sino que tiende a ponerse roja. Además, el riesgo de desarrollar cáncer de piel es alto en este grupo. Cuanto más oscuro sea el tono de piel y cómo reaccione al sol, menor será la probabilidad de desarrollar cáncer de piel. Hay seis fototipos de piel, y yo me encuentro más o menos en el tercer grupo debido a mi color de cabello, color de ojos, etc. Por eso, este problema es especialmente importante en países como Alemania, Escandinavia, los países nórdicos, Estados Unidos y Australia, especialmente en Australia. Además, he establecido colaboraciones con empresas de dermatoscopia, es decir, empresas que desarrollan hardware. Como pueden ver aquí, este es uno de los dispositivos, nuestro dermatoscopio. Es un dispositivo que utilizan los dermatólogos. En este caso, también he utilizado un iPhone en la parte frontal, ya que es una extensión. No es un dermatoscopio típico, que normalmente no viene con un iPhone o cualquier tipo de teléfono móvil. Es un dispositivo independiente. Algunos dermatólogos también utilizan este tipo de estuche de extensión para tomar las imágenes de manera más fácil. Además, es bastante pequeño, por lo que se puede llevar en el bolsillo y visitar a los pacientes para examinar los lunares de esta manera. Así es como se utiliza mi solución, combinada con lentes especiales y luz para obtener la mejor imagen posible del lunar en la piel. En cuanto al conjunto de datos, cualquier modelo de aprendizaje automático debe alimentarse con datos. Cuando comencé mi investigación, solo tenía alrededor de 53 imágenes, lo cual no es suficiente para realizar ninguna investigación. Por eso, me reuní con casi todas las empresas públicas o privadas que se dedican a la dermatología en la ciudad donde vivo, en Cracovia, Polonia. La mayoría de ellas rechazaron
2. Integración de Aprendizaje Automático y JavaScript
El aprendizaje automático se ha convertido en una palabra de moda y la emoción en torno a la IA ha aumentado drásticamente. Obtener conjuntos de datos para la investigación se ha vuelto más fácil, lo que permite el desarrollo de algoritmos para diversas enfermedades de la piel. Se pueden descargar muestras de código y una imagen Docker con bibliotecas de JavaScript. La arquitectura implica combinar el aprendizaje automático con JavaScript para construir una aplicación móvil.
3. Integración de JavaScript y Despliegue de Modelos
Decidí usar JavaScript en lugar de construir una aplicación nativa. Para la parte de aprendizaje automático, utilicé TensorFlow.js porque es la biblioteca más robusta cuando se trata de JavaScript. El modelo se entrena en Python, pero se utiliza con JavaScript. JavaScript se utiliza para cargar, utilizar, volver a entrenar y desplegar el modelo en teléfonos móviles. También se utiliza junto con Kubeflow y servidores de TensorFlow. Hay una aplicación web que se conecta a la aplicación móvil para volver a entrenar y encontrar modelos similares. Existe una biblioteca de JavaScript llamada Pandas.js, que es un fork de la biblioteca original Pandas de Python.
4. Bibliotecas de JavaScript y TensorFlow
Muchas de las características avanzadas de Pandas original aún no se han implementado en JavaScript. Sin embargo, existen varias otras bibliotecas disponibles para el análisis y manipulación de datos, como DataFrame.js, Reclaim y DataForge. JavaScript también ofrece mejores bibliotecas de visualización en comparación con Python, incluyendo MATLAB y Seaborn. En cuanto al aprendizaje automático, Scikit-Learn es la elección popular en Python, pero en JavaScript no existe una biblioteca completa como Scikit-Learn. Por otro lado, TensorFlow proporciona una implementación sencilla de regresión lineal y ofrece varias APIs en diferentes lenguajes de programación.
Otra biblioteca que puedes encontrar o usar en JavaScript para el análisis o manipulación de datos es DataFrame.js, Reclaim, DataForge, y otras más. Por lo tanto, hay muchas bibliotecas de este tipo para usar. Estos son solo algunos ejemplos de cómo trabajar con series, cómo usar DataFrames. Esto es algo normal para las personas que trabajan con datos, probablemente para ingenieros de JavaScript, no tan típico, pero aún fácil de manipular, fácil de exportar a JSON, por ejemplo. Y esto es solo un cuaderno sobre cómo usarlo, solo para mostrar algunos ejemplos. En cuanto a la visualización, en mi opinión, JavaScript hace un mejor trabajo que Python. Obviamente, hay algunas bibliotecas como MATLAB, Seaborn y otras en Python, cuando las comparas con las que están disponibles en JavaScript. Creo que aquí, JavaScript tiene una gran ventaja porque hay buenas bibliotecas para visualización e impresión de gráficos. Pero creo que en muchos casos, simplemente hacen un mejor trabajo que las de Python. Así que eso es bueno. Entonces, uno, uno, digamos. Y luego, en cuanto a Scikit-Learn, la biblioteca más popular para el aprendizaje automático con métodos superficiales. Entonces, TensorFlow, quiero decir, eso es para construir redes neuronales, pero en realidad Scikit-Learn se trata más de los métodos superficiales. En realidad, en la mayoría de los casos, cuando se trata de aprendizaje automático, se pueden resolver o deberían resolverse utilizando métodos superficiales. Entonces, Scikit-Learn, esa es la primera biblioteca que usaremos y es fácil de usar en Python. En JavaScript, tienes JS.kit.learn y Scikit-Learn como un fork de Scikit-Learn, pero no se ha actualizado en los últimos años. Parece que alguien comenzó algo, pero luego dejó de mantenerlo y desapareció. Quiero decir, no es realmente una buena biblioteca para usar aquí. Hay muchas bibliotecas que implementan algún método superficial específico, como SVM, KNN, y así sucesivamente. Pero en realidad, si quieres tenerlo en un solo lugar como en Python, no tienes una biblioteca así en JavaScript, desafortunadamente. Entonces, en cuanto a TensorFlow, aquí tienes un ejemplo muy sencillo de cómo puedes construir una regresión lineal. Aquí hay algunos ejemplos de cómo importar, cómo usar, cómo implementar una regresión lineal. Y aquí hay un ejemplo, también hay una imagen de la documentación de TensorFlow.js. Tienes muchos tipos de APIs. La más popular está escrita en Python, pero en realidad el núcleo está escrito en C++, y también hay algunos otros forks como Java, Go, JavaScript, y así sucesivamente. Así que JavaScript no es, quiero decir, no es especial aquí. Es solo otro
5. Construcción de Redes Neuronales y Análisis del Cáncer de Piel
Aquí tienes un ejemplo de cómo construir una función de pérdida, combinarla, usarla, importarla y entrenarla. En Python, normalmente usamos cámaras para construir redes neuronales. JavaScript tiene Keras JS, pero no está tan desarrollado como la versión de Python. Cuando se trata de cáncer de piel, los médicos utilizan métodos de puntuación como ABCD y verifican patrones como la asimetría, la nitidez del borde y el número de colores. El uso de diferentes longitudes de onda de luz, como infrarrojo y UV, puede proporcionar información más detallada. También se pueden utilizar técnicas de procesamiento de imágenes como la binarización y el análisis fractal.
6. Extracción de Asimetría en Imágenes de Piel
En esta demostración, te mostraré un ejemplo de cómo extraer la asimetría en imágenes de piel utilizando Python y JavaScript. Al dividir la imagen en regiones y calcular la simetría de los lados opuestos de los bloques, podemos contar fácilmente la asimetría. Sin embargo, algunos patrones requieren modelos más sofisticados basados en redes neuronales.