Estudiamos ONNX para aplicarlo al trading - página 13

 
Object-Detection Yolov7, ML.NET onnx model
Object-Detection Yolov7, ML.NET onnx model
  • 2023.01.13
  • www.youtube.com
Github:https://github.com/ptiszai/Object-Detection-yolov7-ML.NET-onnx
 
Implement Yolo3 Real-time using C#
Implement Yolo3 Real-time using C#
  • 2021.05.29
  • www.youtube.com
Using Alturos & OpenCvSharp run Object Detection Real-time#yolo #objectdetection #csharp #windowsLink source: https://github.com/duonghb53/YoloOnCSharpGPU
 

Detección de rostros con C# y OpenCVSharp: grupo práctico de usuarios de ML.NET 19/01/2022



Detección de rostros con C# y OpenCVSharp: grupo práctico de usuarios de ML.NET 19/01/2022

El tutorial en video sobre la detección de rostros con OpenCVSharp en C# comenzó con el orador presentando la biblioteca OpenCVSharp, una biblioteca de código abierto para tareas de visión por computadora, con un contenedor .NET. El video analiza el uso de diferentes clasificadores para la detección, incluso para los ojos, y la importancia de la experimentación en la selección de clasificadores. El tutorial ayudó al oyente a crear un programa para la detección de rostros y ojos mediante cámaras web, con la ayuda de fragmentos de código, Visual Studio y cuadernos interactivos .NET. También se trataron diferentes aspectos, incluido cómo superponer imágenes transparentes y manejar correctamente los objetos de tapete. El orador reconoció la facilidad de uso, la velocidad y la compatibilidad de OpenCVSharp con .NET, pero también señaló la falta de ejemplos y el apoyo incierto a largo plazo.

  • 00:00:00 En esta sección, el orador presenta el tema de la detección de rostros usando OpenCVSharp en C# y brinda una breve descripción general de lo que es OpenCVSharp, que es un envoltorio .NET para OpenCV, una biblioteca de código abierto para tareas de visión por computadora. El orador analiza las diferentes características de OpenCVSharp, incluida la manipulación de imágenes, la detección de rostros y los modelos de reconocimiento de rostros. El orador también señala que, si bien no hay muchos ejemplos de C# para OpenCVSharp, hay muchos ejemplos de Python que se pueden convertir fácilmente a C# debido a las similitudes en las API. Luego, el orador pasa a enumerar algunos ejemplos de cómo realizar tareas específicas tanto en Python como en C# utilizando OpenCVSharp.

  • 00:05:00 En esta sección, el orador analiza los diferentes sabores de OpenCVSharp y la importancia de emparejar bibliotecas administradas con bibliotecas de enlace nativas. Luego demuestran algunos ejemplos usando Visual Studio Code y cuadernos interactivos .NET, cargando paquetes NuGet y usando los archivos XML en cascada para realizar la detección de rostros. El código pasa por incorporar los clasificadores en cascada duros y usarlos para detectar rostros y dibujar cuadros alrededor de ellos en las imágenes.

  • 00:10:00 En esta sección, el presentador explica la importancia de manejar y desechar correctamente los "objetos tapete" en OpenCVSharp para evitar posibles fugas de memoria. Demuestran cómo cargar una imagen de origen y crear una nueva "imagen gris" vacía para la detección de rostros, ya que el clasificador funciona mejor en imágenes en blanco y negro. Luego explican cómo usar el "histograma ecualizado cb2" para normalizar el brillo y el contraste de la imagen, lo que conduce a una mejor clasificación en cascada. El presentador también analiza cómo utilizar los requisitos de tamaño mínimo para la detección de rostros a fin de evitar falsos positivos y artefactos. Finalmente, muestran cómo usar el "rectángulo cv2" para dibujar un cuadro alrededor de las caras detectadas y abrir una ventana para mostrar la imagen resultante, y la tecla de peso se usa como una forma para que el usuario cierre la ventana.

  • 00:15:00 En esta sección del video, el orador explica cómo no esperan que entre una clave de peso, ya que no la necesitan para mostrar una imagen estática. Sin embargo, entrará más en juego cuando vean la demostración de la cámara web. También responden una pregunta sobre los espacios de nombres predeterminados y continúan explicando cómo van a detectar no solo la cara, sino también los ojos en la cara. Discuten traer dos archivos en cascada, la cara frontal y la cascada de ojos, y cómo recorren los rectángulos de la cara para tratar de hacer una detección adicional de los ojos. Explican el proceso involucrado en la creación de una región de interés (ROI) y el dibujo de un rectángulo alrededor de la cara.

  • 00:20:00 En esta sección, el instructor recorre el proceso de detección de ojos en una imagen facial mediante cascadas anidadas en OpenCVSharp. Toman la región de interés de la cara previamente detectada, la convierten en gris y luego aplican una cascada anidada específicamente para detectar ojos. Al hacer esto, pueden dibujar círculos alrededor de los ojos detectados, siendo el punto central del círculo la ubicación de los ojos detectados. Señalan que el tamaño de los ojos detectados debe ser más pequeño que el tamaño de la cara detectada y, a través de algunas pruebas y errores, ajustan los parámetros de la cascada anidada para detectar mejor los ojos en caras de diferentes tamaños. En general, aunque el proceso no es perfecto, es efectivo para detectar ojos en la mayoría de los casos.

  • 00:25:00 En esta sección, el orador analiza los diferentes clasificadores que se pueden usar para la detección de rostros y la necesidad de experimentar para determinar qué clasificador funciona mejor para situaciones específicas. El orador también reconoce que puede haber artefactos en el proceso de detección y sugiere usar la lógica para eliminarlos si se está produciendo el proceso. Luego, el orador pasa a hablar sobre el uso de cámaras web y cómo el código para la detección de rostros y ojos de la cámara web es similar a los ejemplos anteriores, con la única diferencia de la introducción de la captura de video y la creación de un objeto de ventana. Por último, se destaca la importancia de esperar un milisegundo entre fotogramas para ver si se pulsa alguna tecla, ya que afecta mucho a los fotogramas por segundo capturados en la webcam.

  • 00:30:00 En esta sección, el presentador demuestra la función de detección de rostros en OpenCVSharp usando C#. El código captura los datos de la cámara web y detecta la cara del sujeto al colocar un cuadro a su alrededor. El presentador explica la clave de peso, una característica distintiva de OpenCVSharp que debe incluirse para que la ventana muestre una imagen. Continúan respondiendo una pregunta sobre cuándo se ejecuta el método de clave de ponderación y describen cómo se usa. La sección también incluye un ejemplo de cómo agregar fotogramas por segundo al código de captura de datos de la cámara web. El presentador señala la importancia de incluir la clave de peso, ya que olvidarla puede causar problemas y demuestra cómo destruir todas las ventanas en el código.

  • 00:35:00 En esta sección, el presentador explica cómo pueden poner texto en la pantalla y controlar el color usando C# y OpenCVSharp. Explican cómo definen un color para el cuadro alrededor de las caras y los ojos, y definen otro color llamado color fps, que es rojo si la velocidad de fotogramas es inferior a 20 fotogramas por segundo, y verde si es mayor o igual a 20. también demostrar el efecto de la demora en la clave de peso y cómo afecta las velocidades de fotogramas. Mencionan que con todas las variables que intervienen, están felices si pueden obtener 20 o más fotogramas por segundo, lo que les permite lograr sus objetivos por el momento.

  • 00:40:00 En esta sección, el presentador demuestra cómo superponer imágenes y explica la importancia de usar IamReadModes sin cambios para conservar el elemento de transparencia de una imagen. Utilizan gafas de sol como ejemplo y admiten que el código no está optimizado, ya que no tuvieron tiempo de hacerlo todo perfecto. También hacen trampa codificando las coordenadas de dónde quieren que aterricen las gafas de sol en lugar de usar las coordenadas x e y del rectángulo de la cara. El presentador explica que, en escenarios de la vida real, sería necesario pasar las coordenadas x e y al método MakeOverlay para saber dónde colocar la superposición. Además, mencionan el método de cambio de tamaño que debería usarse para cambiar el tamaño de la imagen superpuesta según el tamaño del rectángulo, pero esto no es necesario en su ejemplo de trampa.

  • 00:45:00 En esta sección, el orador explica el proceso de fusionar una imagen superpuesta transparente en una imagen base. Primero, la imagen de superposición transparente se convierte a RGB mientras se conserva el canal transparente. Luego, los canales RGB se extraen de la superposición original y se fusionan en un nuevo mapa. Después de eso, el canal de transparencia se fusiona con el nuevo mapa duplicándolo tres veces en un nuevo mapa llamado "superposición de canal alfa 3" y realizando una operación bit a bit. Finalmente, se define la región de interés donde se colocarán las gafas de sol y se extrae el rectángulo de la cara para que sirva como región de interés de la cara para fusionar las gafas de sol.

  • 00:50:00 En esta sección, el orador explica brevemente el proceso de agregar gafas de sol a una cara detectada usando OpenCVSharp. Utilizan operaciones bit a bit para colocar las gafas de sol encima de la cara detectada, mantener la transparencia y volver a colocar la cara en su ubicación original. El orador también destaca algunos pros y contras de OpenCVSharp, como su facilidad de uso, velocidad y compatibilidad con .NET, pero la falta de ejemplos y el soporte incierto a largo plazo. El orador proporciona varios recursos y alienta a los usuarios a patrocinar el proyecto OpenCVSharp en GitHub. Un participante pregunta si OpenCVSharp puede ejecutarse en un microcontrolador como Raspberry Pi, y el orador responde que debería ser posible con el sabor de Linux Arm.
