El Segment Anything Model (SAM) de Meta ha demostrado su capacidad para detectar objetos en diferentes áreas de una imagen. La arquitectura de este modelo es flexible y los usuarios pueden guiarlo con varias indicaciones. Durante el entrenamiento, podía segmentar objetos que no estaban en su conjunto de datos.
Estas características hacen de este modelo una herramienta muy eficaz para detectar y segmentar objetos para cualquier propósito. Esta herramienta también se puede utilizar para tareas de segmentación específicas, como hemos visto con aplicaciones industriales como vehículos autónomos y robótica. Otro detalle crucial de este modelo es cómo puede segmentar imágenes mediante máscaras y cuadros delimitadores, lo cual es vital para su funcionamiento con fines médicos.
Sin embargo, el modelo Segment Anything de Meta para imágenes médicas juega un papel muy importante en el diagnóstico y detección de anomalías en las imágenes escaneadas. MEDSAM entrena un modelo con pares de imagen-máscara recopilados de diferentes fuentes. Este conjunto de datos también cubre más de 15 modalidades de imágenes y más de 30 tipos de cáncer.
Discutiremos cómo este modelo puede detectar objetos a partir de imágenes médicas utilizando cuadros delimitadores.
Objetivos de aprendizaje
- El Segment Anything Model (SAM) de Meta se destaca en la segmentación de objetos en diversas regiones de una imagen, lo que lo hace altamente adaptable a diversas tareas.
- La capacidad de SAM para detectar objetos más allá de su conjunto de datos de entrenamiento muestra su flexibilidad, especialmente cuando se combina con cuadros delimitadores y máscaras.
- MEDSAM, una versión mejorada de SAM, mejora las imágenes médicas al manejar tareas de diagnóstico complejas, como la detección de cáncer en más de 15 modalidades de imágenes.
- Mediante el uso de cuadros delimitadores y técnicas informáticas eficientes, MEDSAM optimiza la segmentación de imágenes médicas, ampliando los límites de las aplicaciones de inteligencia artificial para el cuidado de la salud.
- La versatilidad central de SAM, junto con la especialización médica de MEDSAM, abre un enorme potencial para revolucionar el análisis de imágenes en campos como la robótica, los vehículos autónomos y la atención sanitaria.
Este artículo fue publicado como parte del Blogatón de ciencia de datos.
¿Cómo funciona el modelo Segment Anything (SAM)?
SAM es un modelo de segmentación de imágenes desarrollado por Meta para identificar objetos en casi cualquier región de una imagen. El mejor atributo de este modelo es su versatilidad, que le permite generalizar al detectar imágenes.
Este modelo fue entrenado con 11 millones de imágenes fascinantes del mundo real, pero lo más intrigante es que puede segmentar objetos que ni siquiera están presentes en su conjunto de datos.
Existen muchos modelos de segmentación de imágenes y detección de objetos con diferentes estructuras. Modelos como este podrían ser modelos básicos o específicos de tareas, pero SAM, al ser un modelo de 'segmentarlo todo', puede ser ambas cosas, ya que tiene una buena base para detectar millones de imágenes y, al mismo tiempo, deja espacio para realizar ajustes. Ahí es donde los investigadores aportan diversas ideas, al igual que en MEDSAM.
Lo más destacado de las capacidades de SAM es su capacidad de adaptación. También es un modelo de segmentación basado en indicaciones, lo que significa que puede recibir información sobre cómo realizar tareas de segmentación. Estos incluyen primer plano, fondo, un cuadro preliminar, cuadros delimitadores, máscaras, textos y otra información que podría ayudar al modelo a segmentar la imagen.
El principio básico de la arquitectura de este modelo es el codificador de imágenes, el codificador de avisos y el codificador de máscaras. Los tres componentes juegan un papel muy importante en la realización de las tareas de segmentación. La imagen y el codificador de mensajes ayudan a generar la imagen y solicitan incrustaciones. El codificador de máscara detecta la máscara generada para la imagen que desea segmentar mediante el mensaje.
¿Se puede aplicar SAM directamente a las imágenes médicas?
Valió la pena intentar utilizar el modelo Segment Anything con fines médicos. Además, el modelo tiene un gran conjunto de datos y capacidades variables, entonces, ¿por qué no imágenes médicas? Sin embargo, la aplicación en la segmentación médica tuvo algunas limitaciones debido a la naturaleza de las imágenes médicas y a los problemas con la forma en que el modelo puede manejar cuadros delimitadores inciertos en la imagen. Ante los desafíos que plantea la naturaleza de las máscaras de imágenes en las imágenes médicas, la necesidad de especialización se vuelve esencial. Entonces, eso provocó la innovación de MEDSAM, un modelo de segmentación basado en la arquitectura de SAM pero adaptado a imágenes médicas.
Este modelo puede manejar diversas tareas en estructuras anatómicas y diferentes instancias de imágenes. Las imágenes médicas obtienen resultados efectivos con este modelo; 15 modalidades de imágenes y más de 30 tipos de cáncer muestran la gran escala de capacitación en segmentación de imágenes médicas involucrada en MEDSAM.
Arquitectura modelo de MEDSAM
El MEDSAM se construyó sobre el modelo SAM previamente entrenado. El marco implica que los codificadores de imágenes y mensajes generen incrustaciones para la máscara de codificación en las imágenes de destino.
El codificador de imágenes del modelo Segment Anything procesa información posicional que requiere mucha potencia informática. Para hacer el proceso más eficiente, los investigadores de este modelo decidieron “congelar” tanto el codificador de imágenes como el codificador de indicaciones. Eso significa que dejaron de actualizar o cambiar estas piezas durante el entrenamiento.
El codificador de aviso, que ayuda a comprender las posiciones de los objetos utilizando datos del codificador del cuadro delimitador en SAM, tampoco se modificó. Al congelar estos componentes, redujeron la potencia informática necesaria e hicieron que el sistema fuera más eficiente.
Los investigadores mejoraron la arquitectura de este modelo para hacerlo más eficiente. Antes de activar el modelo, calcularon las incrustaciones de imágenes de las imágenes de entrenamiento para evitar cálculos repetidos. El codificador de máscara, el único ajustado, ahora crea un codificador de máscara en lugar de tres, ya que el cuadro delimitador ayuda a definir claramente el área a segmentar. Este enfoque hizo que la formación fuera más eficiente.
A continuación se muestra una ilustración gráfica de cómo funciona este modelo:
Cómo utilizar MEDSAM para imágenes médicas
Este modelo necesitaría algunas bibliotecas para funcionar, y profundizaremos en cómo ejecutar tareas de segmentación de imágenes médicas en una imagen.
Instalación de bibliotecas necesarias
Necesitaremos algunas bibliotecas más para ejecutar este modelo, ya que también tenemos que dibujar líneas en los cuadros delimitadores como parte del mensaje. Comenzaremos con solicitudes, numpy y metaplot.
import requests
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from transformers import SamModel, SamProcessor
import torch
La biblioteca de 'solicitud' ayuda a recuperar imágenes de su fuente. La biblioteca 'numpy' se vuelve útil porque realizamos operaciones numéricas que involucran las coordenadas de los cuadros delimitadores. PIL y metaplot ayudan en el procesamiento y visualización de imágenes, respectivamente. Además del modelo SAM, el procesador y la antorcha (que manejan el cálculo definido en el código siguiente) son paquetes importantes para ejecutar este modelo.
device = "cuda" if torch.cuda.is_available() else "cpu"
Cargando el SAM previamente entrenado
model = SamModel.from_pretrained("flaviagiammarino/medsam-vit-base").to(device)
processor = SamProcessor.from_pretrained("flaviagiammarino/medsam-vit-base")
Por lo tanto, el modelo previamente entrenado suele utilizar el dispositivo informático más adecuado, como una GPU o una CPU. Esta operación ocurre antes de cargar el procesador del modelo y prepararlo para los datos de entrada de imágenes.
Entrada de imagen
img_url = "https://huggingface.co/flaviagiammarino/medsam-vit-base/resolve/main/scripts/input.png"
raw_image = Image.open(requests.get(img_url, stream=True).raw).convert("RGB")
input_boxes = (95., 255., 190., 350.)
Cargar la imagen con una URL es fácil, especialmente con nuestra biblioteca en el entorno. También podemos abrir la imagen y convertirla a un formato compatible para su procesamiento. La lista 'input_boxes' define el cuadro delimitador con coordenadas (95, 255, 190, 350). Este número representa las esquinas superior izquierda e inferior derecha de la imagen de la región de interés. Usando el cuadro delimitador, podemos realizar la tarea de segmentación enfocándonos en una región específica.
Procesamiento de entrada de imagen
A continuación, procesamos la entrada de la imagen, ejecutamos el modelo de segmentación y preparamos la máscara de salida. El procesador del modelo prepara la imagen sin procesar y los cuadros de entrada y los convierte a un formato adecuado para su procesamiento. Luego, la entrada procesada se ejecuta para predecir las probabilidades de la máscara. Este código da como resultado una máscara refinada basada en probabilidad para la región segmentada.
inputs = processor(raw_image, input_boxes=((input_boxes)), return_tensors="pt").to(device)
outputs = model(**inputs, multimask_output=False)
probs = processor.image_processor.post_process_masks(outputs.pred_masks.sigmoid().cpu(), inputs("original_sizes").cpu(), inputs("reshaped_input_sizes").cpu(), binarize=False)
Mascarilla
def show_mask(mask, ax, random_color):
if random_color:
color = np.concatenate((np.random.random(3), np.array((0.6))), axis=0)
else:
color = np.array((251/255, 252/255, 30/255, 0.6))
h, w = mask.shape(-2:)
mask_image = mask.reshape(h, w, 1) * color.reshape(1, 1, -1)
ax.imshow(mask_image)
Aquí intentamos mostrar la máscara coloreada en la imagen usando 'ax. espectáculo.' La función show_mask muestra una máscara de segmentación en un gráfico. Puede usar un color aleatorio o el amarillo predeterminado. Se cambia el tamaño de la máscara para que se ajuste a la imagen, se superpone con el color seleccionado y se visualiza usando 'ax.show'.
Luego, la función dibuja un rectángulo usando las coordenadas y su posición. Este proceso se ejecuta como se muestra a continuación;
def show_box(box, ax):
x0, y0 = box(0), box(1)
w, h = box(2) - box(0), box(3) - box(1)
ax.add_patch(plt.Rectangle((x0, y0), w, h, edgecolor="blue", facecolor=(0, 0, 0, 0), lw=2))
Producción
fig, ax = plt.subplots(1, 2, figsize=(10, 5))
ax(0).imshow(np.array(raw_image))
show_box(input_boxes, ax(0))
ax(0).set_title("Input Image and Bounding Box")
ax(0).axis("off")
ax(1).imshow(np.array(raw_image))
show_mask(mask=probs(0) > 0.5, ax=ax(1), random_color=False)
show_box(input_boxes, ax(1))
ax(1).set_title("MedSAM Segmentation")
ax(1).axis("off")
plt.show()
Este código crea una figura con dos subtramas una al lado de la otra para mostrar la imagen de entrada con un cuadro delimitador y el resultado. La primera subtrama muestra la imagen original con el cuadro delimitador y la segunda muestra la imagen con la máscara superpuesta y el cuadro delimitador.
Aplicación de este modelo: ¿Qué nos depara el futuro?
SAM, como modelo fundamental, es una herramienta multipropósito; Con sus altas capacidades de generalización y los millones de conjuntos de datos entrenados a partir de imágenes del mundo real, este modelo puede hacer mucho. A continuación se muestran algunas aplicaciones comunes de este modelo:
- Uno de los usos más populares de esta herramienta es la edición de imágenes y vídeos, que simplifica la detección de objetos y la manipulación de imágenes y vídeos.
- Los vehículos autónomos pueden utilizar este modelo para detectar objetos de manera eficiente y al mismo tiempo comprender el contexto de cada escena.
- La robótica también necesita la detección de objetos para interactuar con su entorno.
MEDSAM es un gran hito en el caso de uso del modelo Segment Anything. Las imágenes médicas son más complejas que las imágenes normales; Este modelo nos ayuda a comprender este contexto. El uso de diferentes enfoques de diagnóstico para detectar tipos de cáncer y otras células en imágenes médicas puede hacer que este modelo sea más eficiente para la detección de tareas específicas.
Conclusión
La versatilidad del modelo Segment Anything de Meta ha demostrado un gran potencial. Su capacidad de obtención de imágenes médicas es un hito importante en la revolución de los diagnósticos y las tareas relacionadas en la industria de la salud. La integración de cuadros delimitadores lo hace aún más efectivo. Las imágenes médicas sólo pueden mejorar a medida que evoluciona el modelo base SAM.
Recursos
Conclusión clave
- La naturaleza versátil del modelo base SAM es la base de cómo los investigadores perfeccionaron el modelo de imágenes médicas. Otro atributo notable es su capacidad para adaptarse a diversas tareas mediante indicaciones, cuadros delimitadores y máscaras.
- MEDSAM recibió capacitación en diversos conjuntos de datos de imágenes médicas. Cubre más de 15 modalidades de imágenes y más de 30 tipos de cáncer, lo que demuestra la eficacia con la que puede detectar regiones inusuales en exploraciones médicas.
- La arquitectura del modelo también adoptó el enfoque correcto. Ciertas partes se congelaron para reducir los costos de cálculo y se utilizaron cuadros delimitadores como indicaciones para segmentar una región específica de la imagen.
Preguntas frecuentes
R. SAM es una técnica de procesamiento de imágenes desarrollada por Meta para detectar objetos y segmentarlos en cualquier región de una imagen. También puede segmentar objetos no entrenados en el conjunto de datos del modelo. Este modelo está capacitado para operar con indicaciones y máscaras y es adaptable en varios dominios.
R. MEDSAM es una versión mejorada de SAM diseñada específicamente para imágenes médicas. Si bien SAM es de uso general, MEDSAM está optimizado para manejar la naturaleza compleja de las imágenes médicas, lo que se traduce en diversas modalidades de imágenes y detección de cáncer.
R. La versatilidad de este modelo y sus capacidades de procesamiento en tiempo real permiten su uso en aplicaciones en tiempo real, incluidos vehículos autónomos y robótica. Puede detectar y comprender de forma rápida y eficiente objetos dentro de imágenes.
Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.