Logotipo de Zephyrnet

Dominar la optimización y la implementación de la IA con el kit de herramientas OpenVINO de Intel

Fecha:

Introducción

Hablamos de IA casi a diario debido a su creciente impacto en la sustitución del trabajo manual de los humanos. La creación de software compatible con IA ha crecido rápidamente en poco tiempo. Las empresas y los negocios creen en la integración de una IA confiable y responsable en sus aplicaciones para generar más ingresos. La parte más desafiante de integrar la IA en una aplicación es la inferencia del modelo y los recursos computacionales utilizados para entrenar el modelo. Ya existen muchas técnicas que mejoran el rendimiento optimizando el modelo durante la inferencia con menos recursos de cálculo. Con esta declaración de problema, Intel presentó el OpenVINO Toolkit, un cambio absoluto en las reglas del juego. OpenVINO es un conjunto de herramientas de código abierto para optimizar e implementar la inferencia de IA.

OBJETIVOS DE APRENDIZAJE

En este artículo, haremos lo siguiente:

  • Comprenda qué es OpenVINO Toolkit y su propósito al optimizar e implementar modelos de inferencia de IA.
  • Explore los casos de uso práctico de OpenVINO, especialmente su importancia en el futuro de la IA en el borde.
  • Aprenda cómo implementar un proyecto de detección de texto en una imagen usando OpenVINO en Google Colab.
  • Descubra las características y ventajas clave de usar OpenVINO, incluida la compatibilidad de sus modelos y el soporte para aceleradores de hardware y cómo puede afectar diversas industrias y aplicaciones.

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Tabla de contenidos.

¿Qué es OpenVINO?

AbrirVINO | Kit de herramientas OpenVINO de Intel

OpenVINO, que significa Inferencia visual abierta y optimización de redes neuronales, es un conjunto de herramientas de código abierto desarrollado por el equipo de Intel para facilitar la optimización de modelos de aprendizaje profundo. La visión del kit de herramientas OpenVINO es impulsar su IA modelos de aprendizaje profundo e implemente la aplicación en las instalaciones, en el dispositivo o en la nube con más eficiencia y eficacia.

OpenVINO Toolkit es particularmente valioso porque admite muchos marcos de aprendizaje profundo, incluidos los populares como TensorFlow, PyTorch, Onnx y Caffe. Puede entrenar sus modelos utilizando su marco preferido y luego usar OpenVINO para convertirlos y optimizarlos para su implementación en los aceleradores de hardware de Intel, como CPU, GPU, FPGA y VPU.

En cuanto a la inferencia, OpenVINO Toolkit ofrece varias herramientas para la cuantificación y compresión de modelos, que pueden reducir significativamente el tamaño de los modelos de aprendizaje profundo sin perder precisión de la inferencia.

¿Por qué utilizar OpenVINO?

Actualmente, la locura por la IA no está dispuesta a frenar. Con esta popularidad, es evidente que se desarrollarán cada vez más aplicaciones para ejecutar aplicaciones de IA en las instalaciones y en el dispositivo. Algunas de las áreas desafiantes en las que OpenVINO sobresale lo convierten en una opción ideal por la que es crucial utilizar OpenVINO:

Zoológico modelo OpenVINO

OpenVINO ofrece un zoológico modelo con modelos de aprendizaje profundo previamente entrenados para tareas como difusión estable, voz, detección de objetos y más. Estos modelos pueden servir como punto de partida para sus proyectos, ahorrándole tiempo y recursos.

Modelo de compatibilidad

OpenVINO admite muchos marcos de aprendizaje profundo, incluidos TensorFlow, PyTorch, ONNx y Caffe. Esto significa que puede utilizar su marco preferido para entrenar sus modelos y luego convertirlos y optimizarlos para su implementación utilizando OpenVINO Toolkit.

Alto Rendimiento

OpenVINO está optimizado para una inferencia rápida, lo que lo hace adecuado para aplicaciones en tiempo real como visión por computadora, robótica y dispositivos IoT. Aprovecha la aceleración de hardware como FPGA, GPU y TPU para lograr un alto rendimiento y una baja latencia.

IA en el futuro perimetral con Intel OpenVINO

IA en el futuro perimetral con Intel OpenVINO

La IA en Edge es el área más difícil de abordar. Crear una solución optimizada para resolver las limitaciones de hardware ya no es imposible con la ayuda de OpenVINO. El futuro de la IA en Edge con este kit de herramientas tiene el potencial de revolucionar diversas industrias y aplicaciones.