Face Detection Using C# and OpenCVSharp - Practical ML.NET User Group 01/19/2022
Face Detection Using C# and OpenCVSharp - Practical ML.NET User Group 01/19/2022
  • 2022.01.20
  • www.youtube.com
Learn how you can quickly and easily perform face detection in C# using OpenCVSharp. OpenCvSharp is a cross platform wrapper of OpenCV for .NET. We'll explor...
 

Predicción en un modelo ONNX de Custom Vision con ML.NET



Predicción en un modelo ONNX de Custom Vision con ML.NET

En este video de YouTube, el presentador analiza el uso de ML.NET para predecir en un modelo ONNX de visión personalizado. Esto implica exportar el modelo del servicio de visión personalizado e importarlo al proyecto ML.NET. La implementación incluye cambiar el tamaño de las imágenes, extraer píxeles de la imagen, crear un contexto de datos y una lista de datos vacía para cargar los datos de la imagen, usar el marco ML.NET para hacer predicciones en el modelo y generar los resultados. El video también muestra cómo obtener el nombre de salida de un modelo usando una herramienta llamada Neuron y cómo obtener información del cuadro delimitador del modelo para una imagen de prueba dada. El presentador también muestra cómo dibujar un rectángulo alrededor del cuadro delimitador y mostrar las etiquetas pronosticadas mediante la API de gráficos. Se enfatiza la implementación del modelo ONNX utilizando la API ML.NET y el cambio de tamaño de la imagen como la parte más importante de la implementación.

  • 00:00:00 Usaremos el marco ML.NET para predecir en un modelo ONNX de visión personalizado. Para hacer esto, primero debemos exportar el modelo del servicio de visión personalizado e importarlo a nuestro proyecto ML.NET. Una vez que el modelo está en nuestro proyecto, podemos crear una canalización que cambie el tamaño de las imágenes y extraiga los píxeles de la imagen antes de realizar la predicción en el modelo. Para hacer esto, necesitamos descargar y agregar varios paquetes NuGet a nuestro proyecto, así como crear un nuevo contexto de datos y una lista de datos vacía para cargar los datos de la imagen. Finalmente, usamos el marco ML.NET para hacer predicciones sobre el modelo y generar los resultados.

  • 00:05:00 En esta sección, el orador analiza el uso de una herramienta llamada Neuron para obtener el nombre de salida de un modelo descargado de Custom Vision. Neuron es una pequeña aplicación de escritorio que proporciona información sobre un modelo, incluidas las entradas y salidas. Una vez que se obtiene el nombre de salida, se puede usar como el nombre de la columna de salida al llamar a la transformación para aplicar el modelo. El orador también demuestra cómo crear un motor de predicción y usar métodos auxiliares para obtener información del cuadro delimitador del modelo para una imagen de prueba determinada.

  • 00:10:00 En esta sección, el orador continúa con la implementación del modelo de detección de objetos demostrando cómo obtener los cuadros delimitadores, dibujar un rectángulo a su alrededor y mostrar las etiquetas predichas para las imágenes mediante la API de gráficos. La confianza máxima se obtiene para obtener el cuadro delimitador superior donde solo se considera un cuadro delimitador con la confianza máxima. El código también usa métodos auxiliares para dibujar el rectángulo y se devuelve la cadena de la descripción para indicar el porcentaje de confianza. Finalmente, la imagen de prueba se guarda en el sistema de archivos para referencia futura. El ponente destaca que la mayor parte de la implementación es el redimensionamiento de las imágenes y la aplicación del modelo ONNX usando la API ML.NET.
