lunes, 16 de diciembre de 2024

Computer Vision

 Azure AI Vision

El servicio Face de Azure AI ofrece algoritmos de IA que detectan, reconocen y analizan caras humanas en las imágenes. El software de reconocimiento facial es importante en muchos escenarios, como la identificación, el control de acceso sin contacto y el desenfoque automático facial para la privacidad.

Existen varios servicios de rostros:

  • Detect faces in an image: Detecta la ubicación de uno o más rostros humanos en imágenes, junto con atributos como pose, máscara facial y puntos de referencia faciales.
  • Face liveness detection: Detecta si el rostro de una imagen es una persona real o una fotografía. Esto resulta útil para evitar ataques de suplantación de identidad.
  • Portrait processing: Detecta la ubicación de uno o más rostros humanos en imágenes, junto con atributos como pose, máscara facial y puntos de referencia faciales.
  • Photo ID matching: Haga coincidir la foto de una persona con un documento de identidad con fotografía para verificar su identidad.
Para el reconocimiento de texto:
  • Extract text from images: Utilice la API Read para extraer texto impreso y escrito a mano en los idiomas admitidos de imágenes, archivos PDF y TIFF. La función de reconocimiento óptico de caracteres (OCR) admite imágenes y documentos con idiomas combinados y no requiere especificar el idioma.

Amazon Rekognition

Amazon Rekognition proporciona API que puede detectar y analizar rostros en imágenes y vídeos. Estas operaciones incluyen funcionalidades como la detección de puntos de referencia faciales, el análisis de emociones y la comparación de rostros.

Amazon Rekognition puede detectar texto en imágenes y vídeos. A continuación, puede convertir el texto detectado en texto legible por una máquina.

jueves, 5 de diciembre de 2024

Procesar textos con TRANSFORMERS


Para procesar textos con el objetivo de extraer información sobre personas y datos asociados utilizando un modelo transformer, como los de la familia BERT o GPT, se puede seguir los siguientes pasos:

1. Definir el objetivo

Decidir qué tipo de información extraer del texto. Por ejemplo:

  • Entidades nombradas: nombres de personas, lugares, fechas, números de teléfono.
  • Relaciones entre entidades: por ejemplo, quién trabaja para quién.
  • Características de personas: edad, dirección, profesión.

2. Elegir un modelo adecuado

Elegir un modelo dependiendo de las necesidades:

  • NER (Reconocimiento de Entidades Nombradas): Usa un modelo preentrenado como BERT o RoBERTa y ajustado para NER.
  • QA (Question Answering): Para plantear preguntas al modelo sobre el texto.
  • Clasificación/Segmentación de texto: Para extraer datos específicos, se puede entrenar un modelo para identificar las entidades que nos interesan.
Modelos recomendados:
  • SpaCy: Una biblioteca práctica con modelos NER listos para usar.
  • Hugging Face Transformers: Ofrece modelos preentrenados y ajustes para tareas específicas.

3. Preparar el texto

Antes de procesar el texto, es necesario limpiarlo y preprocesarlo:

  • Limpieza básica:
    • Elimina caracteres no deseados (por ejemplo, emojis, HTML).
    • Estándariza el formato (como mayúsculas/minúsculas).
  • Tokenización: Utiliza una tokenización adecuada al transformer (como WordPiece para BERT).

4. Configurar el pipeline de procesamiento

Con Hugging Face se puede usar un pipeline para extraer información con modelos preentrenados.

Ejemplo: Reconocimiento de entidades nombradas (NER)

python

from transformers import pipeline # Carga un modelo preentrenado para NER ner_pipeline = pipeline("ner", model="dbmdz/bert-large-cased-finetuned-conll03-english") text = "John Doe lives in New York and works at OpenAI." entities = ner_pipeline(text) # Muestra las entidades detectadas for entity in entities: print(f"Texto: {entity['word']}, Tipo: {entity['entity']}, Confianza: {entity['score']}")


Ejemplo: Extracción de información mediante QA

Si tienes una pregunta específica, usa un pipeline de QA:

python

from transformers import pipeline # Carga un modelo de preguntas y respuestas qa_pipeline = pipeline("question-answering", model="deepset/roberta-base-squad2") context = "John Doe, a software engineer, works at OpenAI. He lives in New York." question = "¿Dónde vive John Doe?" result = qa_pipeline(question=question, context=context) print(f"Respuesta: {result['answer']}")



5. Opcional: Entrenamiento adicional

Si los modelos preentrenados no detectan entidades o datos específicos que nos interesan:

  1. Recopilar datos etiquetados: Usar herramientas como Prodigy o Label Studio.
  2. Entrenar un modelo:
    • Se puede afinar un transformer con Hugging Face y un dataset etiquetado como CoNLL-2003 o uno propio.
Código básico para ajustar un modelo NER:
python

from transformers import AutoModelForTokenClassification, TrainingArguments, Trainer
from datasets import load_dataset
# Carga el dataset
dataset = load_dataset("conll2003")
# Carga el modelo preentrenado
model = AutoModelForTokenClassification.from_pretrained("bert-base-cased", num_labels=len(label_list))
# Configura el entrenamiento
training_args = TrainingArguments(
output_dir="./results",
evaluation_strategy="epoch",
learning_rate=2e-5,
per_device_train_batch_size=16,
num_train_epochs=3,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset["train"],
eval_dataset=dataset["validation"],
)
# Entrena
trainer.train()

6. Postprocesamiento

Una vez extraída la información:

  • Normalizar los datos (por ejemplo, conviertir fechas a un formato estándar).
  • Validar las entidades encontradas (por ejemplo, contra bases de datos externas).
  • Almacenar los resultados en un formato estructurado (JSON, CSV, etc.).