Descubramos cómo funciona OpenVINO para que sea adecuado para la IA en Edge.

  • El paso principal es crear un modelo utilizando sus marcos de aprendizaje profundo favoritos y convertirlo en un modelo central de OpenVINO. Otra alternativa es utilizar modelos previamente entrenados utilizando el zoológico de modelos OpenVINO.
  • Una vez entrenado el modelo, el siguiente paso es la compresión. OpenVINO Toolkit proporciona un marco de compresión de redes neuronales (NNCF).
  • Model Optimizer convierte el modelo previamente entrenado a un formato adecuado. El optimizador consta de datos IR. Los datos IR se refieren a la Representación Intermedia de un modelo de aprendizaje profundo, que ya está optimizado y transformado para su implementación con OpenVINO. Los pesos del modelo están en formato de archivo .XML y .bin.
  • Durante la implementación del modelo, OpenVINO Inference Engine puede cargar y utilizar los datos de IR en el hardware de destino, lo que permite una inferencia rápida y eficiente para diversas aplicaciones.

Con este enfoque, OpenVINO puede desempeñar un papel vital en la IA en Edge. Ensuciémonos las manos con un proyecto de código para implementar la detección de texto en una imagen usando OpenVINO Toolkit.

Detección de texto en una imagen usando OpenVINO Toolkit

En la implementación de este proyecto, utilizaremos Google Colab como medio para ejecutar la aplicación con éxito. En este proyecto usaremos el detección-de-texto-horizontal-0001 modelo del zoológico modelo OpenVINO. Este modelo previamente entrenado detecta texto horizontal en imágenes de entrada y devuelve una masa de datos en la forma (100,5). Esta respuesta parece (x_min, y_min, x_max, y_max, conf) formato.

Implementación de código paso a paso

Instalación

!pip install openvino

Importar bibliotecas requeridas

Importemos los módulos necesarios para ejecutar esta aplicación. OpenVINO admite una función auxiliar de utilidades para descargar pesos previamente entrenados desde la URL del código fuente proporcionada.

import urllib.request base = "https://raw.githubusercontent.com/openvinotoolkit/openvino_notebooks"
utils_file = "/main/notebooks/utils/notebook_utils.py" urllib.request.urlretrieve( url= base + utils_file, filename='notebook_utils.py'
) from notebook_utils import download_file

Puede verificar que notebook_utils ahora se descargó correctamente; importemos rápidamente los módulos restantes.

import openvino import cv2
import matplotlib.pyplot as plt
import numpy as np
from pathlib import Path

Descargar Pesos

Inicialice la ruta para descargar archivos de peso del modelo de datos IR de detección de texto horizontal en formato .xml y .bin.

base_model_dir = Path("./model").expanduser() model_name = "horizontal-text-detection-0001"model_xml_name = f'{model_name}.xml'
model_bin_name = f'{model_name}.bin' model_xml_path = base_model_dir / model_xml_name
model_bin_path = base_model_dir / model_bin_name

En el siguiente fragmento de código, utilizamos tres variables para simplificar la ruta donde existen los pesos del modelo previamente entrenado.

model_zoo = "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.3/models_bin/1/"
algo = "horizontal-text-detection-0001/FP32/"
xml_url = "horizontal-text-detection-0001.xml"
bin_url = "horizontal-text-detection-0001.bin" model_xml_url = model_zoo+algo+xml_url
model_bin_url = model_zoo+algo+bin_url download_file(model_xml_url, model_xml_name, base_model_dir)
download_file(model_bin_url, model_bin_name, base_model_dir)
descargar el archivo | Kit de herramientas OpenVINO de Intel

Modelo de carga

OpenVINO proporciona una clase Core para interactuar con el kit de herramientas OpenVINO. La clase Core proporciona varios métodos y funciones para trabajar con modelos y realizar inferencias. Utilice read_model y pase model_xml_path. Después de leer el modelo, compílelo para un dispositivo de destino específico.

core = Core() model = core.read_model(model=model_xml_path)
compiled_model = core.compile_model(model=model, device_name="CPU") input_layer_ir = compiled_model.input(0)
output_layer_ir = compiled_model.output("boxes")

En el fragmento de código anterior, el modelo compilado devuelve la forma de la imagen de entrada (704,704,3), una imagen RGB pero en formato PyTorch (1,3,704,704) donde 1 es el tamaño del lote, 3 es el número de canales, 704 es la altura y peso. La salida devuelve (x_min, y_min, x_max, y_max, conf). Carguemos una imagen de entrada ahora.

Cargar modelo

Cargar imagen

El peso del modelo es [1,3,704,704]. En consecuencia, debes cambiar el tamaño de la imagen de entrada para que coincida con esta forma. En Google Colab o su editor de código, puede cargar su imagen de entrada y, en nuestro caso, el archivo de imagen se llama sample_image.jpg.

image = cv2.imread("sample_image.jpg") # N,C,H,W = batch size, number of channels, height, width.
N, C, H, W = input_layer_ir.shape # Resize the image to meet network expected input sizes.
resized_image = cv2.resize(image, (W, H)) # Reshape to the network input shape.
input_image = np.expand_dims(resized_image.transpose(2, 0, 1), 0) print("Model weights shape:")
print(input_layer_ir.shape)
print("Image after resize:")
print(input_image.shape)
Imagen de entrada | Kit de herramientas OpenVINO de Intel