Predicting on a Custom Vision ONNX Model with ML.NET
Predicting on a Custom Vision ONNX Model with ML.NET
  • 2020.01.27
  • www.youtube.com
How to use a model from the Custom Vision service in ML.NET to make predictions.Code - https://github.com/jwood803/MLNetExamples/blob/master/MLNetExamples/Cu...
 

Hacer que las redes neuronales sean portátiles con ONNX



Hacer que las redes neuronales sean portátiles con ONNX

En este video de YouTube, Ron Dagdag explica cómo hacer que las redes neuronales sean portátiles con ONNX, centrándose en el lado de la inferencia del aprendizaje automático. ONNX es un marco de código abierto que permite la portabilidad de los modelos de aprendizaje automático en varias unidades y dispositivos de procesamiento. El orador analiza el proceso de convertir modelos a ONNX, implementar e integrar el modelo con aplicaciones y usarlo para la implementación en la nube y perimetral. También demuestran cómo cargar un modelo ONNX en Node.js e integrar modelos de clasificación de imágenes en aplicaciones web y móviles mediante ONNX Runtime. Los modelos ONNX son un estándar abierto que se puede crear a partir de varios marcos para implementarse de manera eficiente en la plataforma de destino.

  • 00:00:00 En esta sección, Ron Dagdag presenta el concepto de hacer que las redes neuronales sean portátiles a través de ONNX, centrándose en el lado de la inferencia del aprendizaje automático. Explica el proceso típico de programación versus aprendizaje automático y la necesidad de datos de entrenamiento, un marco de entrenamiento, un modelo y un tiempo de ejecución de inferencia para crear algoritmos. También menciona que el enfoque de la presentación estará en el lado de la inferencia, utilizando ONNX para incorporar el modelo en una aplicación.

  • 00:05:00 En esta sección, el orador presenta ONNX como un marco que permite la portabilidad de los modelos de aprendizaje automático en varias unidades de procesamiento, como CPU, GPU y FPGA, así como diferentes dispositivos como la nube o IoT. Lo comparan con un PDF en el sentido de que es un formato que se puede consumir en cualquier lugar y es de código abierto en GitHub, habiendo obtenido más de 11 000 estrellas y 200 colaboradores. El orador recomienda usar ONNX cuando se trata de modelos entrenados en Python que deben implementarse con otras aplicaciones o requieren una alta latencia de inferencia, como ejecutarse en dispositivos perimetrales como Azure Percept.

  • 00:10:00 En esta sección, el orador analiza escenarios en los que es necesario convertir una aplicación programada en un sistema operativo (SO) o hardware específico para que se ejecute en un SO o hardware diferente. La solución es convertir el programa a formato ONNX. ONNX se usa cuando se ejecutan modelos que se crean a partir de diferentes marcos y cuando el entrenamiento lleva demasiado tiempo. Luego, el orador continúa detallando cuatro formas de obtener un modelo ONNX, la primera de las cuales es el zoológico modelo ONNX en GitHub. A esto le sigue el servicio de visión personalizado, la conversión a partir de un modelo existente y el entrenamiento mediante el aprendizaje automático de Azure o el aprendizaje automático automatizado.

  • 00:15:00 En esta sección, el orador analiza el proceso de conversión de modelos a ONNX. El proceso no se limita a modelos escritos en Python y también se puede realizar con ML.NET. El orador demuestra cómo convertir un modelo ML.NET y luego guardarlo en ONNX. Hay muchos modelos disponibles que se han convertido a ONNX, incluidos los modelos de clasificación de imágenes y detección de objetos. Custom Vision Service también se puede utilizar para cargar imágenes y etiquetarlas para clasificar diferentes tipos de objetos. GitHub proporciona una aplicación llamada Netron que permite a los ingenieros de software visualizar cómo se ve un modelo ONNX, incluidas su entrada y salida. El ponente explica que también se puede generar un modelo ONNX convirtiéndolo de PyTorch o TensorFlow.

  • 00:20:00 En esta sección, el orador demuestra cómo generar un modelo de regresión y exportarlo a ONNX, un formato de código abierto que permite la portabilidad cuando se usan diferentes marcos de aprendizaje automático. Con C# y ml.net, el orador carga datos salariales en un marco de datos y entrena un modelo de regresión, especificando la columna de etiqueta y la entrada (años de experiencia) mediante una canalización. Después de evaluar el modelo, lo convierten a ONNX pasando el modelo, los datos de muestra y la transmisión al contexto, lo que da como resultado un archivo que se puede ver con Netron. El orador señala que ONNX también se puede usar como un formato intermediario para convertir modelos de aprendizaje automático entre marcos, como PyTorch y TensorFlow.

  • 00:25:00 En esta sección, el orador analiza el proceso de implementación e integración de un modelo ONNX en una aplicación. La conversión de modelos a ONNX permite la compatibilidad entre diferentes marcos, y los usuarios también pueden usar modelos ONNX para transferir aprendizaje y ajustes. El orador enfatiza la importancia de controlar las versiones y tener un registro modelo, como un registro de contenedores, para facilitar el seguimiento y la implementación. Además, el orador destaca los diferentes conjuntos de habilidades necesarios para que los científicos de datos construyan la "receta" frente a los que necesitan los ingenieros que inician una "panadería" e integran la IA en las aplicaciones. La charla cubre varios marcos y plataformas que admiten la implementación de modelos ONNX, como Azure Machine Learning, Ubuntu o Windows Server, y dispositivos IoT edge.

  • 00:30:00 En esta sección, el orador analiza la implementación de modelos de aprendizaje automático, cubriendo tanto la implementación en la nube como en el perímetro. Según el orador, la implementación de borde se trata de qué tan cerca está el procesamiento de datos de los usuarios, y está mucho más cerca que la nube. La ejecución de IA en el perímetro es ideal para lograr una latencia baja y ahorrar costos, ya que puede procesar datos localmente sin cargarlos en la nube. Además, la ejecución local es más flexible y puede garantizar el cumplimiento de la privacidad, lo que es particularmente importante cuando se trata de reglas que prohíben compartir imágenes fuera de la red. Para facilitar la implementación de modelos de aprendizaje automático en el perímetro, Microsoft ha desarrollado un tiempo de ejecución ONNX de código abierto que admite no solo redes neuronales sino también especificaciones tradicionales de aprendizaje automático, puede realizar inferencias de alto rendimiento y tiene una arquitectura extensible para aceleradores de hardware.

  • 00:35:00 En esta sección, el orador analiza cómo hacer que las redes neuronales sean portátiles con ONNX. ONNX runtime permite a los usuarios ejecutar modelos en diferentes unidades de procesamiento, incluidas GPU, CPU y VPU, y se puede usar en varias plataformas, como Windows, navegadores web, Node.js y aplicaciones React Native. El orador muestra una demostración sobre cómo cargar un modelo ONNX en una aplicación Node.js y cómo pasar valores de entrada para recibir la salida deseada. Al usar el tiempo de ejecución de ONNX, los desarrolladores pueden incorporar fácilmente modelos de aprendizaje automático en sus aplicaciones sin preocuparse por la compatibilidad del hardware.

  • 00:40:00 En esta sección, el video analiza ONNX Runtime Web, una biblioteca de JavaScript diseñada para ejecutar modelos ONNX directamente en un navegador utilizando tecnologías WebAssembly y WebGL optimizadas. Este método de inferencia en el navegador es más rápido, más seguro y más económico, al mismo tiempo que permite el uso sin conexión. Sin embargo, puede que no sea eficiente para modelos más grandes que requieren especificaciones de hardware específicas y podría resultar en tiempos de descarga más prolongados. El video proporciona un ejemplo del uso de ONNX Runtime Web para analizar una imagen de un bebé que llora, demostrando cómo el modelo se integra en un archivo HTML y se ejecuta usando el tiempo de ejecución.

  • 00:45:00 En esta sección del video, el presentador demuestra cómo usar el zoológico modelo de ONNX y el tiempo de ejecución web de ONNX para integrar un modelo de clasificación de imágenes en una aplicación web. Sube una imagen a la aplicación web y la cambia de tamaño y la convierte a escala de grises y un tensor para prepararla para el modelo previamente entrenado. Con el tiempo de ejecución web de ONNX, el modelo se carga y alimenta la imagen procesada, lo que da como resultado una predicción de la emoción expresada en la imagen. Luego, el presentador demuestra la puntuación de un modelo ONNX previamente entrenado en una aplicación React Native.

  • 00:50:00 En esta sección, el orador analiza el uso de ONNX runtime mobile como una solución de inferencia liviana para ejecutar modelos ONNX optimizados en plataformas Android e iOS. Para integrar ONNX runtime mobile en la aplicación, se puede usar npm install ONNX runtime react native, que minimiza el tamaño binario a un modelo ONNX preoptimizado llamado formato ort. El tutorial disponible en onnxruntime.ai explica paso a paso cómo implementar modelos ONNX usando varias plataformas como nodo, navegador web, reaccionar móvil, etc. La tabla de compatibilidad muestra que Chrome admite ensamblaje web y webGL en Windows 10, macOS, Ubuntu , iOS y Android. Los modelos ONNX son un estándar abierto que se puede crear a partir de varios marcos para implementar utilizando las herramientas adecuadas de manera eficiente en la plataforma de destino.
