jueves, 31 de octubre de 2024

Tomar una imagen de una URL, analizarla para generar una descripción en texto, y luego mostrar tanto la imagen como el texto generado

Programa para Google Colab que realice este proceso:
tomar una imagen de una URL, analizarla para generar una descripción en texto, y luego mostrar tanto la imagen como el texto generado. Para esto, usaremos la biblioteca transformers de Hugging Face y PIL para cargar y visualizar la imagen.
Este programa usará el modelo BLIP (Bootstrapping Language-Image Pretraining), que es muy efectivo para tareas de generación de descripciones de imágenes.


# Instalar Hugging Face Transformers y TorchVision si aún no están instalados
!pip install -q transformers torch torchvision

# Importar las bibliotecas necesarias
import torch
from transformers import BlipProcessor, BlipForConditionalGeneration
from PIL import Image
import requests
from io import BytesIO
import matplotlib.pyplot as plt

# Función para cargar la imagen desde una URL y convertirla en el formato necesario
def cargar_imagen(url):
    response = requests.get(url)
    image = Image.open(BytesIO(response.content)).convert("RGB")
    return image

# Configuración del modelo y procesador BLIP
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")

# URL de la imagen
url_imagen = "https://img.freepik.com/foto-gratis/mujer-tiro-completo-bicicleta-al-aire-libre_23-2149413735.jpg"

# Cargar y procesar la imagen
imagen = cargar_imagen(url_imagen)
inputs = processor(images=imagen, return_tensors="pt")

# Generar la descripción de la imagen
salida = model.generate(**inputs)
descripcion = processor.decode(salida[0], skip_special_tokens=True)

# Mostrar la imagen y su descripción
plt.figure(figsize=(8, 8))
plt.imshow(imagen)
plt.axis("off")
plt.title("Descripción generada: " + descripcion)
plt.show()

# Imprimir la descripción en texto
print("Descripción de la imagen:", descripcion)


¡Por supuesto! Te proporcionaré un programa para Google Colab que realice un proceso similar al que describes: tomar una imagen de una URL, analizarla para generar una descripción en texto, y luego mostrar tanto la imagen como el texto generado. Para esto, usaremos la biblioteca **transformers** de Hugging Face y **PIL** para cargar y visualizar la imagen.

Este programa usará el modelo **BLIP** (Bootstrapping Language-Image Pretraining), que es muy efectivo para tareas de generación de descripciones de imágenes.

### Código para Google Colab

```python
# Instalar Hugging Face Transformers y TorchVision si aún no están instalados
!pip install -q transformers torch torchvision

# Importar las bibliotecas necesarias
import torch
from transformers import BlipProcessor, BlipForConditionalGeneration
from PIL import Image
import requests
from io import BytesIO
import matplotlib.pyplot as plt

# Función para cargar la imagen desde una URL y convertirla en el formato necesario
def cargar_imagen(url):
    response = requests.get(url)
    image = Image.open(BytesIO(response.content)).convert("RGB")
    return image

# Configuración del modelo y procesador BLIP
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")

# URL de la imagen
url_imagen = "https://img.freepik.com/foto-gratis/mujer-tiro-completo-bicicleta-al-aire-libre_23-2149413735.jpg"

# Cargar y procesar la imagen
imagen = cargar_imagen(url_imagen)
inputs = processor(images=imagen, return_tensors="pt")

# Generar la descripción de la imagen
salida = model.generate(**inputs)
descripcion = processor.decode(salida[0], skip_special_tokens=True)

# Mostrar la imagen y su descripción
plt.figure(figsize=(8, 8))
plt.imshow(imagen)
plt.axis("off")
plt.title("Descripción generada: " + descripcion)
plt.show()

# Imprimir la descripción en texto
print("Descripción de la imagen:", descripcion)
```

### Explicación del Código
1. **Carga de librerías**: Se instalan e importan las librerías necesarias, como `transformers` para el modelo de Hugging Face, y `PIL` y `requests` para cargar y procesar la imagen.
2. **Cargar Imagen desde URL**: Se descarga la imagen desde la URL especificada y se convierte en un formato adecuado para el modelo.
3. **Configurar y Cargar el Modelo BLIP**: Usamos el modelo `BLIP` para la generación de descripciones. Este modelo toma una imagen como entrada y genera un texto descriptivo.
4. **Generación de la Descripción**: Se genera la descripción de la imagen en texto y se muestra junto con la imagen en un gráfico.
Este código debería funcionar en Google Colab y dar una descripción precisa de la imagen. Puedes cambiar la URL de `url_imagen` a cualquier imagen de tu elección para obtener descripciones personalizadas.

árboles de decisión_ BLOQUE 3 curso Cefo. Inteligencia_artificial para la sociedad

 https://app.diagrams.net/          --------->           Es draw.io, pones  draw.io en buscador, es bueno y fácil Tienes que tener cuenta...