Muestra la imagen de entrada.

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis("off")
"

Máquina de inferencia

Anteriormente, utilizamos pesos del modelo para compilar el modelo. Utilice compilar el modelo en contexto con la imagen de entrada.

# Create an inference request.
boxes = compiled_model([input_image])[output_layer_ir] # Remove zero only boxes.
boxes = boxes[~np.all(boxes == 0, axis=1)]

Predicción

El modelo_compilado devuelve cuadros con las coordenadas del cuadro delimitador. Usamos el módulo cv2 para crear un rectángulo y putText para agregar la puntuación de confianza sobre el texto detectado.

def detect_text(bgr_image, resized_image, boxes, threshold=0.3, conf_labels=True): # Fetch the image shapes to calculate a ratio. (real_y, real_x), (resized_y, resized_x) = bgr_image.shape[:2], resized_image.shape[:2] ratio_x, ratio_y = real_x / resized_x, real_y / resized_y # Convert image from BGR to RGB format. rgb_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2RGB) # Iterate through non-zero boxes. for box in boxes: # Pick a confidence factor from the last place in an array. conf = box[-1] if conf > threshold: (x_min, y_min, x_max, y_max) = [ int(max(corner_position * ratio_y, 10)) if idx % 2 else int(corner_position * ratio_x) for idx, corner_position in enumerate(box[:-1]) ] # Draw a box based on the position, parameters in rectangle function are: # image, start_point, end_point, color, thickness. rgb_image = cv2.rectangle(rgb_image, (x_min, y_min), (x_max, y_max),(0,255, 0), 10) # Add text to the image based on position and confidence. if conf_labels: rgb_image = cv2.putText( rgb_image, f"{conf:.2f}", (x_min, y_min - 10), cv2.FONT_HERSHEY_SIMPLEX, 4, (255, 0, 0), 8, cv2.LINE_AA, ) return rgb_image

Mostrar la imagen de salida

plt.imshow(detect_text(image, resized_image, boxes));
plt.axis("off")
"

Conclusión

Para concluir, creamos con éxito la detección de texto en un proyecto de imagen utilizando OpenVINO Toolkit. El equipo de Intel mejora continuamente el kit de herramientas. OpenVINO también admite modelos de IA generativa previamente entrenados, como difusión estable, ControlNet, voz a texto y más.

Puntos clave

  • OpenVINO es una innovadora herramienta de código abierto para impulsar sus modelos de aprendizaje profundo de IA e implementar la aplicación en las instalaciones, en el dispositivo o en la nube.
  • El objetivo principal de OpenVINO es optimizar los modelos profundos con diversas cuantificaciones y compresiones de modelos, lo que puede reducir significativamente el tamaño de los modelos de aprendizaje profundo sin perder precisión de inferencia.
  • Este kit de herramientas también admite la implementación de aplicaciones de IA en aceleradores de hardware como GPU, FPGA, ASIC, TPU y más.
  • Varias industrias pueden adoptar OpenVINO y aprovechar su potencial para generar un impacto en la IA en el borde.
  • La utilización del modelo previamente entrenado del zoológico es simple ya que implementamos la detección de texto en imágenes con solo unas pocas líneas de código.

Preguntas frecuentes

P1. ¿Para qué se utiliza Intel OpenVINO?

R. Intel OpenVINO proporciona un zoológico modelo con Modelos de aprendizaje profundo previamente entrenados para tareas como difusión estable, voz y más. OpenVINO ejecuta modelos preentrenados de zoológicos en las instalaciones, en el dispositivo y en la nube de manera más eficiente y efectiva.

P2. ¿Cuál es la diferencia entre OpenVINO y TensorFlow?

R. Tanto OpenVINO como TensorFlow son gratuitos y de código abierto. Los desarrolladores utilizan TensorFlow, un marco de aprendizaje profundo, para el desarrollo de modelos, mientras que OpenVINO, un kit de herramientas, optimiza los modelos de aprendizaje profundo y los implementa en aceleradores de hardware Intel.

P3. ¿Dónde se utiliza OpenVINO?

R. La versatilidad y capacidad de OpenVINO para optimizar modelos de aprendizaje profundo para hardware Intel lo convierten en una herramienta valiosa para aplicaciones de inteligencia artificial y visión por computadora en diversas industrias, como defensa militar, atención médica, ciudades inteligentes y muchas más.

P4. ¿El OpenVINO Toolkit de Intel es de uso gratuito?

R. Sí, el kit de herramientas OpenVINO de Intel es de uso gratuito. El equipo de Intel desarrolló este conjunto de herramientas de código abierto para facilitar la optimización de modelos de aprendizaje profundo.

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

punto_img

Información más reciente

punto_img