Making neural networks portable with ONNX
Making neural networks portable with ONNX
  • 2021.11.28
  • www.youtube.com
Making neural networks portable with ONNXBy Ron Dagdag - Lead Software Engineer at Space and Microsoft MVP#comunidadailive
 

En .NET Live: IA en todas partes: Azure ML y ONNX Runtime



En .NET Live: IA en todas partes: Azure ML y ONNX Runtime

El video "On .NET Live - AI Everywhere: Azure ML and ONNX Runtime" se centra en el uso de Azure ML y ONNX Runtime para el aprendizaje automático con C#. Los oradores discuten los beneficios de usar el formato ONNX para exportar modelos a través de lenguajes de programación, la optimización del tiempo de ejecución de ONNX para aceleración e inferencia de hardware, y su compatibilidad con versiones específicas del marco. También muestran cómo usar ONNX Runtime con Azure ML en Python y .NET, crear y entrenar un modelo de red neuronal y explicar la inferencia y su paso final en el aprendizaje automático. El video concluye con la introducción de un nuevo proveedor para el tiempo de ejecución de ONNX que permite el uso de OpenVINO para la CPU ARM, proporcionando capacidades de depuración.

En esta sección del video, los anfitriones analizan la flexibilidad y la capacidad de configuración del tiempo de ejecución de ONNX y su capacidad para ejecutarse en varias plataformas de hardware y software. El tiempo de ejecución de ONNX se considera un excelente contenedor para diferentes plataformas, ya que los clientes pueden usarlo en una nube, Android, iOS o la CPU Snapdragon, y permite una inferencia más rápida.

  • 00:00:00 En esta sección, los anfitriones presentan al invitado, Maro Benici, un desarrollador italiano de .NET con experiencia en inteligencia artificial (IA). El episodio se centrará en cómo usar Azure ML y ONNX Runtime con C# para seguir estudiando el aprendizaje automático. En el segmento de bits relacionados, discuten un documento en el sitio de Azure Machine Learning sobre cómo hacer predicciones con modelos AutoML ONNX en .NET, que está estrechamente relacionado con el tema del día.

  • 00:05:00 En esta sección, el orador analiza la opción de exportar modelos de aprendizaje automático al formato ONNX para compartir modelos entre marcos usando componentes en Automl dentro de Azure Machine Learning. Para realizar la inferencia en .NET, se usa el paquete de tiempo de ejecución ONNX, con ml.net realizando la canalización de predicción usando el modelo ONNX. Se presenta Netron, una herramienta para comprender las entradas y salidas de un modelo, y se demuestra la creación de clases para entradas y salidas. Finalmente, se define la canalización que incluye el modelo y se ejecuta una instancia de entrada a través del motor para hacer predicciones, con el resultado de la tarifa prevista. Luego, el orador presenta brevemente un artículo relacionado sobre el uso del tiempo de ejecución de ONNX con Stable Difussion para generar imágenes de IA.

  • 00:10:00 En esta sección, el ponente habla sobre cómo ha evolucionado la tecnología en los últimos 15 años, desde el hardware personalizado hasta los centros de datos y la computación en la nube. Da un ejemplo de su primer proyecto en 2006, que involucró sensores hechos a mano para capturar minerales en un viñedo, y cómo los datos se almacenaron en discos duros portátiles y se enviaron a un laboratorio para ser analizados. Hoy, el mismo proyecto podría realizarse con un teléfono móvil, con datos recopilados en la nube y analizados en tiempo real, lo que permite realizar alertas y ajustes instantáneos. El orador también analiza cómo el cambio a la nube ha abierto oportunidades para las empresas, con servicios basados en la nube ahora disponibles para clientes que anteriormente estaban restringidos a la informática en las instalaciones.

  • 00:15:00 En esta sección, el orador analiza los desafíos que enfrentan los clientes que usan diferentes lenguajes de programación para construir e implementar sus modelos de aprendizaje automático. Explica que el formato ONNX se creó como una solución a este problema, lo que permite a los clientes guardar sus modelos en un lenguaje que se puede recargar en un lenguaje de programación diferente. Continúa explicando que ONNX puede exportar las funciones matemáticas y los valores de las capas en la red neuronal, lo que permite una fácil conversión entre diferentes idiomas. El ponente destaca que ONNX está siendo utilizado por muchas empresas, lo que permite externalizar el código y utilizar diferentes empresas que conocen diferentes lenguajes de programación.

  • 00:20:00 En esta sección, el video analiza el marco ONNX y su uso para exportar y ejecutar modelos de aprendizaje automático en diferentes plataformas y lenguajes de programación. El marco ONNX permite a los usuarios exportar modelos y ejecutarlos sin tener que volver a cargar bibliotecas o marcos, lo que facilita las cosas a los clientes que quizás no conozcan Python y TensorFlow. El tiempo de ejecución de ONNX es de código abierto y está disponible en GitHub, y los usuarios pueden seleccionar su idioma y arquitectura preferidos para ejecutar el modelo. El video también aborda la compatibilidad del conjunto de operaciones y cómo se ve influenciado, ya que es esencial garantizar la compatibilidad con versiones específicas del marco.

  • 00:25:00 En esta sección, los oradores analizan cómo garantizar que las funciones matemáticas utilizadas en los modelos de IA sean compatibles con la biblioteca de tiempo de ejecución de ONNX. Recomiendan usar la versión más reciente de la biblioteca, que admite todas las operaciones en el modelo. También mencionan que hay una actualización reciente de la documentación de ONNX que proporciona una mejor visibilidad de qué aplicaciones son compatibles y cuáles no. Si una función matemática no es compatible, se genera una alerta y se informa al usuario qué desplazamiento no es compatible. Los oradores también analizan los beneficios de la biblioteca de tiempo de ejecución ONNX, como la aceleración de hardware para GPU y la optimización para modelos de IA.

  • 00:30:00 En esta sección, el orador analiza la optimización del tiempo de ejecución de ONNX y la capacidad de usarlo tanto para capacitación como para inferencia. Con ONNX, uno puede optimizar el proceso de capacitación y acomodar hardware personalizado sin comenzar desde cero. El orador también confirma que el tiempo de ejecución de ONNX se puede usar para optimizar el hardware de entrenamiento, mientras que se puede elegir otro hardware para la inferencia. En general, el orador destaca la capacidad de crear y entrenar modelos para cualquier entorno de hardware y la flexibilidad del tiempo de ejecución de ONNX.

  • 00:35:00 En esta sección, el orador habla sobre el uso de Azure ML y ONNX Runtime para crear una red neuronal para clasificar flores. Comienzan seleccionando la aplicación que se ejecuta dentro de una máquina S11 estándar para medir. Luego, usan Tensorflow como lo usa generalmente su empresa, y eligen pandas, NumPy y otras herramientas de preprocesamiento. Analizan la codificación de cadenas como matrices y la división del conjunto de datos entre entrenamiento y prueba. Finalmente crean la red neuronal, que codifican en formato ONNX para que pueda usarse en el centro de datos de su cliente.

  • 00:40:00 En esta sección del video, el orador explica el proceso de entrenamiento de un modelo de red neuronal usando Azure Machine Learning y TensorFlow. Demuestra cómo compilar el modelo y optimizar la precisión antes de evaluar el rendimiento del modelo. Una vez que se entrena el modelo, muestra cómo importar el modelo a TensorFlow para crear un nuevo modelo para el cliente. Para que sea más fácil para el cliente, define la especificación de entrada y nombra la entrada y la salida. También explica los beneficios de convertir el modelo a formato ONNX para probarlo antes de entregarlo al cliente.

  • 00:45:00 En esta sección del video, el orador muestra cómo usar ONNX Runtime con Azure ML en Python y .NET. Importan ONNX una vez en Python, seleccionan un proveedor y cargan el tiempo de ejecución de ONNX para usarlo mientras ignoran el modelo de TensorFlow. Crean entradas y las alimentan con valores de matriz antes de ejecutar el modelo para obtener la salida. Además, el orador muestra cómo crear un punto final para exponer ONNX directamente en Azure y cómo usar ONNX en un dispositivo IoT o un teléfono inteligente usando una aplicación de consola en .NET Core.

  • 00:50:00 En esta sección, los anfitriones explican el concepto de inferencia, que es el paso final en el aprendizaje automático donde la red neuronal entrenada se usa para predecir resultados en función de nuevos datos que nunca antes había visto. También analizan el formato ONNX, que puede convertir cualquier modelo de tensor personalizado en un formato compatible con ONNX Runtime. Mencionan que el procesamiento previo y posterior del modelo también se puede serializar en el propio modelo ONNX, lo que facilita su ejecución en cada plataforma. Los anfitriones demuestran que el proceso es similar en diferentes idiomas una vez que se carga el modelo.

  • 00:55:00 En esta sección, el orador habla sobre el nuevo proveedor que ha llegado para el tiempo de ejecución de ONNX, lo que hace posible usar OpenVINO para la CPU ARM, lo que permite la depuración. El orador enfatiza el poder de esto, afirmando que cuando el modelo es compatible y es posible ejecutarlo, no hay necesidad de cambiar el código y es posible ejecutar el mismo modelo sin convertirlo constantemente. El orador señala que, si bien la elección del hardware para el modelo es esencial, no es algo que controle el tiempo de ejecución de ONNX, y las decisiones que se toman al poner en funcionamiento el modelo deben tener en cuenta los requisitos de hardware. Además, el orador menciona que es posible usar el tiempo de ejecución de ONNX en un clúster y, por inferencia, no es necesario convertir el modelo cada vez.
On .NET Live - AI Everywhere: Azure ML and ONNX Runtime
On .NET Live - AI Everywhere: Azure ML and ONNX Runtime
  • 2023.03.06
  • www.youtube.com
How can you create and deploy AI models that work across different platforms and environments? On this week’s episode, Mauro Bennici joins the panel to show ...
 

Berlin Buzzwords 2019: Lester Solbakken: escalar la evaluación del modelo ONNX y TensorFlow en la búsqueda



Berlin Buzzwords 2019: Lester Solbakken: escalar la evaluación del modelo ONNX y TensorFlow en la búsqueda

Lester Solbakken analiza los desafíos de escalar el aprendizaje automático para aplicaciones de búsqueda y propone una solución alternativa al uso de servidores de modelos externos. Sugiere evaluar modelos de aprendizaje automático en nodos de contenido, en lugar de enviar datos a servidores de modelos externos, para mejorar la escalabilidad y controlar la latencia y el rendimiento. Solbakken destaca el uso de Vespa de su propio lenguaje de clasificación y extensión de API de tensor para facilitar la creación de un paquete declarativo de estado para una aplicación, y el esfuerzo continuo para admitir modelos de aprendizaje automático en Vespa. Él enfatiza la importancia de comprender la correlación entre las diferentes fases de la clasificación para evitar problemas de recuperación a nivel del sistema y alienta a las personas a contribuir con el proyecto de código abierto.

  • 00:00:00 En esta sección del video, Lester Solbakken analiza los desafíos de escalar la producción de aprendizaje automático específicamente para aplicaciones basadas en búsqueda. Explica cómo los servidores modelo se han vuelto cada vez más populares para resolver problemas de rendimiento y escalabilidad, pero para las aplicaciones de búsqueda, evaluar el modelo para cada uno de los resultados de la búsqueda conduce rápidamente a un cuello de botella en la capacidad de la red. La solución es enviar menos datos para obtener resultados o encontrar una forma de evaluar el modelo localmente para cada servidor. Solbakken aborda el trabajo de su equipo con la plataforma de búsqueda Vespa para abordar estos problemas.

  • 00:05:00 En esta sección, Lester Solbakken analiza el desafío de escalar la evaluación del modelo ONNX y TensorFlow para la búsqueda. Una posible solución es enviar características a los servidores modelo, pero el problema es que los servidores modelo y de contenido pueden estar evaluando la clasificación en función de diferentes conjuntos de características, lo que puede disminuir la probabilidad de obtener los mejores resultados a nivel mundial. En cambio, Solbakken sugiere evaluar modelos en servidores de contenido para lograr mejores resultados, algo en lo que se ha trabajado en Vespa. Vespa, que se usa mucho en cientos de miles de consultas por segundo en todo el mundo con cientos de publicaciones en los EE. UU., tiene funciones básicas ricas, que incluyen elasticidad, escalabilidad y capacidad para puntajes relevantes avanzados.

  • 00:10:00 En esta sección, Lester Solbakken analiza cómo Vespa integra ONNX y TensorFlow para facilitar la creación de un paquete declarativo de estado para una aplicación, lo que facilita el uso de modelos de aprendizaje automático. Vespa utiliza su propio lenguaje de clasificación para ejecutar estos modelos, y la extensión de la API de tensor proporciona un pequeño conjunto de características principales que pueden representar diferentes tipos de cómputo. El beneficio de esto es que diferentes modelos de diferentes fuentes se pueden traducir a este formato, lo que facilita su optimización. Solbakken también destaca un punto de referencia que establecieron para probar la hipótesis de que el envío de datos no es eficiente, emulando un sistema de recomendación de blog en el que utilizaron un producto de punto en la primera fase y una red neuronal en la segunda fase.

  • 00:15:00 En esta sección, el ponente analiza las limitaciones de escalabilidad de los servidores de modelos externos para el aprendizaje automático en la búsqueda y propone una solución alternativa. Explica que agregar nodos de contenido adicionales para distribuir la carga de trabajo puede mejorar la latencia y sugiere que al hacer que estos nodos reescriban una mayor cantidad de documentos, puede aumentar la cantidad de resultados con modelos de aprendizaje automático, lo que resulta en resultados de mayor calidad. A través de la clasificación de varias fases, donde la evaluación se realiza en el nodo de contenido y no solo a través de una red, es posible escalar y controlar la latencia y el rendimiento. El orador concluye que los servidores de modelos externos no son una buena solución para escalar y enfatiza la importancia de evaluar en el nodo de contenido.

  • 00:20:00 En esta sección, Lester Solbakken habla sobre la clasificación multifase en Vespa y la importancia de comprender la correlación entre las diferentes fases para evitar problemas de recuperación a nivel del sistema. También menciona que el soporte del modelo en el aprendizaje automático y Vespa es un esfuerzo continuo y alienta a las personas a contribuir con el proyecto de código abierto. Para aquellos interesados en jugar con Vespa, pueden encontrar muchos recursos en la página de inicio de Vespa AI, incluidas aplicaciones de muestra, casos de uso y tutoriales.
Berlin Buzzwords 2019: Lester Solbakken – Scaling ONNX and TensorFlow model evaluation in search
Berlin Buzzwords 2019: Lester Solbakken – Scaling ONNX and TensorFlow model evaluation in search
  • 2019.06.20
  • www.youtube.com
With the advances in deep learning and the corresponding increase in machine learning frameworks in recent years, a new class of software has emerged: model ...
 

Asimilar ONNX



Asimilar ONNX

En este video, el presentador presenta ONNX como un estándar abierto para la interoperabilidad del aprendizaje automático que puede funcionar en todas las plataformas diferentes. Pasan por el proceso de crear un proyecto ONNX desde cero, modificando un ejemplo del repositorio de Microsoft, solucionando problemas y explorando otros proyectos de Github relacionados con ONNX. Luego prueban un enlace ONNX usando GPT2 y CUDA, y expresan su interés en explorar los enlaces Rust en tiempo de ejecución de ONNX en el futuro. El presentador destaca la versatilidad y portabilidad de ONNX y lo ve como una buena herramienta para experimentar y construir proyectos más sustanciales en el futuro.

  • 00:00:00 En esta sección, el orador presenta ONNX, un estándar abierto para la interoperabilidad del aprendizaje automático que permite el uso de muchos marcos y aceleradores diferentes para la inferencia en los servicios en la nube. Mencionan la disponibilidad de un envoltorio seguro alrededor del tiempo de ejecución de ONNX con un acelerador de entrenamiento e inferencia de ML de alto rendimiento multiplataforma. También destacan la portabilidad asociada con ONNX, ya que puede funcionar en todas las plataformas diferentes, y demuestran cómo crear un nuevo proyecto ONNX desde cero utilizando ejemplos de la sucursal de Microsoft. El orador señala que con ONNX trabajando activamente e integrándose continuamente, proporciona una buena herramienta para jugar en el aprendizaje automático.

  • 00:05:00 En esta sección del video, el presentador navega al sitio web de ONNX para obtener la versión más reciente y crear un tiempo de ejecución de ONNX. También muestran cómo copiar y modificar un ejemplo del repositorio de Microsoft y agregar un archivo MAKE. Además, integran el suscriptor de seguimiento y gbt en el código y agregan el modelo de red de compresión. El presentador encuentra algunos errores, pero los resuelve revisando un ejemplo anterior y asegurándose de que estén disponibles los modelos correctos.

  • 00:10:00 En esta sección, el orador está solucionando un problema en el que intenta usar una versión específica de ONNX, pero se encuentra con errores. Intentan varios métodos para solucionar el problema, como copiar un ejemplo de trabajo y reconstruir el proyecto, pero ninguno de ellos parece funcionar. Eventualmente, encuentran un ejemplo más antiguo en la documentación de ONNX que funciona con la versión deseada. Intercambian el modelo y pueden compilar y ejecutar el programa con éxito. En general, esta sección destaca la importancia de verificar minuciosamente las dependencias y estar dispuesto a probar diferentes soluciones durante la depuración.

  • 00:15:00 En esta sección del video, el orador analiza las limitaciones del ejemplo básico de ONNX "Hola mundo" y sugiere que sería más útil tener un ejemplo que cargue y manipule una imagen. Destacan algunos otros proyectos de Github relacionados con ONNX, como Rust Code Search y Track ONNX, que tienen funcionalidades más avanzadas y muestran interés en probarlos. Además, exploran el proyecto GPT-RS, que permite el uso de modelos GPT2 con CUDA, y explican cómo podría usarse para manipular datos de imágenes.

  • 00:20:00 En esta sección, el usuario prueba un enlace ONNX usando GPT2 y CUDA, que genera salidas de prueba para completar código o completar texto. El usuario considera que este ejemplo es prometedor y expresa interés en explorar los enlaces de Rust en tiempo de ejecución de ONNX en el futuro. Resume su experiencia como un experimento interesante y expresa el deseo de construir algo más sustancial en su próximo intento con ONNX.
Assimilate Onnx
Assimilate Onnx
  • 2023.03.27
  • www.youtube.com
Assimilate OnnxLearn #onnx for #mlopsGitHub Repo: https://github.com/nogibjj/assimilate-onnxWatch on @oreilly: YouTube Playlist: Hashtags: #learnonnx, #m...
 

HITNET vs. Comparación de estimación de profundidad estéreo neuronal ACVNet (ONNX)



HITNET vs. Comparación de estimación de profundidad estéreo neuronal ACVNet (ONNX)

Comparación de los modelos de estimación de profundidad estéreo HITNET y ACVNet en el conjunto de datos Driving Stereo.

Detalles de la inferencia del modelo (NVIDIA 1660 SUPER):
HITNET (640X480): 220ms
ACVNet (640x384): 480ms
Referencias: [Inferencia HITNET] https://github.com/ibaiGorordo/ONNX-HITNET-Stereo-Depth-estimation
[Inferencia de ACVNet] https://github.com/ibaiGorordo/ONNX-ACVNet-Stereo-Depth-Estimation
[Conjunto de datos de Driving Stereo] https://drivingstereo-dataset.github.io/

HITNET Vs. ACVNet Neural Stereo Depth Estimation Comparison (ONNX)
HITNET Vs. ACVNet Neural Stereo Depth Estimation Comparison (ONNX)
  • 2022.03.26
  • www.youtube.com
Comparison of the HITNET and ACVNet stereo depth estimation models in the Driving Stereo dataset.Model Inference details (NVIDIA 1660 SUPER):HITNET (640X480)...
 

Importe, entrene y optimice modelos ONNX con NVIDIA TAO Toolkit



Importe, entrene y optimice modelos ONNX con NVIDIA TAO Toolkit

El video muestra cómo usar NVIDIA TAO Toolkit para importar, entrenar y optimizar modelos ONNX. Comienza con la descarga de un modelo ResNet18 previamente entrenado, lo ajusta con TAO en el conjunto de datos de VOC de Pascal y proporciona pasos para importar el modelo y visualizar el gráfico ONNX. El progreso de la capacitación se puede monitorear mediante la visualización de TensorBoard y se pueden usar capas personalizadas en caso de errores de conversión ONNX. El video también explica cómo evaluar el rendimiento del modelo mediante la observación de la pérdida decreciente, la validación de la pérdida y el análisis de pesos y sesgos. Los usuarios pueden evaluar la precisión del modelo en el conjunto de datos de prueba y las imágenes de muestra y continuar con la poda y la optimización para mejorarlo aún más.

  • 00:00:00 En esta sección, el video explica cómo importar, entrenar y optimizar modelos ONNX usando NVIDIA TAO Toolkit. El video comienza con la descarga de un modelo ResNet18 previamente entrenado, que luego se ajusta en el conjunto de datos Pascal VOC usando TAO. También se cubren los pasos para importar el modelo ONNX y visualizar el gráfico ONNX. Además, el video explica cómo monitorear el progreso del trabajo de entrenamiento usando la visualización de TensorBoard. Por último, el video menciona que TAO puede manejar capas personalizadas y brinda orientación sobre cómo usarlas para importar modelos que no se pueden convertir.

  • 00:05:00 En esta sección, el orador analiza cómo evaluar el rendimiento del modelo entrenado. Los usuarios pueden ver la pérdida decreciente para asegurarse de que el modelo está mejorando. Además, la pérdida de validación puede ayudar a identificar el sobreajuste. Los usuarios más avanzados pueden ver gráficos e histogramas para comprender los pesos y sesgos del modelo. El orador demuestra cómo verificar la precisión general del modelo en el conjunto de datos de prueba y cómo evaluar el rendimiento del modelo en imágenes de muestra. El modelo tiene margen de mejora, y los usuarios pueden continuar con la poda y optimización del modelo para mejorar aún más la precisión.
Import, Train, and Optimize ONNX Models with NVIDIA TAO Toolkit
Import, Train, and Optimize ONNX Models with NVIDIA TAO Toolkit
  • 2022.05.19
  • www.youtube.com
The #NVIDIATAO Toolkit, built on TensorFlow and PyTorch, is a low-code AI solution that lets developers create custom AI models using the power of transfer l...