Redes Neurais em IA e Deep Learning - página 37

 

Lección 9 Aprendizaje profundo 2: modelos generativos, GAN, codificadores automáticos variacionales (VAEs) (MLVU2019)



9 Aprendizaje profundo 2: modelos generativos, GAN, codificadores automáticos variacionales (VAEs) (MLVU2019)

El video cubre varios temas relacionados con el aprendizaje profundo, incluidos datos divididos para proyectos de aprendizaje profundo, transferencia de aprendizaje y un enfoque en modelos generativos. El disertante explora el concepto de usar redes neuronales para generar resultados aleatorios y distribuciones de probabilidad, explicando diferentes métodos de entrenamiento de generadores como redes adversarias generativas y codificadores automáticos. También profundizan en la importancia de las GAN, las GAN condicionales, la esteganografía y los codificadores automáticos en diversas aplicaciones de aprendizaje automático, como la manipulación de datos y la reducción de la dimensionalidad. El orador analiza la manipulación de datos en el espacio latente para manipulaciones de datos de alto nivel sin muchos datos etiquetados y la necesidad de un enfoque alternativo como codificadores automáticos variacionales.

Esta segunda parte del video explora los codificadores automáticos variacionales (VAEs), un tipo de modelo generativo destinado a abordar el problema del colapso de modo que a menudo se ve con otros modelos. Se utilizan dos redes neuronales para codificar la entrada en el espacio latente y decodificarla nuevamente en el espacio de entrada, lo que permite la optimización tanto de la codificación como de la decodificación. El orador descompone la función de pérdida en un término de divergencia KL y un término de probabilidad logarítmica esperada, que se puede utilizar para optimizar la red. Se explican los desafíos de maximizar una expectativa en VAE y se analiza el truco de la reparametrización como una forma de superar este problema. El orador compara VAE con otras técnicas como GAN y PCA, y concluye que, si bien los VAE son más potentes, también son más difíciles de entrenar.

  • 00:00:00 En esta sección, el orador le recuerda a la audiencia que divida sus datos en conjuntos de entrenamiento y prueba antes de mirar los datos, ya que una vez que se han visto, no se pueden dejar de ver. Para aquellos que trabajan en proyectos de aprendizaje profundo, sugieren usar el aprendizaje por transferencia para crear modelos poderosos sin una capacitación costosa, mediante el uso de una red previamente capacitada de compañías como Google y agregando sus propias capas en la parte superior. Esta es una buena opción para quienes no tienen acceso a máquinas grandes con GPU grandes. Además, el orador aconseja revisar la rúbrica del proyecto para asegurarse de que todos los aspectos importantes estén cubiertos para una calificación de aprobación fácil.

  • 00:05:00 En esta sección, el video analiza el aprendizaje profundo para el modelado generativo, donde se entrena una red neuronal para producir una distribución de probabilidad a partir de la cual se pueden muestrear cosas nuevas, como imágenes o fragmentos de lenguaje. El primer paso es construir una red neuronal llamada generador que pueda producir estas cosas nuevas. Se muestra un ejemplo de una red neuronal que fue entrenada para generar imágenes de personas que en realidad no existen. Luego, el video continúa explicando las dos formas de entrenar generadores, que son redes antagónicas generativas y codificadores automáticos, con un enfoque en codificadores automáticos variacionales como un enfoque más basado en principios.

  • 00:10:00 En esta sección, el orador explica cómo usar las redes neuronales para generar resultados aleatorios y distribuciones de probabilidad. Hay dos formas de hacer esto: alimentando a la red con alguna entrada e interpretando su salida como la media y Sigma de una distribución normal multivariada, o muestreando entradas aleatorias de una distribución normal multivariada estándar y alimentándolas a través de una red neuronal para observar la distribución. producción. El último enfoque puede producir distribuciones de probabilidad muy complejas e interesantes, como lo demuestra el experimento del orador con una red neuronal de dos capas que transformó una distribución normal multivariante en una distribución no normal con una forma compleja. Este enfoque se puede utilizar para modelar distribuciones muy complejas, como rostros humanos.

  • 00:15:00 En esta sección, el instructor explica los pasos de entrenamiento para modelos generativos y los problemas que puede enfrentar, como el colapso de modo. Un enfoque ingenuo para ajustar la distribución de probabilidad que representa una red neuronal a un conjunto de datos es a través de la retropropagación, utilizando la distancia entre las imágenes generadas y las originales como una pérdida. Sin embargo, este enfoque a menudo falla y hace que todos los modos del conjunto de datos colapsen en un solo modo. Luego, el instructor presenta dos ejemplos de modelos generativos que han funcionado bien: Redes adversarias generativas (GAN) y codificadores automáticos variacionales (VAEs). El instructor explica la historia detrás de las redes neuronales convolucionales (CNN), que inspiraron a las GAN, y cómo funcionan a través de dos redes que compiten entre sí para mejorar las imágenes generadas. Los VAE, por otro lado, tienen una red codificadora que comprime la imagen original en una distribución de probabilidad y una red decodificadora que genera una nueva imagen a partir de esa distribución.

  • 00:20:00 En esta sección, el orador analiza una técnica utilizada para optimizar la entrada para generar imágenes que coincidan con una determinada neurona de salida, lo que lleva a la aparición de ejemplos contradictorios, que son imágenes falsas que se puede engañar a la red para que piense que son algo completamente diferente. Esta técnica fue inicialmente un golpe para la comunidad de redes neuronales, pero condujo al desarrollo de un algoritmo de aprendizaje ad hoc en el que se generan ejemplos contradictorios y se agregan al conjunto de datos como ejemplos negativos. Sin embargo, este enfoque no fue del todo eficiente, por lo que se desarrolló una solución integral llamada Vanilla GAN, que es un enfoque básico que el orador usa para ilustrar otras tres formas de construir sobre el marco para crear ejemplos impresionantes.

  • 00:25:00 En esta sección, los presentadores explican cómo funcionan las GAN (Generative Adversarial Networks). Las GAN se componen de dos redes neuronales, un generador que produce salidas y un discriminador que es un clasificador de imágenes que determina cuáles de las salidas son falsas. El objetivo de entrenar un gan es permitir que la red del generador cree resultados cada vez más realistas. Como explica el presentador, el generador y el discriminador funcionan como un juego de suma cero de dos personas, en el que cada red intenta ser más astuta que la otra. El generador es responsable de intentar crear salidas falsas que engañen al discriminador, y el trabajo del discriminador es atrapar estas salidas falsas. Los presentadores explican que después del entrenamiento, las salidas de la GAN serán una combinación de la entrada objetivo y la aleatoriedad.

  • 00:30:00 En esta sección, el orador analiza las GAN condicionales, cuyo objetivo es combinar la capacidad de generar datos con el control sobre la salida. A diferencia de las GAN normales, que generan salidas sin ningún control, las GAN condicionales toman una entrada que controla la salida, lo que las hace útiles para conjuntos de datos con varias etiquetas. El orador también analiza el ciclo GAN, que utiliza dos generadores para mapear dos bolsas de imágenes no emparejadas y agrega un término de pérdida de consistencia de ciclo para garantizar que si una imagen se mapea de un lado a otro, se obtiene la imagen original. Esto permite la generación de imágenes adicionales que, de otro modo, serían costosas de crear.

  • 00:35:00 En esta sección, el orador explica el concepto de esteganografía, que oculta un código a simple vista, y cómo se relaciona con modelos generativos como GAN y VAE que ocultan una imagen dentro de otra. El objetivo de estos modelos es hacer que el discriminador no pueda decir que una imagen está oculta dentro de otra. El ponente muestra ejemplos de cómo estos modelos pueden transformar imágenes en diferentes estilos, como convertir una fotografía en una pintura de Monet. El ponente también habla sobre el estilo GAN, que genera imágenes hiperrealistas de personas, y cómo funciona alimentando el vector latente a través de una red neuronal deconvolucional que genera imágenes con propiedades semánticas de bajo a alto nivel.

  • 00:40:00 En esta sección, el orador analiza un modelo que permite controlar los detalles de las imágenes generadas al alimentar ruido aleatorio a la red en cada capa. Este método reduce la carga de trabajo en el vector latente y también permite la generación de imágenes únicas. El orador demuestra esta técnica alterando la luz y el vector en puntos específicos durante el proceso de generación, lo que da como resultado imágenes con características específicas elegidas en cada nivel. Este modelo presenta un nivel de control que se extiende más allá de la simple generación de rostros hiperrealistas.

  • 00:45:00 En esta sección, el orador analiza lo que se puede hacer una vez que se crea un generador. Una de las técnicas se llama interpolación, que consiste en tomar dos puntos del espacio de distribución multivariable y trazar una línea entre ellos, seleccionando puntos espaciados uniformemente y alimentándolos a través del generador, lo que permite ver la transformación gradual de una salida a la otra. próximo. Esto se puede hacer en una cuadrícula de puntos igualmente espaciados para asignar esquinas a puntos arbitrarios en el espacio de iluminación, creando una cuadrícula de interpolación. Estos espacios latentes se presentan generalmente en topologías esféricas, lo que significa que para realizar la interpolación, también debemos movernos a través de esta región esférica, conocida como interpolación esférica. Finalmente, para realizar la manipulación de datos o la reducción de la dimensionalidad, es necesario mapear en el espacio latente, lo que requiere el uso de codificadores automáticos para mapear desde la salida al espacio latente.

  • 00:50:00 En esta sección, el orador analiza los codificadores automáticos y su importancia en varias aplicaciones de aprendizaje automático, como la manipulación de datos y la reducción de la dimensionalidad. Los codificadores automáticos son redes neuronales que ayudan a mapear datos desde la entrada al espacio latente y de regreso a la salida. La arquitectura de cuello de botella de la red le permite aprender y reproducir las características de la entrada en una forma más comprimida. Una vez entrenada, la red puede producir un agrupamiento de códigos latentes en un espacio bidimensional, que presenta características semánticas de alto nivel, como una cara sonriente como un agrupamiento en el espacio.

  • 00:55:00 En esta sección, el orador analiza la manipulación de datos en el espacio latente para realizar manipulaciones de alto nivel de los datos sin necesidad de muchos datos etiquetados. Muestran un algoritmo simple para hacer sonreír a alguien utilizando imágenes codificadas que se manipulan en el espacio latente y luego se decodifican. El orador también analiza las limitaciones de los codificadores automáticos y la necesidad de un enfoque alternativo como el codificador automático variacional (VAE), que obliga a un decodificador a decodificar puntos cercanos a la entrada original pero no exactamente iguales para garantizar una interpolación adecuada en el espacio. .

  • 01:00:00 En esta sección del video, el orador analiza los codificadores automáticos variacionales (VAE), que son un tipo de modelo generativo que permite que el modelo se enfoque en los puntos entre los datos y asegura que los datos estén centrados en el origen y tiene una varianza no correlacionada en todas las direcciones. El Principio de Máxima Verosimilitud se usa para ajustar el modelo a los datos, y una red neuronal se usa para aproximar el verdadero posterior. El colapso del modo sigue siendo un problema, ya que no hay un mapeo de X a Zed, pero los VAE ofrecen una mejor solución que los modelos anteriores.

  • 01:05:00 En esta sección, aprendemos sobre los modelos generativos y cómo pueden sufrir un colapso modal, donde se producen salidas similares para diferentes entradas. Para abordar esto, podemos usar codificadores automáticos variacionales (VAEs), que usan dos redes neuronales para codificar la entrada a una distribución en el espacio latente y decodificar la distribución del espacio latente a una distribución en el espacio de entrada. Podemos usar la descomposición de la probabilidad logarítmica de la entrada para obtener un límite inferior para la probabilidad real, que se puede usar como función de pérdida. Esto nos permite optimizar las redes neuronales tanto para la codificación como para la decodificación, lo que ayuda a aliviar el problema del colapso del modo.

  • 01:10:00 En esta sección, el orador explica cómo reescribir la función L en algo que pueda usarse en sistemas de aprendizaje profundo. El objetivo es maximizar un límite inferior de la probabilidad y, al minimizar la L negativa, podemos aumentar la probabilidad tanto como sea posible. El hablante desglosa la parte superior de la fracción utilizando la definición de probabilidad condicional y la simplifica a una suma de expectativas, que se convierte en la divergencia KL y el logaritmo de probabilidad esperado. Estos términos se pueden calcular y utilizar como una función de pérdida en el sistema de aprendizaje profundo. El término KL atrae los vectores establecidos hacia el origen y los engrosa hacia una hiperesfera alrededor del origen, mientras que el otro término requiere tomar una expectativa, lo que lo hace un poco más difícil de implementar.

  • 01:15:00 En esta sección, el orador analiza los desafíos de maximizar una expectativa en el contexto del Autocodificador Variacional (VAE). El orador explica que se aproximan a la expectativa tomando una muestra y calculando el logaritmo de la densidad de probabilidad para cada muestra, luego tomando el promedio. Establecieron L en 1 para simplificar las cosas. Sin embargo, señalan que su método se atasca en el paso de muestreo, que no es diferenciable. Para solucionar este problema, incorporan el truco de la reparametrización, que les permite implementar el paso de muestreo como parte de su red neuronal. Esto lleva al desarrollo del codificador variacional, que es un enfoque basado en principios para entrenar un generador que es más sencillo de implementar.

  • 01:20:00 En esta sección, el ponente explica la diferencia entre un modelo generativo llamado Redes adversarias generativas (GAN) y codificadores automáticos variacionales (VAE). Mientras que las GAN ofrecen un mapeo desde el espacio latente al espacio de datos, los VAE funcionan al revés desde el espacio de datos al espacio latente y de vuelta al espacio de datos. Los VAE ofrecen interpolación entre elementos de los datos, incluido el idioma y los datos discretos, y funcionan mejor que los GAN para generar variables discretas. El orador da un ejemplo de cómo VAE puede usar un vector de sonrisa, un papel existente y el vector de resta de gafas de sol para realizar el experimento del malhechor. El ponente concluye que los VAE ofrecen un enfoque directo desde los primeros principios, pero los GAN son más adecuados para las imágenes.

  • 01:25:00 En esta sección, el orador compara los codificadores automáticos variacionales (VAE) con el análisis de componentes principales (PCA), afirmando que ambas técnicas se usan para reducir la dimensionalidad y asignar datos a una distribución estandarizada, pero los VAE son más poderosos y pueden hacer más cosas. Sin embargo, entrenar VAE es mucho más difícil ya que requiere un descenso de gradiente mientras que PCA puede encontrar una solución analítica. Además, PCA a menudo proporciona dimensiones significativas basadas en los datos, como una dimensión sonriente para caras, mientras que las dimensiones producidas por VAE generalmente no tienen ningún significado a menos que se apunte a una característica semántica específica.
 

Clase 10 Modelos de árbol y conjuntos: árboles de decisión, AdaBoost, aumento de gradiente (MLVU2019)



10 modelos de árbol y conjuntos: árboles de decisión, AdaBoost, aumento de gradiente (MLVU2019)

Esta primera parte del video presenta los árboles de decisión, un popular modelo de aprendizaje automático que se utiliza para la clasificación y la regresión, que funcionan segmentando el espacio de la instancia y eligiendo una clase para cada segmento. El video también analiza cómo se pueden entrenar los árboles de decisión mediante la obtención de información y cómo la poda puede ayudar a mitigar el sobreajuste. El orador enfatiza la importancia de dividir los datos en conjuntos de entrenamiento, validación y prueba para garantizar la equidad entre los modelos. Además, el video analiza el aprendizaje conjunto, donde se entrenan y combinan múltiples árboles de decisión u otros modelos para abordar problemas como la alta varianza y la inestabilidad. El impulso también se presenta como una técnica de conjunto de modelos, que implica clasificar clasificadores de forma secuencial y volver a ponderar los datos para mejorar el conjunto. Finalmente, se explica el algoritmo Adaboost, que selecciona clasificadores que minimizan una función de pérdida para mejorar el conjunto.

Esta segunda parte del video cubre varios modelos y conjuntos de árboles, incluidos AdaBoost y el aumento de gradiente. AdaBoost es un método de impulso popular para modelos de clasificación que pondera instancias de datos en función del rendimiento del clasificador. El aumento de gradiente implica inicializar un modelo con una función constante, calcular los residuos, ajustar un nuevo modelo a los residuos etiquetados y agregarlo al conjunto. El orador explica las diferencias entre el aumento de gradiente y AdaBoost y señala que los conjuntos no se usan mucho en la investigación, ya que pueden confundir los resultados. Además, el embolsado reduce la varianza y el impulso reduce el sesgo.

  • 00:00:00 En esta sección del video, el presentador presenta tres modelos de aprendizaje automático y conjuntos modales, que es un enfoque popular en producción y competencias como Kaggle. El enfoque combina la idea básica del aprendizaje del árbol de decisiones, un modelo de clasificación o un modelo de regresión y el método de conjunto, que entrena muchos modelos y los combina para fortalecer el modelo. El presentador también explica que los árboles de decisión funcionan tanto en características numéricas como categóricas; se utilizan principalmente para características categóricas. La sección finaliza presentando un conjunto de datos sobre películas, que se usará para demostrar el modelo de árbol de decisión.

  • 00:05:00 En esta sección, el video analiza cómo funcionan los árboles de decisión y cómo se pueden entrenar usando conjuntos de datos. El proceso de aprendizaje del árbol de decisiones implica encontrar una buena función para dividir, ampliar el árbol paso a paso y crear subconjuntos de datos. Las divisiones se determinan creando la distribución menos uniforme de etiquetas de clase dentro de cada subconjunto. Se da un ejemplo para un conjunto de datos sobre calificaciones y géneros de películas, donde la división por calificaciones no produce una buena distribución de clases, pero la división por género sí.

  • 00:10:00 En esta sección, el video explica cómo funcionan los árboles de decisión al segmentar el espacio de la instancia y elegir una clase particular para cada segmento. El árbol se expande seleccionando nuevas divisiones para cada hoja, pero no tiene sentido dividir dos veces en la misma característica categórica en una ruta desde la raíz hasta la hoja. Las condiciones de parada son cuando todas las entradas o todas las salidas son iguales, y la no uniformidad está determinada por la distribución de clases entre los segmentos. Esto puede ser difícil para tres o más clases ya que se debe considerar la proporción de cada clase.

  • 00:15:00 En esta sección, el orador explica cómo se puede usar la entropía como medida de uniformidad de una distribución y cómo calcular la ganancia de información de una característica en la clasificación del árbol de decisión. La entropía es una medida de cuán uniforme es una distribución, con una distribución uniforme que tiene una entropía más alta. El orador demuestra esto con dos distribuciones y usa la fórmula de la entropía para mostrar que la distribución uniforme tiene una entropía de dos bits, mientras que la distribución no uniforme tiene una entropía mucho menor debido a su mayor eficiencia en la transmisión de información con códigos más cortos. También se explica la entropía condicional, que es solo una entropía que está condicionada a algo, y la ganancia de información de una característica se calcula tomando la entropía genérica antes de ver la característica menos la entropía después de ver la característica.

  • 00:20:00 En esta sección, se explica en detalle el proceso de dividir el árbol utilizando funciones con la mayor ganancia de información. El algoritmo comienza con una hoja sin etiquetar y se repite hasta que todas las hojas estén etiquetadas. Para cada hoja sin etiquetar con el segmento, el algoritmo verifica la condición de parada, que podría estar agotando las funciones o todas las instancias que tienen la misma clase. Si no se cumple la condición de parada, la hoja se divide en la entidad con la mayor ganancia de información. El umbral para las características numéricas se elige para maximizar la ganancia de información, y un clasificador de árboles de decisión con características numéricas puede tener un límite de decisión más complicado debido a la posibilidad de dividir la misma característica varias veces con diferentes umbrales.

  • 00:25:00 En esta sección, el orador analiza el problema del sobreajuste cuando se utilizan árboles de decisión grandes y complejos. Explican cómo la precisión del entrenamiento puede aumentar con el tamaño máximo del árbol, pero la precisión de los datos de prueba o validación puede disminuir enormemente. Para abordar este problema, el orador presenta el concepto de poda y cómo ayuda a mitigar el sobreajuste. También enfatizan la importancia de dividir los datos en conjuntos de entrenamiento, validación y prueba para la selección de hiperparámetros y la búsqueda de modelos para garantizar la equidad entre los modelos. Finalmente, el orador señala que herramientas como SK Learn retienen automáticamente algunos datos de entrenamiento durante el proceso de entrenamiento para hacer la poda.

  • 00:30:00 En esta sección, el orador habla sobre los árboles de regresión, que se usan cuando la etiqueta objetivo no es una clase, sino un valor numérico. Los principios básicos son los mismos que con los árboles de decisión, pero hay algunas diferencias a tener en cuenta. En primer lugar, en los árboles de regresión, las hojas se etiquetan con números en lugar de clases. La media o mediana a menudo se usa para etiquetar instancias en el segmento. En segundo lugar, en lugar de la entropía, se utiliza la varianza para determinar en qué función dividirse en cada paso, lo que maximiza la información obtenida. El orador también analiza una jerarquía de generalización para el espacio modelo, donde el modelo más generalizador es una función constante, y agregar más divisiones aumenta la complejidad del modelo.

  • 00:35:00 En esta sección, el orador analiza los árboles de decisión y los árboles de regresión como modelos y sus limitaciones, como la alta varianza y los problemas de inestabilidad. La solución a estos problemas es entrenar múltiples árboles de decisión y combinarlos en un conjunto, que es una técnica popular. El objetivo del aprendizaje conjunto es resolver el equilibrio entre el sesgo y la varianza, donde el sesgo es un problema estructural y la varianza es la dispersión de los errores de los modelos. El aprendizaje por conjuntos ayuda a resolver estos problemas, y es posible combinar árboles de decisión con otros modelos. La analogía de calificar los proyectos de los estudiantes con una rúbrica se usa para explicar el alto sesgo y la baja varianza.

  • 00:40:00 En esta sección, el orador analiza el problema del sesgo y la varianza en el aprendizaje automático y cómo el arranque puede ayudar a abordar este problema. Debido al conjunto de datos limitado disponible, puede ser difícil determinar si la distancia observada desde el objetivo se debe a un alto sesgo o una gran variación. Bootstrapping soluciona esto al simular el proceso de muestreo de otro conjunto de datos mediante el remuestreo del conjunto de datos original con reemplazo para crear un nuevo conjunto de datos de muestra. Al analizar la función de densidad acumulativa de la distribución empírica, queda claro que el remuestreo del conjunto de datos original se aproxima al muestreo de la distribución de datos original, lo que permite la detección de una alta varianza al crear diferentes conjuntos de datos para entrenar.

  • 00:45:00 En esta sección, el video explica la agregación o embolsado de Bootstrap, que implica volver a muestrear el conjunto de datos y entrenar varios modelos en cada conjunto de datos de nuevo muestreo. Luego, los modelos se combinan tomando su voto mayoritario para clasificar nuevos datos, y el método reduce la variabilidad, pero no reduce el sesgo. Además, el video analiza el impulso, que ayuda a impulsar una familia de modelos débiles para lograr un sesgo más bajo. Impulsar implica agregar una pequeña columna llamada peso al conjunto de datos que indica qué tan importante es cada característica en un punto específico del proceso de aprendizaje. La idea general de impulsar es comenzar con algún clasificador, M0, que podría ser cualquier cosa: un clasificador lineal, un modelo constante o uno que genere una clase mayoritaria.

  • 00:50:00 En esta sección, se introduce el concepto de refuerzo como técnica de conjunto modelo. Impulsar implica clasificar clasificadores de forma secuencial y volver a ponderar los datos aumentando el peso de las instancias en las que los clasificadores anteriores se equivocan y disminuyendo el peso de las instancias en las que aciertan. A los clasificadores se les asigna un peso en función de su importancia para mejorar el conjunto, y el conjunto final es la suma de todos los modelos entrenados con sus respectivos pesos. AdaBoost es un enfoque más basado en principios para impulsar e implica definir una función de error para minimizar y usar datos de entrenamiento ponderados. La función de error se utiliza para determinar el peso dado a cada modelo en el conjunto.

  • 00:55:00 En esta sección del video, el orador explica la función de pérdida utilizada en Adaboost y cómo se minimiza para seleccionar el siguiente clasificador que se agregará al conjunto. Describe cómo, para cada instancia en el conjunto de datos, el error se calcula tomando el exponencial de la diferencia entre la etiqueta de destino y la etiqueta predicha, y muestra cómo se suma este error en todo el conjunto de datos para obtener el error del conjunto actual. . Luego, el orador explica cómo este error se simplifica aún más en una nueva función que se puede minimizar seleccionando el siguiente clasificador para minimizar la suma de los pesos de las instancias clasificadas incorrectamente, que es la única parte de la ecuación que puede verse influenciada por la elección de clasificador En general, el algoritmo Adaboost funciona mediante la selección iterativa de clasificadores que minimizan esta función de pérdida, lo que aumenta efectivamente el peso de las instancias clasificadas incorrectamente y reduce la frecuencia de las clasificaciones incorrectas en iteraciones futuras.

  • 01:00:00 En esta sección, el orador explica el algoritmo AdaBoost, que es un método de impulso popular para los modelos de clasificación. Para crear un conjunto, el algoritmo comienza con un clasificador en particular y se calculan los pesos para cada instancia de datos de acuerdo con el desempeño del clasificador en esa instancia. Se entrena un nuevo clasificador para minimizar la suma de pesos de las clasificaciones incorrectas, y se le asigna un peso a este nuevo clasificador, que se calcula tomando la exponencial del error y luego encontrando el valor de a que minimiza el error total. Este proceso se repite durante un número determinado de pasos y el resultado es el modelo final del conjunto. El orador también explica la diferencia entre boosting y bagging, y presenta el gradiente de boosting, que es una variante de boosting diseñada para modelos de regresión.

  • 01:05:00 En esta sección, el orador analiza la idea básica del aumento de gradiente, que implica inicializar un modelo con la función constante y calcular los residuos del conjunto hasta el momento. Luego, se ajusta un nuevo modelo al conjunto de datos etiquetado con residuos en lugar de las etiquetas originales, que se agrega al conjunto ponderado por un valor gamma. El modelo se puede escribir recursivamente como M3 = M2 + otro modelo, expandiendo la suma lentamente. Se llama aumento de gradiente porque implica calcular el gradiente en un modelo de sobreajuste superior para la función de pérdida de la suma de errores al cuadrado, que es solo la diferencia entre la salida del modelo y la salida objetivo, o el gradiente residual.

  • 01:10:00 En esta sección, el orador explica cómo funciona el aumento de gradiente diciéndole a un modelo que siga el gradiente en el espacio de predicción. El aumento de gradiente permite reemplazar la función de pérdida con otra función de pérdida, como la pérdida L1 en lugar de la pérdida L2. Al tomar la derivada del valor de pérdida con respecto a la salida del modelo y aplicar la regla de la cadena, se puede calcular el seno de los residuales en lugar de los propios residuales y entrenar al siguiente clasificador en el conjunto para predecir el seno del residual. Este método permite la optimización de diferentes funciones de pérdida en el aumento de gradiente.

  • 01:15:00 En esta sección, se explican las diferencias entre el aumento de gradiente y el impulso ADA. En el aumento de gradiente, cada modelo se ajusta a los pseudoresiduos del modelo anterior, mientras que en el aumento de ADA, cada nuevo modelo se ajusta a un conjunto de datos ponderado nuevamente en función del rendimiento del modelo anterior. El aumento de gradiente funciona mejor para los modelos que no optimizan una función de pérdida y no funcionan mediante métodos de aprendizaje inspirados en el cálculo. El apilamiento, por otro lado, es una técnica simple que combina los juicios de varios modelos en una sola salida. Esta técnica se usa para obtener un impulso adicional en el rendimiento después de haber entrenado a un puñado de modelos y desea combinarlos en un modelo aún mejor.

  • 01:20:00 En esta sección, el orador explica que los conjuntos, si bien dan una ventaja sobre los modelos individuales, no se usan mucho en la investigación, ya que los modelos deben probarse de forma aislada para compararlos sin ningún refuerzo que pueda confundir los resultados. Además, los conjuntos pueden ser costosos cuando se usan con redes neuronales enormes y, por lo tanto, se usan principalmente con modelos diminutos como sellos de decisión o árboles de decisión pequeños. El orador también reitera que el embolsado reduce las variantes y el impulso reduce los sesgos.
 

Lección 11 Datos secuenciales: modelos de Markov, incrustaciones de palabras y LSTM



11 Datos secuenciales: modelos de Markov, incrustaciones de palabras y LSTM

En este video, el orador analiza los diferentes tipos de datos secuenciales que se encuentran en el aprendizaje automático, como los datos numéricos o simbólicos organizados en el tiempo o en secuencia. Presentan modelos de Markov, incrustaciones de palabras y LSTM como modelos para abordar estos problemas. El video describe el proceso de entrenamiento y predicción con datos secuenciales, incluido el concepto de validación y entrenamiento en datos que ocurrieron antes de que se probara el objeto específico. Además, el ponente explica cómo modelar secuencias con redes neuronales, incluido cómo manejar secuencias de diferentes longitudes y modelado de tiempo, y el proceso de entrenamiento de una red neuronal recurrente utilizando retropropagación en el tiempo. Finalmente, el video cubre aspectos de clasificación de secuencias a etiquetas, que se pueden mejorar con modelos de Markov cuando las redes neuronales recurrentes olvidan las cosas rápidamente.

El video cubre una variedad de temas relacionados con el procesamiento secuencial de datos, incluidos los modelos de Markov y sus limitaciones, las redes de memoria a corto plazo (LSTM) y sus ventajas, el uso de LSTM para la generación de texto e imágenes, las técnicas de forzado del maestro y los subtítulos de imágenes. El orador proporciona explicaciones detalladas de la estructura LSTM y las diversas puertas que contiene, así como también cómo entrenar y muestrear estas redes para tareas como la generación de texto de Shakespeare y subtítulos de imágenes. También se analiza la importancia de usar capas incrustadas para mejorar los LSTM a nivel de palabra, junto con el espectro de métodos disponibles para el procesamiento de secuencias, desde modelos más simples hasta modelos más potentes como los LSTM.

  • 00:00:00 En esta sección, el disertante analiza la importancia de participar en la Encuesta Nacional de Estudiantes para estudiantes de informática, ya que la participación ha sido baja. A continuación, el orador anuncia que no habrá tarea la próxima semana, ya que será reemplazada por exámenes de práctica. El orador asegura a los espectadores que la parte difícil del curso ha terminado y que las conferencias restantes serán menos complicadas. El tema de esta conferencia son los datos secuenciales, y el orador presenta los modelos de Markov, las incrustaciones de palabras y los LSTM como modelos para abordar tales problemas.

  • 00:05:00 En esta sección, el orador analiza los diferentes tipos de datos secuenciales que pueden encontrarse en el aprendizaje automático, como datos numéricos o simbólicos organizados en tiempo o secuencia. Los datos pueden tener diferentes dimensiones, como unidimensionales o bidimensionales, según la naturaleza del problema. Por ejemplo, los datos de idioma se pueden ver como unidimensionales, siendo cada palabra un valor discreto, o como bidimensionales con una etiqueta de parte del discurso posterior al texto. El ponente también menciona posibles tareas de aprendizaje automático como la clasificación o la predicción, según el tipo y la dimensión de los datos.

  • 00:10:00 En esta sección, el orador explica cómo usar modelos de aprendizaje automático para predecir el siguiente valor de una secuencia dados valores anteriores en una configuración de secuencia única al convertir los datos en una tabla con características para los valores anteriores y un objetivo valor. Sugieren usar un aprendiz de regresión como la regresión lineal o el árbol de regresión para entrenar un modelo, pero advierten que es importante dividir los datos en conjuntos de entrenamiento, validación y prueba con un proceso de validación paso a paso para garantizar que el modelo solo se entrene en datos pasados y probados en datos futuros, que es lo que sucede en los casos de uso del mundo real.

  • 00:15:00 En esta sección, el orador analiza diferentes métodos para entrenar y predecir con datos secuenciales. Enfatizan la importancia de la validación y el entrenamiento de los datos que ocurrieron antes de que se probara el objeto específico. Presentan el modelo de Markov como un modelo probabilístico para el modelado a nivel de palabra y explican cómo desglosar la distribución de probabilidad conjunta de múltiples variables aleatorias utilizando la regla de probabilidad de la cadena. Muestran cómo descomponer la oración "Felicidades, ha ganado un premio" en una distribución de probabilidad conjunta sobre seis variables aleatorias, que son seis variables aleatorias separadas y descomponen la distribución de probabilidad conjunta en un producto de distribuciones condicionales de las palabras condicionadas en el palabras que la preceden.

  • 00:20:00 En esta sección, el orador analiza cómo calcular la probabilidad de una oración descomponiéndola en un producto de probabilidades condicionales. Se recomienda el uso de probabilidades logarítmicas para evitar flujos insuficientes, ya que la probabilidad de una palabra en particular puede ser muy baja, especialmente con un vocabulario amplio, por lo que es mejor tomar el logaritmo en su lugar. El modelo de lenguaje ideal debe incluir no solo reglas gramaticales sino también razonamiento de sentido común y física, pero por ahora, el hablante usa la suposición de Markov, que asume que la probabilidad de una palabra depende solo de sus dos últimas palabras. Podemos estimar estas probabilidades contando cuántas veces ocurren en un gran conjunto de datos de lenguaje conocido como corpus.

  • 00:25:00 En esta sección, el video analiza cómo se pueden usar los modelos de Markov y las probabilidades condicionales para crear un modelo de lenguaje que genere texto. El modelo de Markov permite el cálculo de probabilidades para una secuencia de palabras, que pueden utilizarse para la generación de texto a través de muestreo secuencial. Esta técnica, aunque tiene sus limitaciones, permite probar la capacidad y precisión de los modelos de lenguaje. Además, para la clasificación se puede utilizar el modelo de Markov, que se realiza a través de un clasificador bayesiano que modela las palabras con un modelo de lenguaje, condicionado a spam o ham, para inferir una probabilidad de que un correo electrónico sea spam.

  • 00:30:00 En esta sección, los oradores discutieron los modelos de Markov, que se usan para modelar datos de secuencia al estimar la probabilidad de una secuencia dada una clase y luego usar la regla de Bayes para obtener probabilidades de clase. Se puede usar un modelo de Markov de orden cero para el spam, pero para otras tareas, un modelo de orden superior podría ser mejor. Sin embargo, los modelos de Markov tratan las palabras como símbolos atómicos y no consideran el hecho de que algunas palabras tienen significados similares. Para abordar esto, se pueden usar modelos integrados para asignar a cada objeto (en este caso, palabras) un vector de peso que modela las similitudes entre los objetos. Esto se hace aprendiendo los parámetros o valores en estos vectores para calcular los factores latentes, de forma similar a codificar imágenes en representaciones vectoriales.

  • 00:35:00 En esta sección, se introduce la hipótesis distributiva, que establece que las palabras que aparecen cerca de palabras similares a menudo pueden significar lo mismo. Luego se analiza la palabra algoritmo de incrustación como una aplicación de esta hipótesis para calcular una incrustación. Antes de aplicar el algoritmo, se necesita una representación de las palabras, que es una red neuronal con un vector caliente para cada palabra, lo que permite una red neuronal muy simple donde el vocabulario se asigna a una salida de 300 para el espacio de incrustación. La parte inferior del modelo se usa como codificación para el espacio de incrustación y, aunque algunos investigadores creen que es una tabla de búsqueda, es esencialmente lo mismo que un mapeo de un vector caliente a una incrustación.

  • 00:40:00 En esta sección, el disertante analiza el concepto de incrustaciones de palabras, un método en el que un objeto discreto, como una palabra, se representa como un vector denso. Las incrustaciones se entrenan creando una matriz de un mapeo lineal de las incrustaciones, que luego se puede usar para encontrar una distribución de probabilidad en el contexto de las palabras. Da un ejemplo de cómo restar la incrustación de "hombre" de "mujer" crea una dirección en la que las cosas se vuelven más femeninas, y cómo esta dirección se puede usar para calcular vectores de palabras para otras palabras como "reina". El disertante explica cómo estas incrustaciones se pueden usar como punto de partida para redes neuronales más grandes para el aprendizaje automático, y cómo una gran cantidad de incrustaciones de palabras entrenadas en grandes cantidades de datos de texto se pueden descargar de la biblioteca de modelos de código abierto de Google para usar en otros proyectos. .

  • 00:45:00 En esta sección, el orador analiza cómo modelar secuencias con redes neuronales, incluido cómo manejar secuencias de diferentes longitudes y cómo modelar el tiempo. Un enfoque es utilizar una conexión recurrente, en la que una capa oculta toma la capa oculta anterior para permitir un ciclo en la red. Esto permite que la red opere en secuencias de diferentes longitudes, y las secuencias se pueden alimentar una a la vez para obtener una salida de secuencia. El orador también enfatiza la importancia de las secuencias de relleno para que tengan la misma longitud para el procesamiento por lotes y el entrenamiento con redes neuronales.

  • 00:50:00 En esta sección, se explica el proceso de entrenamiento de una red neuronal recurrente usando retropropagación a través del tiempo. El desafío está en propagarse hacia atrás a través de la capa recurrente a medida que la capa oculta sigue cambiando. Una forma de solucionar esto es desenrollando la red para que la conexión recurrente pase de la copia anterior de la red a la siguiente copia. La red resultante se trata como una gran red de retroalimentación sin conexiones recurrentes, y los pesos se actualizan a través de la propagación hacia atrás. Este proceso de entrenamiento se llama aprendizaje de secuencia a secuencia, donde la secuencia de entrada se asigna a una secuencia de salida.

  • 00:55:00 En esta sección, el orador explica secuencia a etiqueta en la que la etiqueta de salida proviene de datos de secuencia, como la clasificación de bandas. Sin embargo, no es ideal usar solo el último elemento de la secuencia para predecir la salida, ya que crea asimetría y puede generar problemas con la propagación del gradiente. En cambio, es mejor tomar toda la salida de la secuencia y promediarla, lo que permite que la red considere cada parte de la secuencia de entrada, lo que la convierte en un mejor predictor de la etiqueta. Además, el orador explica que la secuencia etiquetada puede venir de dos maneras, ya sea repitiendo la etiqueta de entrada n veces e introduciéndola en una red neuronal para producir una salida o inicializando el estado final con una entrada y dando a la red neuronal 0 vectores para generar la secuencia. Sin embargo, esto no es eficiente, ya que las redes neuronales recurrentes tienden a olvidar las cosas rápidamente, lo que significa que un modelo de Markov podría ser una mejor opción para algunos casos.

  • 01:00:00 En esta sección, el orador analiza las limitaciones de los modelos de Markov en lo que respecta a la memoria, particularmente para decidir qué información vale la pena recordar. La solución es la memoria a corto plazo (LSTM), que es un tipo de red neuronal recurrente que tiene varias puertas de aprendizaje que deciden qué información recordar u olvidar. Las puertas contienen dos vectores de valores entre 0 y 1 o entre -1 y 1, donde el valor de la izquierda selecciona la parte que se agregará a la memoria, y el valor de la derecha determina qué información retener, según la cantidad de información de entrada que se necesite. agregado y cuánto necesita ser cancelado. Al usar el LSTM, la información seleccionada para la memoria se agrega continuamente, lo que favorece la retención de recuerdos a más largo plazo.

  • 01:05:00 En esta sección, el orador explica la estructura de la red de Memoria a Largo Corto Plazo (LSTM), que es un tipo de red neuronal recurrente formada por células. Las celdas toman entrada y proporcionan salida en cada paso de tiempo mientras pasan un valor C (estado de celda) y un valor Y (salida) entre pasos de tiempo. El orador desglosa la notación visual de la red LSTM y continúa describiendo varias puertas, incluida la puerta de olvido que reduce la activación en la memoria y la puerta de entrada que decide qué partes de la entrada agregar a la memoria. El paso final consiste en decidir el valor de salida, que se produce a través de otra capa activada por el sigmoide. El orador destaca la ventaja de usar redes LSTM: no hay gradiente de fuga a lo largo de la columna vertebral o la cinta transportadora de la red, lo que mejora su eficiencia.

  • 01:10:00 En esta sección, el orador explica cómo tomar muestras de LSTM para crear un generador de secuencias a nivel de caracteres. La salida es una distribución de probabilidad en el siguiente carácter basada en el historial de entrada. El modelo aprende a colocar cosas como comas, colocar nuevas líneas y aproximar el pentámetro yámbico, que suena a Shakespeare si se lee en voz alta. El modelo está entrenado para secuenciar datos a nivel de carácter en lugar de a nivel de palabra porque es más poderoso, pero necesita alimentar toda la secuencia incluso si se están muestreando solo unos pocos caracteres. El orador cita un experimento en el que alguien entrenó y probó un modelo de Shakespeare que generó un texto impresionante y bastante shakesperiano, lo que demuestra que el modelo puede aprender sintaxis editando un artículo de Wikipedia, que incluye enlaces y ciertos textos de marcado.

  • 01:15:00 En esta sección, el orador analiza el uso de LS DM para generar texto, como artículos de Wikipedia o tweets de Donald Trump, a través del entrenamiento de la red en grandes cantidades de datos. Destacan los diferentes modos en los que el LS DM puede manifestarse, como HTML o XML, y mencionan que la red puede incluso generar matemáticas que parecen trabajos de matemáticas de alto nivel. Además, el orador sugiere usar LS DM para generar salidas aleatorias utilizando un vector aleatorio alimentado a la red y una red de codificador/descodificador basada en un codificador externo variacional (VAE), que se demuestra aún más a través de un ejemplo de música generada a través de una red neuronal. entrenado en fragmentos MIDI.

  • 01:20:00 En esta sección, el presentador analiza cómo modelar el lenguaje usando una técnica de forzamiento del maestro donde un modelo de lenguaje predictivo de muestreo secuencial se combina con un codificador externo para una secuencia más complicada. Continúa demostrando un modelo que usa la fuerza del maestro llamado SketchRNN, que se usa para modelar bocetos que los humanos dibujan rápidamente de varios temas, como gatos y búhos. SketchRNN utiliza un codificador de secuencia a secuencia variacional que conduce a un espacio latente, que se utiliza para interpolar sin problemas entre diferentes dibujos del mismo tema. Finalmente, el presentador muestra cómo se puede usar esta misma técnica para interpolar sin problemas entre oraciones humanas, lo que da como resultado un resultado bastante claro.

  • 01:25:00 En esta sección, el orador analiza el conjunto de datos Image COCO, que contiene imágenes del conjunto de datos llamado ImageNet junto con cinco subtítulos escritos por humanos que describen lo que sucede en la imagen. El orador sugiere que un enfoque simple para la tarea de subtítulos de imágenes es descargar un modelo de clasificación de imágenes previamente entrenado y quitar la capa de clasificación. El mapeo resultante se puede enviar a un LSTM para entrenar el modelo para producir subtítulos. El orador también explica cómo mejorar el LSTM a nivel de palabra mediante el uso de una capa incrustada y la diferencia entre los modelos LSTM y Markov. Finalmente, el orador analiza el espectro de métodos que se pueden usar para el procesamiento de secuencias, desde poderosos hasta simples.
 

12 modelos matriciales: sistemas de recomendación, PCA y convoluciones gráficas



12 modelos matriciales: sistemas de recomendación, PCA y convoluciones gráficas

En la primera parte del video, el orador analiza los modelos matriciales y sus aplicaciones en los sistemas de recomendación, que pueden usarse para recomendaciones de productos, noticias y redes sociales. Los sistemas de recomendación se basan en comentarios explícitos e implícitos, así como en información secundaria, y pueden manipularse para difundir información falsa si no se diseñan correctamente. La factorización de matrices es un método común para predecir calificaciones basadas en el comportamiento del usuario, con el problema de optimización de encontrar matrices U y M para hacer que UTM sea lo más cercano posible a R resuelto a través de métodos de error cuadrático y calculando la norma de Frobenius. El orador también analiza los métodos para optimizar este problema mediante el descenso de gradiente y explica la regla de actualización de gradiente para el filtrado colaborativo. Además, el orador cubre cinco formas de mejorar el modelo de factorización matricial, incluido el control del usuario y el sesgo de la película, el uso de me gusta implícitos y la incorporación de información del sitio. Por último, el orador analiza el poder de la factorización de matrices en el entorno clásico de aprendizaje automático, las extensiones de PCA en la factorización de matrices y la utilidad de los modelos gráficos para almacenar datos.

La segunda parte del video presenta varios modelos matriciales para sistemas de recomendación, incluidas convoluciones de gráficos para la clasificación de nodos y la predicción de enlaces. Las convoluciones de gráficos mezclan incrustaciones de nodos al multiplicar la matriz de adyacencia con las incrustaciones originales, pero este enfoque tiene limitaciones para representar gráficos sociales grandes. Los métodos de validación tradicionales no funcionan para los modelos de características mixtas que se usan en los sistemas de recomendación, por lo que se necesita un aprendizaje transductivo, en el que solo se retienen las etiquetas del conjunto de entrenamiento, pero no las características. Además, el modelado de datos de tiempo y calificaciones requiere tener en cuenta los datos de marca de tiempo y el aprendizaje transductivo. El video concluye con un resumen de la conferencia y una vista previa de la siguiente discusión sobre el aprendizaje por refuerzo.

  • 00:00:00 En esta sección, el orador presenta el concepto de modelos matriciales, que son diferentes enfoques para analizar conjuntos de datos que se ven mejor como matrices. Los modelos que se discutirán comparten la característica de tratar conjuntos de datos como matrices. La conferencia se centra en los sistemas de recomendación, que normalmente se implementan a través de la factorización matricial, y se analiza el modelo ganador de la competencia de Netflix. La conferencia también aborda brevemente el análisis de componentes principales y los modelos gráficos antes de concluir con una discusión sobre la validación.

  • 00:05:00 En esta sección, el orador explica tres formas de datos que se pueden usar en los sistemas de recomendación: retroalimentación explícita, retroalimentación implícita e información adicional. La retroalimentación explícita es cuando se le pide al usuario que califique un elemento específico, que es muy valioso pero relativamente raro. Se pueden recopilar comentarios implícitos observando lo que está haciendo el usuario, como páginas vistas, listas de deseos o incluso movimientos del mouse. La información secundaria no es información sobre el emparejamiento entre usuarios y películas, sino información sobre los propios usuarios y las películas, como la duración, los actores y los directores. El orador señala que los sistemas de recomendación son útiles para varios entornos, incluidas las recomendaciones de productos (p. ej., Amazon), noticias (p. ej., Google News) y redes sociales (p. ej., Twitter y YouTube).

  • 00:10:00 En esta sección, el orador analiza los sistemas de recomendación y sus vulnerabilidades. Los sistemas de recomendación se utilizan para sugerir contenido a usuarios específicos, pero pueden manipularse para difundir información falsa. El ponente señala que cualquier situación con dos conjuntos de cosas y una relación entre ellas puede considerarse un paradigma de recomendación. Por ejemplo, recetas e ingredientes o políticos y leyes electorales. El problema con los sistemas de recomendación son los datos incompletos, ya que no todos los usuarios califican todas las películas. El orador sugiere usar modelos incrustados para asignar a cada usuario y película un vector y aprender los valores de esos vectores en función de una función de pérdida para predecir los datos que faltan.

  • 00:15:00 En esta sección, el orador describe la factorización matricial como una forma de representar a los usuarios y las películas en un modelo con el objetivo de predecir las calificaciones de las películas en función del comportamiento del usuario. El modelo asigna un vector a cada usuario ya cada película, que luego se multiplican en una gran matriz. Usando un producto escalar, el orador explica cómo el modelo predice un valor entre menos infinito e infinito positivo, donde los valores más altos indican que es más probable que al usuario le guste la película. Las categorías del modelo tienden a reforzar suposiciones superficiales sobre el comportamiento del usuario y, aunque no es particularmente refinado, el modelo aún puede ofrecer predicciones confiables. A través de la factorización de matrices, una matriz se descompone en dos matrices más pequeñas, con una matriz que incluye usuarios y la otra que incluye películas, y su producto escalar representa las predicciones.

  • 00:20:00 En esta sección, el presentador explica el problema de optimización de encontrar matrices U y M para hacer que UTM sea lo más cercano posible a R. Esto se hace usando el método del error cuadrático y calculando la norma de Frobenius. Sin embargo, el problema es que a menudo faltan valores en la matriz de calificación. Para resolver este problema, la función de pérdida se calcula solo sobre los elementos de R para los que se conoce la calificación en el conjunto de entrenamiento, en lugar de todos los elementos de R. El presentador también analiza los dos métodos para optimizar este problema, que son optimización alterna y descenso de gradiente. El método de descenso de gradiente es más flexible y fácil de agregar a su modelo.

  • 00:25:00 En esta sección, el ponente explica la regla de actualización de gradiente para la técnica de filtrado colaborativo con factorización de matrices. Define la matriz de error y explica el proceso de tomar derivadas de la función de pérdida con respecto a los parámetros. Luego, demuestra cómo se usa la regla de actualización de degradado para actualizar los valores de incrustaciones de usuarios y películas. La regla de actualización implica calcular el producto escalar entre la fila y la columna de la matriz de error y la matriz de incrustación respectiva y agregarlo al parámetro que se está actualizando.

  • 00:30:00 En esta sección, el orador explica la lógica detrás de la función de predicción del producto escalar en los sistemas de recomendación y cómo se puede entrenar mediante el descenso de gradiente estocástico. También se discute el problema de tener solo calificaciones positivas y cómo resolverlo a través de un muestreo negativo. Luego, el orador profundiza en dos formas de resolver el problema de factorización de matriz no negativa, que produce algunas dimensiones interpretables para películas, similar al concepto de un espacio latente en PCA.

  • 00:35:00 En esta sección, el orador analiza cinco formas de mejorar el modelo de factorización matricial para las recomendaciones de películas. En primer lugar, explica cómo controlar el sesgo del usuario y de la película puede incorporarse al modelo mediante la adición de parámetros escalares aprendidos. En segundo lugar, el problema de la estrella dorada o el arranque en frío se aborda mediante el uso de me gusta implícitos, como el comportamiento de navegación, para crear una segunda incorporación de usuario. En tercer lugar, el modelo se puede regularizar para evitar el sobreajuste agregando un término de penalización a la función de pérdida. En cuarto lugar, se puede aplicar el análisis de componentes principales (PCA) para reducir la dimensionalidad de las incrustaciones de películas y usuarios. Por último, el orador habla sobre cómo se pueden usar las convoluciones de gráficos para incorporar información sobre géneros de películas y moldearlos en el modelo.

  • 00:40:00 En esta sección, el orador explica cómo agregar información implícita e información del sitio a los sistemas de recomendación. Para obtener información implícita, el sistema resume todas las incrustaciones de películas que le han gustado a un usuario y las agrega a sus incrustaciones existentes. De manera similar, para la información del sitio, las características de un usuario se codifican en datos categóricos y sus incrustaciones correspondientes se resumen para crear el tercer vector de incrustación. El orador también señala que el tiempo puede afectar las calificaciones, por lo que es necesario controlar el tiempo para obtener buenas predicciones. Esto se puede hacer fragmentando las incrustaciones en períodos de tiempo discretos y aprendiendo diferentes incrustaciones para cada período. La sección concluye con un resumen de la factorización de matrices y los sesgos de los sistemas de recomendación.

  • 00:45:00 En esta sección, el orador analiza el poder de la factorización de matrices en los sistemas de recomendación y cómo se puede aplicar en el entorno clásico de aprendizaje automático. Al tomar una matriz de columnas de características y filas de instancias, la factorización de matrices a través de la retropropagación u otros métodos de entrenamiento pueden crear una representación de baja dimensión de una instancia que se puede recuperar multiplicándola por una matriz C vector C. Esto es similar a las técnicas de reducción de dimensionalidad como el análisis de componentes principales (PCA), pero se puede hacer equivalente a PCA suponiendo que las columnas de C son linealmente independientes, lo que da como resultado un problema de minimización con restricciones.

  • 00:50:00 En esta sección, el presentador analiza PCA y sus extensiones en la factorización de matrices. Explican que PCA se puede usar para datos incompletos al maximizar la reconstrucción solo sobre los valores conocidos de los datos. Al hacer esto, permite una representación o incrustación de baja dimensión de los datos que se pueden usar para clasificación o regresión. También se presenta la extensión de Sparse PCA, que utiliza el regularizador L1 para hacer cumplir la escasez y facilitar la interpretación de los parámetros. Luego, el presentador continúa explicando cómo se pueden aplicar diferentes valores de pérdida al problema de factorización de matrices, como la entropía cruzada binaria para datos binarios, y muestra cómo estos métodos pueden producir mejores incrustaciones para los datos. La sección concluye con una introducción a los modelos gráficos como una forma útil de datos.

  • 00:55:00 En esta sección, el orador analiza la flexibilidad de los gráficos para almacenar datos, como redes sociales, interacciones de proteínas, redes de tráfico y gráficos de conocimiento. Luego, el ponente propone la idea de usar modelos de aprendizaje automático que puedan consumir gráficos, específicamente para tareas de predicción de enlaces y clasificación de nodos, que pueden verse como problemas similares a los de recomendación. El orador presenta el concepto de incrustaciones de nodos y analiza la red neuronal convolucional de gráficos como una forma de profundizar en el gráfico y ampliar la incrustación básica.

  • 01:00:00 En esta sección, el ponente explica cómo funcionan las convoluciones de gráficos en los sistemas de recomendación. Las convoluciones de gráficos asignan una incrustación dimensional aleatoria a cada nodo en el gráfico, lo que puede interpretarse como la asignación de un color aleatorio con fines de visualización. La intuición detrás de las circunvoluciones de gráficos es que mezclan estas incrustaciones, lo que permite extraer información de los vecinos del nodo en su propia incrustación. Después de varios pasos de mezcla, todos los nodos finalmente tendrán la misma representación, que representa el gráfico general. Para mezclar incrustaciones de nodos, la matriz de adyacencia se multiplica con las incrustaciones originales, lo que da nuevas incrustaciones donde cada nodo incrustado representa la suma de sus vecinos más él mismo. Las incrustaciones deben normalizarse para garantizar que los valores no exploten.

  • 01:05:00 En esta sección, el orador explica cómo usar convoluciones de gráficos para la clasificación de nodos y la predicción de enlaces. Para la clasificación de nodos, a un gráfico simple se le asigna una incrustación para cada nodo y se aplica una convolución de gráfico para crear nuevas incrustaciones basadas en nodos vecinos. Luego, se aplica otra convolución para mapear las incrustaciones en dos dimensiones para la clasificación. Para la predicción de enlaces, las incrustaciones de nodos se producen a través de varias capas de convoluciones de gráficos, y se utiliza un modelo de factorización matricial encima de estas incrustaciones. Luego, los gradientes se utilizan para propagar hacia atrás a través de las circunvoluciones del gráfico original para la predicción de enlaces basada en una estructura gráfica más profunda.

  • 01:10:00 En esta sección del video, el orador analiza los desafíos de las circunvoluciones de gráficos, lo que implica representar un gráfico social de una manera selectiva y no demasiado inclusiva. Debido a la propiedad de mundo pequeño de los gráficos sociales, representar el gráfico completo en la representación de cada nodo es problemático, y las circunvoluciones de gráficos tradicionales no filtran efectivamente la información innecesaria. Además, el entrenamiento debe realizarse en lotes completos, lo que puede reducir el rendimiento. El ponente propone la atención de grafos como un enfoque más selectivo, pero sigue siendo un área de investigación activa. El orador también señala que la validación de los modelos de convolución de gráficos es un desafío y requiere desviarse de los métodos estándar de validación de aprendizaje automático.

  • 01:15:00 En esta sección, el orador explica que los métodos tradicionales de validación de pruebas de capacitación no funcionan para enfoques de funciones mixtas, como los que se usan en los sistemas de recomendación, ya que retener funciones de usuario o funciones de películas da como resultado una pérdida de incrustaciones. En cambio, se necesita aprendizaje transductivo, donde solo se retienen las etiquetas del conjunto de entrenamiento, pero no las características. Este enfoque es importante cuando se entrenan modelos de incrustación, donde se debe conocer todo el vocabulario de antemano. Sin embargo, aún se pueden retener calificaciones aleatorias o enlaces para que los datos restantes se usen para entrenamiento y pruebas. Finalmente, el orador señala que la clasificación en el etiquetado de ID de nodo aún se puede realizar utilizando el gráfico completo.

  • 01:20:00 En esta sección, el orador analiza el desafío de modelar el tiempo y las calificaciones en un conjunto de datos, donde se deben tener en cuenta los datos de marca de tiempo y el aprendizaje transductivo. Explican que es importante no tener datos de entrenamiento del futuro y que el conjunto de prueba debe estar en el futuro del conjunto de entrenamiento. Además, el disertante resume la conferencia, destacando el uso de la factorización de matrices para resolver la tarea abstracta de recomendación y la generalización de la recomendación usando modelos de grafos y convoluciones de grafos. La sección termina con una vista previa de la siguiente lección sobre el aprendizaje por refuerzo.
 

13 Aprendizaje por refuerzo: Gradientes de políticas, Q Learning, AlphaGo, AlphaStar (MLVU2019)



13 Aprendizaje por refuerzo: Gradientes de políticas, Q Learning, AlphaGo, AlphaStar (MLVU2019)

El video proporciona una introducción al aprendizaje por refuerzo y sus componentes fundamentales, analizando ejemplos como el carro robótico de equilibrio de postes y el juego de tres en raya. El ponente profundiza en los desafíos del aprendizaje por refuerzo, incluidas las funciones no diferenciables, la demora en recibir recompensas y el problema de la asignación de créditos. El problema de la asignación de créditos se aborda a través de técnicas como búsqueda aleatoria, gradientes de políticas y Q-learning, donde el orador explica cada algoritmo, sus beneficios y sus limitaciones. El algoritmo Q-learning se analiza con mayor detalle, con una explicación de cómo funciona utilizando una gran tabla de números para representar los valores Q. La presentación concluye con una explicación de cómo Q-learning profundo y AlphaGo han revolucionado el campo del aprendizaje por refuerzo.

  • 00:00:00 En esta sección, el instructor presenta el tema del aprendizaje por refuerzo y explica en qué se diferencia del aprendizaje fuera de línea. El aprendizaje por refuerzo implica modelar un agente que interactúa con un mundo y aprende en tiempo real a partir de la retroalimentación que recibe. El ejemplo de una aspiradora robot en un entorno desconocido se utiliza para ilustrar este concepto. El instructor también menciona tres algoritmos para resolver la tarea de aprendizaje por refuerzo, a saber, búsqueda aleatoria, gradientes de políticas y Q-learning. Luego, la discusión cambia a los desarrollos recientes en el aprendizaje por refuerzo, con un enfoque en AlphaGo, AlphaZero y la búsqueda en curso para vencer al mejor jugador humano del mundo en StarCraft II mediante el uso de IA.

  • 00:05:00 En esta sección, el profesor explica el marco básico del aprendizaje por refuerzo, que involucra un entorno, un modelo y un alumno. El modelo realiza acciones y recibe recompensas inmediatas y cambia su estado en consecuencia, mientras que el alumno actualiza el modelo sobre la marcha. El disertante presenta ejemplos simples como el problema de la aspiradora, el tres en raya y problemas de control para ilustrar cómo funciona el aprendizaje por refuerzo. En los problemas de tic-tac-toe y aspiradora, las recompensas solo se otorgan cuando el modelo alcanza un estado final, mientras que los problemas de control implican aprender a controlar un robot o una máquina en un entorno automatizado.

  • 00:10:00 En esta sección, el orador analiza el aprendizaje por refuerzo en el contexto de un automóvil robótico de equilibrio de postes, que es un problema clásico de control en el campo. El objetivo es mantener el automóvil en posición vertical, lo que se logra con un motor de física simple o un robot físico. El sistema utiliza una recompensa escasa, donde la única recompensa que se otorga es si el carro se cae del riel o si el poste termina en posición vertical. El objetivo de aprendizaje es maximizar la recompensa evitando esta penalización el mayor tiempo posible. Luego, el orador muestra una demostración de un helicóptero a control remoto que fue entrenado usando el aprendizaje de refuerzo para realizar acrobacias, comenzando con el aprendizaje supervisado y agregando objetivos auxiliares y forma de recompensa.

  • 00:15:00 En esta sección, el orador analiza cómo el aprendizaje por refuerzo cambió el juego del aprendizaje profundo. Señala que antes de AlphaGo, los investigadores usaban juegos de Atari para obtener algoritmos para aprender de los píxeles. Crearon una red neuronal llamada aprendizaje de refuerzo profundo que permitió que el sistema aprendiera a jugar muchos juegos diferentes. Este es un concepto poderoso porque los investigadores usaron una red neuronal profunda para aprender las asignaciones de estados a acciones, lo que llamamos una política. Hay tres problemas principales con el aprendizaje por refuerzo: la pérdida no diferenciable, el problema de la asignación de créditos y la exploración frente a la explotación.

  • 00:20:00 En esta sección, el orador analiza los desafíos del aprendizaje por refuerzo, incluido el tema de las funciones no diferenciables dentro del entorno y el equilibrio entre exploración y explotación. La demora en recibir la recompensa real del entorno es otro problema, ya que requiere el reconocimiento de qué acciones previas contribuyeron al resultado final. El orador también brinda un ejemplo del desafío que se encuentra al aprender a conducir un automóvil, donde la recompensa inmediata por frenar puede conducir a una asociación incorrecta con un choque posterior. La solución requiere distribuir la recompensa entre las acciones anteriores y aprender cuáles condujeron a resultados positivos o negativos.

  • 00:25:00 En esta sección, el video presenta el problema de asignación de créditos en el aprendizaje por refuerzo, que implica determinar los pesos para una red neuronal que maximizará la recompensa mientras interactúa con el mundo. El video explica cómo una función de recompensa, las transiciones de estado y una política pueden determinar el entorno de la red neuronal. Presenta tres enfoques para resolver este problema, comenzando con el más simple: búsqueda aleatoria. También se introduce el concepto de métodos de optimización de caja negra basados en la población, con un ejemplo de una aplicación exitosa de este método a un juego de Atari llamado "Frostbite".

  • 00:30:00 En esta sección, el disertante analiza el aprendizaje por refuerzo y las diferentes técnicas utilizadas para el problema de asignación de créditos. Recomiendan comenzar con la búsqueda aleatoria como enfoque de referencia, lo que funciona bien para algunos juegos simples. Sin embargo, los métodos más complejos, como los gradientes de políticas y Q-learning, son populares para canalizaciones de aprendizaje de refuerzo más profundas. El gradiente de políticas busca asignar recompensas a cada paso de una trayectoria en una secuencia, en función de la recompensa total al final. Si bien esto puede parecer contradictorio, se promedia en múltiples trayectorias y funciona bien para situaciones en las que parte de la tubería de aprendizaje profundo no es diferenciable.

  • 00:35:00 En esta sección, se analiza el concepto de gradientes de políticas y cómo se pueden utilizar para optimizar la recompensa final esperada a través de la estimación de gradientes. El algoritmo implica estimar el gradiente muestreando un grupo de trayectorias, siguiendo cada una de estas acciones a través del resto de la tubería y multiplicando la recompensa final por el gradiente del logaritmo de la probabilidad de esa acción para cada trayectoria en la muestra. Esta estimación del gradiente se puede utilizar para una mayor retropropagación. Este algoritmo se ha utilizado en AlphaGo y AlphaZero.

  • 00:40:00 En esta sección, el orador analiza Q-learning, que es un algoritmo popular en el aprendizaje por refuerzo que se utiliza para optimizar la recompensa con descuento. La recompensa con descuento es la recompensa total que recibirá una póliza si elige acciones específicas en diferentes estados. Q-learning utiliza una función recursiva para calcular la recompensa con descuento para cada estado en función de las acciones de la política. La política óptima que maximiza la recompensa con descuento se determina luego en base a este cálculo. El orador usa un ejemplo simple de un mundo de aspiradoras para demostrar cómo funciona Q-learning.

  • 00:45:00 En esta sección, el orador explica el concepto de una política óptima y una función de valor óptima en el aprendizaje por refuerzo. La política óptima conduce al valor máximo para un estado particular, mientras que la función de valor óptimo es la función de valor de esa política. Sin embargo, estos valores son a menudo difíciles de calcular. Luego, el orador presenta el algoritmo Q-learning, que redefine la política óptima y la función de valor óptimo en términos de una función llamada Q. Q se define como la recompensa inmediata multiplicada por el valor descontado de Q para el siguiente estado resultante de una acción realizada. en el estado actual. La definición circular de Q permite la posibilidad de crear una función Q y preguntar si es óptima completando los valores.

  • 00:50:00 En esta sección, el disertante analiza el método de resolución de ecuaciones recurrentes por iteración como una forma de encontrar la función Q óptima para Q-learning. Simplifica la relación de recurrencia mediante el uso de una función escalar y demuestra que se puede utilizar el cálculo iterativo para encontrar el estado/solución estable. De manera similar, para Q-learning, la función Q inicial se inicializa aleatoriamente, y luego la relación de recurrencia se aplica como un programa, y la función Q se actualiza en función de los valores proporcionados por la relación de recurrencia. Los valores de la función Q se actualizan después de cada interacción con el entorno donde se encuentra un estado, una acción, una recompensa o un estado sucesor, y el valor máximo de cada estado sucesor se usa para actualizar la función Q.

  • 00:55:00 En esta sección, se explica el algoritmo de aprendizaje Q, que implica aprender una gran tabla de números para representar los valores Q. El algoritmo funciona observando la recompensa inmediata en cada estado y propagándola de regreso al estado inicial mediante la repetición de la misma trayectoria. El espacio de estado se explora a través de la exploración ávida de épsilon, un proceso en el que se sigue la mejor política con una pequeña probabilidad de explorar aleatoriamente un estado. Luego se introduce el aprendizaje profundo de Q, que implica implementar una red neuronal para aprender la función de valor Q. A través de la retropropagación, la red se actualiza con información de recompensas inmediatas observadas y estados sucesores. Finalmente, se promete una explicación de cómo funciona AlphaGo en los 30 minutos restantes del video, siguiendo una recomendación del documental "AlphaGo".

  • 01:00:00 En esta sección, el orador explica el juego de Go y disipa algunos conceptos erróneos comunes sobre AlphaGo. Si bien es cierto que el juego de Go tiene un alto factor de ramificación, no es solo el tamaño del árbol lo que dificulta el juego. Mirar profundamente en el árbol para descubrir la mejor estrategia de movimiento también es un aspecto desafiante. El orador también analiza los enfoques antiguos del juego de Go, como el algoritmo minimax, que se utiliza para enumerar todos los futuros posibles desde el estado actual.

  • 01:05:00 En esta sección, el orador analiza la búsqueda del árbol de Monte Carlo, un método para explorar un árbol de juego de manera rápida y eficiente para aproximarse al algoritmo minimax. Este método implica hacer lanzamientos, que seleccionan movimientos al azar y estiman el valor del estado en términos de aprendizaje por refuerzo. El orador habla sobre cómo la búsqueda de árbol de Monte Carlo combina despliegues con el mantenimiento de una memoria del árbol local para construir regiones prometedoras del árbol sin explorar todo. El algoritmo básico implica la expansión de nodos, la implementación y la retropropagación de valores para actualizar las probabilidades de todos los nodos seguidos hasta la hoja. Este método funciona bien y no implica ningún aprendizaje automático ni redes neuronales.

  • 01:10:00 En esta sección, el ponente analiza cómo AlphaGo y AlphaZero son ejemplos de aprendizaje por refuerzo aplicado al juego de Go. AlphaGo utiliza dos redes neuronales, una red de políticas y una red de valor, para jugar Go. La red de políticas asigna un estado del tablero a una acción, y la red de valor asigna el estado a la probabilidad de ganar de ese estado. Usan el aprendizaje por imitación para entrenar estas redes aprendiendo de los juegos humanos y luego mejoran a través del juego propio utilizando el aprendizaje de refuerzo de gradiente de políticas. Durante el juego real, AlphaGo utiliza la búsqueda del árbol de Monte Carlo con la red de valores y políticas para realizar sus movimientos. AlphaZero es una versión más nueva que no utiliza ninguna información humana, sino que desarrolla su comprensión del juego completamente a través del juego autónomo. AlphaZero combina la política y las redes de valor en una única red, utiliza la búsqueda de árboles de Monte Carlo como operador de mejora de políticas y agrega conexiones residuales con normalización por lotes para mejorar el rendimiento.

  • 01:15:00 En esta sección, se analiza el concepto de un "monstruo de dos cabezas", donde una red tiene un conjunto compartido de capas inferiores que obtienen gradientes tanto de la política como de los resultados de valor. Durante la capacitación, el principio MCTS se usa como un operador de mejora de políticas, de modo que comienzan con una política inicial, la dejan jugar contra sí misma usando MCTS y observan la política resultante como MCTS. Este paso de mejora observado se da luego como objetivo de entrenamiento a la red. Además, se utiliza una combinación de conexiones residuales y una mejor normalización como truco para la red neuronal, lo que permite una facilidad gradual para aprender una red neuronal cada vez más profunda que funciona muy bien, especialmente en combinación con la normalización por lotes.

  • 01:20:00 En esta sección, el orador analiza la importancia de la inicialización del peso y la estandarización de los datos para entrenar adecuadamente las redes de aprendizaje por refuerzo profundo. El orador sugiere que inicializar los pesos para que la entrada se estandarice con media cero y varianza uno da como resultado gradientes de mejor comportamiento durante la retropropagación. La normalización por lotes es una capa útil para ayudar con esta estandarización, ya que examina todas las instancias del lote, calcula la media y la desviación estándar y las estandariza. Esto puede ayudar a acelerar el entrenamiento y entrenar redes mucho más profundas; el orador cita el éxito de AlphaGo y AlphaZero en el entrenamiento mediante la normalización por lotes.

  • 01:25:00 En esta sección, el ponente analiza el desarrollo de AlphaStar, el último avance de DeepMind en aprendizaje automático aplicado a juegos de estrategia en tiempo real. A diferencia del juego de Go, que AlphaGo de DeepMind había considerado "resuelto", StarCraft planteó desafíos únicos para el aprendizaje automático debido a su espacio de acción diverso, información imperfecta y ausencia de un árbol de juego. AlphaStar utiliza una combinación de técnicas que incluyen un torso de transformador, un núcleo LSDM profundo, una red de punteros y aprendizaje de múltiples agentes. Si bien DeepMind aún no ha publicado los detalles de cómo funciona AlphaStar, la demostración de sus habilidades contra los jugadores de Starcraft de nivel mundial es impresionante y representa el estado actual del arte en este campo.

  • 01:30:00 En esta sección, el orador analiza el uso de transformadores, que funcionan como incrustaciones y permiten que las redes neuronales comiencen a aprender relaciones entre unidades. Esto es importante porque permite a la red neuronal razonar sobre las relaciones entre unidades particulares, por ejemplo, para la navegación en un juego. Luego, el orador explica cómo funciona el aprendizaje por refuerzo en el muestreo secuencial y cómo el encabezado de política autorregresivo ayuda a crear una secuencia de acciones más coherente y eficiente. Finalmente, el ponente explica el concepto de aprendizaje multiagente y cómo se utiliza para evitar que los jugadores se olviden de superar estrategias fáciles.

  • 01:35:00 En esta sección, el orador analiza la controversia que rodea a AlphaStar, un sistema de inteligencia artificial desarrollado por DeepMind para jugar el juego StarCraft. AlphaStar logró derrotar a los jugadores profesionales de StarCraft, lo que generó debates sobre si el sistema de IA realmente mostraba un rendimiento similar al humano o explotaba habilidades que los humanos no tienen. Una de las principales ventajas de AlphaStar era que podía ver todo el tablero a la vez, a diferencia de los jugadores humanos que tienen que ajustar constantemente la vista de la cámara. Además, aunque AlphaStar tenía un límite de unas 600 acciones por minuto, esas acciones eran de mayor calidad que las acciones de jugadores humanos que podían hacer clic hasta 800 veces por minuto con mucho ruido. Sin embargo, una debilidad de AlphaStar era que no podía responder bien a las nuevas estrategias encontradas durante el juego, lo cual es un problema central del sistema que podría proporcionar información sobre la cognición.
 

Segmentar imágenes y videos en Python usando Segment Anything Model (SAM) | YOLOv5 | YOLOv8 y SAM



Segmentar imágenes y videos en Python usando Segment Anything Model (SAM) | YOLOv5 | YOLOv8 y SAM

Este video presenta el Segment Anything Model (SAM), un modelo de IA que puede identificar y extraer objetos de imágenes y videos para diversas tareas. El SAM está entrenado en un enorme conjunto de datos de 11 000 millones de imágenes y 1 100 millones de máscaras y tiene un gran rendimiento en una variedad de tareas de segmentación. El video proporciona instrucciones paso a paso para usar SAM en un sistema local, incluido cómo instalar los paquetes necesarios, descargar puntos de control de modelos previamente entrenados y realizar segmentaciones en imágenes y videos usando Python. El video también muestra cómo usar SAM con YOLOv5 o YOLOv8 para crear cuadros delimitadores alrededor de objetos de interés. El SAM también tiene aplicaciones potenciales en la animación.

  • 00:00:00 En esta sección, el video presenta Segment Anything Model (SAM), un modelo de IA lanzado recientemente por Meta que puede identificar y extraer objetos de imágenes y videos para diversas tareas. El SAM está capacitado en 11 000 millones de imágenes y 1 100 millones de máscaras y tiene una fuerte generalización de tiro cero en una variedad de tareas de segmentación. El video demuestra cómo usar el SAM a través de una demostración que permite a los usuarios cargar una imagen y realizar una segmentación en la imagen completa o cortar cada objeto por separado. Los usuarios también pueden dibujar cuadros delimitadores, agregar máscaras y realizar múltiples máscaras. El SAM también tiene aplicaciones potenciales en la animación. El video también proporciona información adicional sobre la arquitectura de SAM, la disponibilidad del conjunto de datos y las preguntas más frecuentes.

  • 00:05:00 En esta sección del video, el presentador demuestra cómo usar Segment Anything Model (SAM) para crear máscaras múltiples para diferentes objetos en una imagen. El SAM ha sido entrenado en un conjunto de datos de 11 millones de imágenes y 1100 millones de máscaras y tiene un desempeño sólido en una variedad de tareas de segmentación. El presentador muestra cómo seleccionar una imagen, ejecutar la segmentación en la imagen completa y luego recortar los objetos separados. El presentador también muestra cómo dibujar cuadros delimitadores alrededor de los objetos y cómo descargar y distribuir los datos resultantes. El video concluye con información sobre cómo instalar SAM y usarlo en Python, incluso con YOLOv5 y YOLOv8.

  • 00:10:00 En esta sección del video, el presentador explica los requisitos para ejecutar el segmento cualquier modelo en un sistema local, incluso tener una GPU e instalar los paquetes necesarios como Torch y Dodge Vision con soporte CUDA. Demuestran cómo clonar el repositorio de Segment Anything Model e instalar todas las dependencias necesarias mediante pip. El video también cubre cómo convertir un modelo de segmentación al formato ONNX y cómo descargar los puntos de control del modelo previamente entrenados para tres tamaños de red troncal diferentes. Luego, el presentador muestra cómo hacer la segmentación de imágenes y videos usando el modelo. El video también incluye instrucciones detalladas paso a paso para cada tarea, lo que facilita el seguimiento de los espectadores.

  • 00:15:00 En esta sección del video, el presentador primero importa todas las bibliotecas requeridas, incluida Matplotlib, para mostrar imágenes de entrada y salida en el cuaderno de la aplicación de Google. Luego, descargan imágenes de muestra de su unidad y muestran una imagen de ejemplo de varias personas caminando con edificios en el fondo. A continuación, cargan un punto de control de modelo preentrenado con borde de guión en el bloc de notas de la aplicación de Google y aplican el generador automático de máscaras de modelo de segmentar cualquier cosa a las imágenes para segmentarlas. El presentador proporciona puntos por lado de las imágenes que utiliza SMAM para escanear la imagen y segmentarla en función de los puntos proporcionados. Se establece un umbral IOT de predicción de 0,9 para aumentar la precisión de la segmentación.

  • 00:20:00 En esta sección del video, el presentador demuestra cómo usar Segment Anything Model (SAM) para realizar la segmentación de objetos en imágenes y videos usando Python. Demuestran cómo ajustar la programación de IU para aumentar la precisión y reducir la cantidad de basura en la salida. Aplican el modelo de segmentación a una imagen de muestra y muestran cómo segmenta con precisión a la persona, el edificio y el árbol. Luego usan el mismo modelo para segmentar un video de muestra instalando el paquete de meta segmentación y descargando videos de muestra de Google Drive. Luego, el presentador copia el código de un repositorio de GitHub y lo aplica al video, implementando efectivamente el SAM en el video.

  • 00:25:00 En esta sección, el orador analiza el repositorio Segment Anything Model (SAM), que contiene tres modelos diferentes con diferentes tamaños de red troncal, lo que permite a los usuarios definir el nombre del modelo y llamar al video que desean implementar. Luego, el orador ejecuta el código necesario para integrar el SAM con YOLOv5 o YOLOv8, utilizando paquetes existentes e imágenes de muestra. El orador demuestra cómo se usa el SAM para realizar la segmentación en edificios, árboles y automóviles, usando códigos de color para eliminar el ruido de la salida. El ponente también analiza las diferentes versiones del modelo de segmentación, indicando que cada modelo tiene un tamaño de columna vertebral diferente. La demostración destaca la precisión y la velocidad del modelo YOLOv8 Nano más pequeño.

  • 00:30:00 En esta sección, el orador muestra cómo pudieron usar el modelo Segment Anything (SAM) con YOLOv8 para realizar la segmentación y crear cuadros delimitadores alrededor de objetos de interés. Demuestran la capacidad del modelo al mostrar un cuadro delimitador que rodea a una persona y también segmenta su imagen. El orador concluye el video tutorial destacando la integración de YOLOv8 con SAM y despidiéndose de los espectadores.
 

Curso YOLOv8 - Aplicación web de detección de objetos en tiempo real usando YOLOv8 y Flask - Cámara web/cámara IP


Curso YOLOv8 - Aplicación web de detección de objetos en tiempo real usando YOLOv8 y Flask - Cámara web/cámara IP

El curso YOLOv8 es una serie de tutoriales que guían a los espectadores a través de la creación de una aplicación web de detección de objetos en tiempo real utilizando YOLOv8 y Flask. Los tutoriales cubren la instalación del software necesario, como Python y PyCharm, la creación de un entorno virtual, la instalación de paquetes y la prueba de detección de objetos en imágenes y cámaras web. Los tutoriales también cubren la conversión de salida de tensores a enteros, el etiquetado de los objetos detectados y el almacenamiento del video de salida con las detecciones. A los espectadores se les muestra cómo integrar YOLOv8 con Flask y cómo ejecutar la aplicación web de detección de objetos en tiempo real tanto en videos como en transmisiones de cámaras web en vivo.

En la segunda parte del video, el presentador demuestra cómo crear una aplicación web usando Flask y YOLOv8 para la detección de objetos en transmisiones y videos de cámaras web en vivo, además de mostrar el entrenamiento y la inferencia de un modelo personalizado para la detección de equipos de protección personal. La aplicación web tiene una página de inicio, una página de video y una página de transmisión de cámara web en vivo, con estilo CSS para cada página, y el presentador recorre los archivos HTML y Flask utilizados para el proyecto. El video demuestra el proceso de importar un conjunto de datos, prepararlo para entrenar el modelo YOLOv8, entrenar el modelo, analizar los resultados y probar el modelo en videos de demostración. En general, el video proporciona un tutorial completo para desarrollar y probar una aplicación web de detección de objetos en tiempo real.

El presentador también analiza los cambios realizados en una aplicación web que utiliza el modelo YOLOv8 entrenado en un conjunto de datos de equipo de protección personal (PPE). Los cambios incluyen la modificación del código para asignar diferentes colores a los cuadros delimitadores y los rectángulos de etiquetas en función de los nombres de las clases y establecer una puntuación de confianza superior a 0,5 para que aparezcan los cuadros delimitadores y los rectángulos. El presentador demuestra la detección exitosa de elementos de PPE en un video y una transmisión de cámara web en vivo, lo que marca el final del curso.

  • 00:00:00 El siguiente paso es descargar e instalar Python y PyCharm Community Edition. No se recomienda la última versión de Python, ya que puede tener errores y correcciones de errores. Podemos descargar la última versión de la versión Python 3.8 que se recomienda. La versión PyCharm Professional ofrece una prueba gratuita de 30 días, pero la Community Edition es suficiente para el tutorial. Una vez que hayamos descargado e instalado el software necesario, podemos crear una carpeta vacía con cualquier nombre de nuestra elección y luego abrirla en PyCharm para iniciar el proyecto.

  • 00:05:00 En esta sección del curso acelerado de YOLOv8, el instructor demuestra cómo crear un nuevo entorno virtual en Pycharm e instalar los paquetes necesarios para el proyecto. El instructor muestra cómo crear un nuevo proyecto, seleccionar el intérprete base e instalar paquetes a través de la ventana Administrador de paquetes. También muestran cómo crear un archivo requirements.txt para anotar todos los paquetes que le gustaría instalar desde la línea de comandos. El video enfatiza la importancia de instalar el paquete ultralítico para la detección de objetos usando YOLOv8.

  • 00:10:00 En esta sección, el instructor muestra cómo instalar YOLOv8, que es la única versión de YOLO que tiene su propio paquete. Al usar pip install ultralytics, se puede instalar YOLOv8 y, si es necesario realizar algún cambio en el script de detección o entrenamiento, se puede clonar el repositorio. Luego, el instructor usa YOLOv8 para detectar objetos en una imagen al importar el paquete y el modelo YOLOv8, especificar el archivo de pesos previamente entrenado y pasar la ruta de la imagen de entrada. Los resultados muestran los objetos detectados en la imagen.

  • 00:15:00 En esta sección, el video muestra cómo probar el modelo YOLOv8 en nuevas imágenes al agregarlas a la carpeta de imágenes y ejecutar el script de prueba de YOLO. Después de importar la biblioteca cv2 y agregar un retraso, el modelo produce resultados bastante impresionantes al detectar motocicletas y automóviles con precisión. El video también aborda el problema de la precisión frente a la velocidad cuando se usan diferentes modelos de YOLO y sugiere usar el modelo YOLOv8x para obtener resultados aún más precisos. Luego, el video pasa a probar el modelo YOLOv8 en una cámara web usando un nuevo directorio.

  • 00:20:00 En esta sección del video, el presentador crea un nuevo archivo llamado "YOLOv8_webcam.py". Importan YOLOv8, CB2 y matemáticas, y establecen "cap" igual a "CV2.videoCapture(0)", lo que les permitirá ejecutar YOLOv8 en su cámara web. Calculan la velocidad de fotogramas y la altura llamando a "cap.get(5)" y "cap.get(4)", respectivamente. Explican que quieren guardar el video de salida con detecciones, por lo que establecen el nombre del archivo de salida como "output.avi" usando CB2.VideoWriter(). Pasan la velocidad de fotogramas y la altura a la función, y luego configuran "moderno" como igual a "YOLOv8". Luego, el presentador prueba si su cámara web funciona bien llamando a "CV2.imshow('image', image)" y "CV2.waitKey(1)" en su imagen.

  • 00:25:00 En esta sección del Curso YOLOv8, el presentador prueba la cámara web y verifica si el video de salida se guarda correctamente. Luego procede a ejecutar las detecciones en la fuente web en vivo usando el modelo YOLOv8 y guarda los resultados en una variable llamada 'resultados'. El código examina cada uno de los cuadros delimitadores individuales para ver el rendimiento. Cada cuadro delimitador tiene cuatro coordenadas: X1, Y1, X2 e Y2, que se convierten en forma de número entero a partir de tensores para su posterior procesamiento y creación de cuadros delimitadores alrededor del objeto detectado.

  • 00:30:00 En esta sección del video, el presentador explica cómo se convierte la salida de tensores a números enteros y cómo se crea un rectángulo alrededor de cada objeto detectado usando cv2.rectangle. El color y el grosor del cuadro delimitador se definen junto con el punto inicial y final de cada objeto detectado. El resultado de la aplicación muestra que los cuadros delimitadores se dibujan perfectamente alrededor de los objetos detectados. Sin embargo, el presentador menciona la necesidad de mostrar también la etiqueta y el puntaje de confianza para cada objeto detectado. El puntaje de confianza se muestra actualmente en forma de tensores, pero el presentador planea convertirlo en un número entero usando mat.c.

  • 00:35:00 En esta sección del tutorial en video, el instructor muestra a los espectadores cómo agregar puntajes de confianza a los objetos detectados, convertirlos en números enteros y etiquetarlos según su ID de clase. El ID de clase está determinado por el tipo de objeto, siendo 0 una persona, 1 una bicicleta y 2 un automóvil. El instructor también demuestra cómo crear un rectángulo alrededor de la etiqueta y guardar las detecciones de salida en un archivo llamado salida.avi. Los espectadores pueden ver las detecciones en vivo cuadro por cuadro y el instructor les muestra cómo detener el proceso haciendo clic en la pantalla. El instructor también muestra el archivo de video de salida y confirma que los resultados son los esperados. Finalmente, el instructor anuncia que en el próximo tutorial ejecutarán YOLOv8 en Windows y compartirán los resultados.

  • 00:40:00 En esta sección del curso YOLOv8, el creador demuestra cómo realizar la detección de objetos en un video de muestra utilizando pesos preentrenados de YOLOv8. El objetivo es detectar tanto bicicletas como personas, que forman parte del conjunto de datos de COCO. El creador muestra cómo ejecutar el script y redirigir la carpeta a la carpeta de video designada, luego detecta con éxito bicicletas, personas y otros objetos, como un semáforo. Luego, el creador demuestra que el video de salida con las detecciones se guarda en la carpeta seleccionada, mostrando los cuadros delimitadores alrededor de los objetos detectados con etiquetas y puntajes de confianza. Se crea la función de detección de video para contener todo el código, y se crea un archivo llamado last app dot Pi.

  • 00:45:00 En esta sección del video, el orador analiza los pasos necesarios para integrar YOLOv8 con Flask para crear una aplicación web de detección de objetos en tiempo real. El primer paso es instalar Flask, que se realiza mediante pip install. A continuación, el altavoz importa las bibliotecas necesarias e inicializa Flask. Luego, crean una función llamada generar marco que toma la ruta del archivo de video de entrada y genera la salida con cuadros delimitadores alrededor de los objetos detectados. Finalmente, el orador analiza la codificación de imágenes como bytes y la conversión de cuadros individuales en un video usando el teclado de eliminación. El resultado final son fotogramas individuales con cuadros delimitadores alrededor del objeto detectado, etiquetas y puntuaciones de confianza.

  • 00:50:00 En esta sección, el creador del video explica cómo integrar YOLOv8 con Flask para crear una aplicación web de detección de objetos en tiempo real. El video demuestra la codificación de fotogramas y la conversión de la imagen en bytes, seguido de un bucle en fotogramas individuales para la detección y la visualización de fotogramas posteriores. El video muestra el reemplazo de marcos visuales usando el tipo de medios, mientras que el tipo de contenido se utiliza para mostrar los marcos posteriores. El video incluye una demostración en la que el archivo de video se pasa como entrada para la detección, lo que da como resultado cuadros de límite alrededor de los objetos detectados; en este escenario, personas, bicicletas y semáforos. El video concluye afirmando que el próximo tutorial cubrirá la detección en transmisiones de cámaras web en vivo, creando así una API Fly Fast.

  • 00:55:00 En esta sección, el presentador demuestra cómo ejecutar la aplicación web de detección de objetos en tiempo real YOLOv8 en una cámara web en vivo. Al cambiar la ruta de video a 0 en el script, el programa se puede ejecutar en la transmisión de la cámara web en vivo. Se crea una nueva URL y se vincula a la aplicación Flask, lo que permite la detección de objetos en tiempo real de la transmisión de la cámara web en vivo. El presentador muestra que el programa puede detectar con precisión objetos como una persona, una bicicleta y un semáforo de la transmisión en vivo. Además, la ruta del video se vuelve a cambiar a la URL del video y el programa también demuestra su capacidad para detectar objetos en un video.

  • 01:00:00 En esta sección, el videotutorial se centra en la creación de una página web HTML completa utilizando HTML y CSS para el diseño frontal y Flask para el back-end. La aplicación web consta de tres páginas diferentes: una página de inicio, una página de video y una página de transmisión de cámara web en vivo. La página de inicio presenta un encabezado, contenido y un pie de página con ejemplos de resultados de diferentes proyectos. La página de video permite al usuario cargar un video y ejecutar detecciones YOLOv8 en ese video. La página de transmisión de la cámara web en vivo permite al usuario realizar detecciones en la transmisión de la cámara web en vivo. El video también muestra el archivo de pila de puntos de la aplicación Flask y las tres páginas HTML.

  • 01:05:00 En esta sección, el tutorial en video explica cómo permitir que los usuarios carguen un archivo de video en el modelo de detección de objetos mediante el formulario Flask. El tutorial utiliza validadores para garantizar que el usuario cargue el archivo de video en el formato correcto (MP4 o .avi). La ruta del archivo del archivo de video cargado se almacena en la variable de archivo usando el formulario de clase. El tutorial también presenta la función de generación de cuadros que se usa para detectar objetos en el archivo de video de entrada. El archivo de video de entrada se guarda en la carpeta de archivos estáticos y el usuario puede enviar el archivo de video para las detecciones haciendo clic en el botón Enviar.

  • 01:10:00 En esta sección del curso YOLOv8, la atención se centra en la función de detección que tenemos en el archivo de video YOLO Dash. La función de reducción de video nos proporciona una dirección y con la detección de objetos, hay cuadros delimitadores de salida alrededor de los objetos detectados con etiquetas y puntajes de confianza. Los cuadros actuales se convierten luego en bytes, según lo requiera la imagen o los cuadros de entrada de Flask. La función generar marco web se llama cuando queremos acceder o redirigir a la cámara web en la aplicación, con un punto de sesión claro que elimina los archivos de video de entrada del almacenamiento de la sesión, lo que permite que la detección ocurra en videos nuevos o archivos de entrada, no en el anterior. unos. Se crea la instancia del formulario de carga del archivo, con la ruta del archivo de video guardada en la variable de almacenamiento de la sesión. El almacenamiento de la sesión se borra después para garantizar que la detección se realice en los videos nuevos, lo que evita que la aplicación detecte los videos anteriores o los archivos de entrada.

  • 01:15:00 En esta sección, el disertante explica el código y los archivos HTML utilizados en el curso YOLOv8 para la detección de objetos en tiempo real en una aplicación web usando Flask y una cámara web/cámara IP. El orador demuestra cómo guardaron la parte del video en el almacenamiento de la sesión y llamaron a la ruta del video para hacer las detecciones en el video. También muestran el archivo dot Pi de la aplicación Flask para el proyecto. El archivo HTML consta del idioma, el título de la página, el cuerpo y los encabezados con sus propiedades, como el color de fondo, la familia de fuentes, el color del texto, la altura y otros elementos. Además, el orador explica el propósito del radio del borde al crear una forma de rectángulo redondeado.

  • 01:20:00 En esta sección, el orador muestra las páginas principales de la aplicación web que ha creado. Comienzan mostrando la URL de la página principal de Dash que dirige al usuario a la página de transmisión de video, donde puede cargar un video y hacer que se produzcan detecciones de objetos. Luego muestran la página UI.html, donde ocurren las detecciones en la transmisión de la cámara web en vivo. También demuestran la página de resultados de muestra, que muestra tres imágenes que guardaron y pasaron al HTML. Por último, muestran el pie de página, que al hacer clic, redirige al usuario a su canal de YouTube. A lo largo de la demostración, el orador muestra el estilo CSS que ha usado para cada página.

  • 01:25:00 En esta sección, el orador demuestra la aplicación web de detección de objetos en tiempo real usando YOLOv8 y Flask con una cámara web y un video en vivo. El estilo CSS se agrega a la página web, y el orador ejecuta el archivo cap de la clase de Python para realizar las detecciones en el video, así como en la transmisión de la cámara web en vivo. El usuario también puede ingresar un archivo de video para obtener las detecciones. Los resultados son impresionantes, ya que el modelo YOLOv8 es capaz de detectar objetos como personas, bicicletas, semáforos, etc., y crear cuadros delimitadores con las etiquetas y la puntuación de confianza. El orador concluye demostrando que las detecciones en la transmisión de la cámara web en vivo también funcionan con precisión.

  • 01:30:00 En esta sección del video, el presentador muestra una aplicación web Flask que puede detectar objetos tanto en videos como en transmisiones de cámaras web en vivo usando YOLOv8. La aplicación tiene una página de inicio, una página de video con la capacidad de realizar detecciones en cualquier video de entrada y una página de transmisión de cámara web en vivo. Luego, el presentador pasa a demostrar cómo se puede usar YOLOv8 para la detección de equipos de protección personal (PPE) utilizando un conjunto de datos disponible en Roboflow, que consta de 3235 imágenes con 7 clases diferentes. El presentador cambia el nombre de las clases en consecuencia para reflejar los objetos reales que detecta YOLOv8 y, a continuación, el presentador muestra las estadísticas del conjunto de datos, que incluye una distribución de clases desequilibrada. La relación de división utilizada para el conjunto de datos es 70-20-10. Por último, el presentador demuestra cómo importar el modelo YOLOv8 a un cuaderno Collab.

  • 01:35:00 En esta sección del curso YOLOv8, el instructor explica cómo importar las bibliotecas requeridas y verificar el acceso a la GPU. La biblioteca del sistema operativo se usa para navegar a diferentes archivos y la biblioteca de imágenes se usa para mostrar imágenes de entrada/salida en el cuaderno de Google Colab. El conjunto de datos de detección de datos de PPE luego se importa de Roboflow y se descarga en la carpeta de 'conjuntos de datos' recién creada. El modelo YOLOv8 se instala utilizando pip install ultralytics y luego se verifica su funcionalidad para la instalación y el funcionamiento utilizando import ultralytics.

  • 01:40:00 En esta sección del video, el presentador muestra cómo descargar y preparar el conjunto de datos de detección de PPE para entrenar un modelo YOLOv8. El conjunto de datos consta de conjuntos de prueba y validación, así como un archivo data.yml con nombres de clase para cada objeto. Después de descargar y cambiar el nombre de la carpeta, el presentador usa la interfaz de línea de comando para la implementación local de capacitación, validación y prueba del modelo. El entrenamiento tarda alrededor de tres horas en completarse, y el presentador muestra los resultados del entrenamiento, incluido el archivo de los mejores pesos y los últimos pesos del trabajo número 90. El modelo fue entrenado en siete clases diferentes de objetos PPE.

  • 01:45:00 En esta sección, se analizan los resultados del entrenamiento del modelo YOLOv8, incluida la matriz de confusión y precisión promedio promedio para cada clase. También se examinan las pérdidas de entrenamiento y validación, y los valores de pérdida disminuyen continuamente a lo largo del proceso de entrenamiento. También se muestran las predicciones del modelo sobre los lotes de validación, lo que indica que el modelo funciona bien. Los mejores pesos para el modelo se utilizan para validar un pedido personalizado, y las puntuaciones medias de precisión siguen siendo altas. Finalmente, se ejecuta la inferencia en una imagen para detectar la etiqueta utilizando el modelo personalizado. En general, el modelo YOLOv8 parece funcionar bien en la detección de varias clases en la detección de objetos en tiempo real.

  • 01:50:00 En esta sección, el creador del video demuestra cómo ejecutar el modelo YOLOv8 en un conjunto de datos de prueba de imágenes y un video de demostración. Los resultados del conjunto de datos de prueba se guardan en el archivo de "predicción" y el creador muestra el resultado de las primeras cinco imágenes mediante el paquete "ipython.display". Los resultados muestran que el modelo puede detectar correctamente objetos como placas protectoras, chaquetas, guantes, máscaras contra el polvo, sirvientas protectoras y cascos. Luego, el creador descarga un video de demostración y lo pasa a través del modelo, mostrando la salida que muestra que el modelo puede detectar chaquetas protectoras y sirvientas. El creador del video también menciona la ventaja de usar una GPU para entrenamiento y predicción, ya que lleva menos tiempo.

  • 01:55:00 En esta sección, el presentador prueba el modelo YOLOv8 en videos de demostración para ver cómo funciona. El modelo es capaz de detectar los cascos y chaquetas de protección, pero no los guantes. El presentador descarga los videos de demostración de salida y muestra cómo se desempeña el modelo en cada uno de ellos. El modelo es capaz de detectar las criadas protectoras y las chaquetas en todos los videos de demostración probados. Luego, el presentador descarga el archivo de mejores pesos para el modelo entrenado en equipo de protección personal y analiza cómo integrarlo con Flask para una aplicación web de detección de objetos en tiempo real.

  • 02:00:00 En esta sección, el presentador analiza los cambios realizados en el código de la aplicación web que utiliza el modelo Yellow V8 entrenado en un conjunto de datos de equipo de protección personal (PPE). El conjunto de datos de PPE tiene siete clases diferentes y se enumeran sus nombres. Se ha cambiado el nombre del archivo de mejores pesos a ppe.pt del conjunto de datos de Coco, que consta de 80 clases diferentes. El presentador agregó una función para asignar diferentes colores al cuadro delimitador y al rectángulo de la etiqueta según el nombre de la clase. El presentador ha establecido un límite para la puntuación de confianza y mencionó que el cuadro delimitador y el rectángulo solo aparecerán si la puntuación es superior a 0,5. Los archivos Flask app.py y HTML siguen siendo los mismos. Finalmente, el presentador muestra los resultados de la detección de video en el conjunto de datos de PPE y una cámara web. La aplicación puede detectar con éxito los artículos de PPE en el video.

  • 02:05:00 En esta sección, el presentador demuestra las capacidades de detección exitosas del modelo YOLOv8 en tiempo real usando una cámara web en vivo. El modelo es capaz de detectar con precisión a una persona que lleva un casco protector y una máscara antipolvo, al tiempo que descarta la ausencia de guantes y pantallas. Los resultados se consideran satisfactorios y marcan el final del curso.
 

Seguimiento de objetos en tiempo real con YOLOv8 y DeepSORT | Conteo de vehículos (vehículos que entran y salen)



Seguimiento de objetos en tiempo real con YOLOv8 y DeepSORT | Conteo de vehículos (vehículos que entran y salen)

El video demuestra la implementación del seguimiento de objetos en tiempo real utilizando YOLOv8 y DeepSORT para contar la cantidad de vehículos que ingresan y salen de una carretera. El presentador brinda una guía paso a paso, comenzando con la clonación del repositorio de GitHub, la instalación de los paquetes necesarios, la configuración del directorio y el examen del script de seguimiento. El tutorial cubre el uso de colas dobles, preprocesamiento, regresión no máxima y función Deep SORT para generar ID únicos y determinar nombres de clase. El presentador también explica cómo agregar una función de conteo de vehículos usando una línea en la pantalla, y cada vez que el rastro de un vehículo se cruza con esta línea, el conteo aumenta. La interfaz de usuario se configura mediante una función específica. Finalmente, el presentador muestra cómo la salida actual del script puede detectar intersecciones con la línea y contar los vehículos que entran y salen del área.

  • La sección 00:00:00 del video muestra una demostración de la implementación del seguimiento de objetos mediante clasificación profunda en YOLO V8. El tutorial cubrirá la creación de una aplicación para contar la cantidad de vehículos que ingresan y salen de una carretera. El presentador proporciona una guía paso a paso para seguir usando PyCharm IDE y explica cada paso en detalle. El primer paso es clonar el repositorio de GitHub e instalar los paquetes necesarios. El video también incluye una sección sobre cómo configurar el directorio y examinar el script de seguimiento.

  • 00:05:00 En esta sección del video, el orador explica cómo configurar el archivo de puntos de seguimiento y cómo descargar y colocar los archivos DeepSORT de Google Drive en la carpeta YOLOv8. Los archivos de DeepSORT son demasiado grandes para cargarlos en GitHub, por lo que deben descargarse desde el enlace de Google Drive proporcionado. El video muestra cómo extraer los archivos descargados y colocarlos en la carpeta adecuada. El orador también muestra cómo descargar un video de muestra y ejecutar el script. El script puede tardar algún tiempo en ejecutarse ya que lo están probando en la CPU, pero el orador continúa explicando el código con más detalle mientras se ejecuta el script.

  • 00:10:00 En esta sección, el orador explica el uso de una cola de dos extremos (DQ) y por qué se prefiere a una lista cuando se realizan operaciones de inserción o pop al mismo tiempo. El orador usa DQ para agregar valores en forma de coordenadas centrales inferiores del cuadro delimitador y explica cómo se eliminan los valores una vez que el automóvil desaparece del marco. La longitud máxima del DQ se define como 64, y una vez que alcanza ese valor, no acepta más valores. El altavoz también define la paleta de colores y la interfaz de usuario para crear un borde elegante alrededor de los objetos detectados.

  • 00:15:00 En esta sección, el video desglosa el código para crear una interfaz de usuario (UI) con un rectángulo redondeado y una etiqueta de texto, así como también cómo el programa agrega los objetos detectados a una cola de dos extremos para generar caminos. El código también incluye preprocesamiento y regresión no máxima para cambiar el tamaño de los marcos y realizar detecciones. Se llama a la función Deep SORT para asignar ID únicos y determinar nombres de clase, mientras que set.modern.names ayuda a recuperar información del conjunto de datos COCO y generar cuadros delimitadores.

  • 00:20:00 En esta sección, el orador explica su código para la detección de objetos usando YOLOv8 y DeepSORT, brindando una descripción general del script y cómo funciona. Demuestran el resultado actual del script y notan que están usando un modelo nano, por lo que la detección de objetos aún no es perfecta. El orador también menciona que crearán una serie de conferencias sobre visión por computadora para Europa y alienta a los espectadores a suscribirse para obtener más contenido. Finalmente, muestran cómo su script puede detectar cuándo un sendero se cruza con una línea, indicando cuándo ha pasado un objeto y permitiendo la implementación del conteo de vehículos para entrar y salir.

  • 00:25:00 En esta sección, el presentador explica cómo se agregó la función de conteo de vehículos al sistema de seguimiento de objetos en tiempo real usando YOLOv8 y DeepSORT. El sistema usa una línea en la pantalla, y cada vez que el rastro de un vehículo se cruza con esta línea, el conteo aumenta. El conteo puede aumentar si un vehículo ingresa o sale del área, dependiendo de la dirección de movimiento del vehículo. El presentador también muestra cómo se configura la interfaz de usuario a través de una función particular.
 

Seguimiento y segmentación de objetos en tiempo real con YOLOv8 | Conteo de Vehículos (Entradas y Salidas)



Seguimiento y segmentación de objetos en tiempo real con YOLOv8 | Conteo de Vehículos (Entradas y Salidas)

Este tutorial de vídeo se centra en la implementación de la segmentación y el seguimiento de objetos en tiempo real mediante YOLOv8 y el algoritmo de ordenación profunda. Específicamente, demuestra cómo contar y distinguir entre los diferentes subtipos de vehículos que ingresan y salen de un área determinada. El tutorial cubre varios aspectos, incluida la estimación de la velocidad, la medición de la dirección y la segmentación y el seguimiento precisos de cada vehículo con su ID y sus rutas. El presentador también brinda los pasos necesarios para implementar esto en varios IDE y ofrece el código final para sus seguidores de Patreon.

  • 00:00:00 En esta sección del video, el presentador explica cómo implementar la segmentación de objetos con seguimiento usando YOLOv8 y el algoritmo de clasificación profunda. El video demuestra la segmentación y el seguimiento de vehículos, incluido el conteo de la cantidad de vehículos que entran y salen, así como los tipos de vehículos. La implementación también incluye el cálculo de la velocidad de los vehículos, la asignación de una identificación única a cada vehículo y la definición de los senderos. El presentador proporciona los pasos necesarios para implementar esto en varios IDE, incluidos Anaconda Navigator, PyCharm, Spider y Visual Studio. Las dependencias requeridas, como las bibliotecas, deben instalarse para evitar errores al ejecutar el script predict.5.

  • 00:05:00 En esta sección, el video tutorial se enfoca en implementar la segmentación y el seguimiento usando YOLOv8 y clasificación profunda. Los archivos de clasificación profunda se descargan de Google Drive y se usa un video de muestra para la prueba. El script se modifica para implementar el conteo de vehículos para entrar y salir, con un diccionario utilizado para almacenar el conteo de vehículos por subtipo. El contador de objetos uno se utiliza para almacenar la cantidad de vehículos que salen por subtipo, mientras que el diccionario de contador de verificación se usa para almacenar la cantidad de vehículos que ingresan. El script modificado rastrea y cuenta los vehículos según su subtipo y si entran o salen del cuadro.

  • 00:10:00 En esta sección, el video explica cómo crear un sistema de conteo de vehículos usando YOLOv8, con un contador de objetos que puede distinguir entre subtipos de vehículos como automóviles, camiones grandes y motocicletas que entran y salen de un área determinada. El video explica el uso de una función de estimación de velocidad y cómo crear una línea que, cuando pasa por un vehículo, incrementa el contador. Además, el video define el PPM constante, o parámetro de imagen, que ayuda a medir la cantidad de píxeles en una imagen.

  • 00:15:00 En esta sección, el orador analiza el concepto de medición de distancia dinámica basada en la distancia entre un objeto y la cámara. Explican que esto se puede lograr utilizando una fórmula que implica que la distancia en metros es igual a la distancia en píxeles dividida por PPM (píxeles por metro) multiplicada por una constante de 3,6 dividida por la velocidad de fotogramas por segundo. Luego, el orador procede a escribir una función para calcular el ángulo y devolver la velocidad en función de la distancia y el tiempo. También crean dos funciones más, set_d y CCW, y escriben una función get_direction para calcular la dirección de un objeto en función del eje y.

  • 00:20:00 En esta sección del video, el presentador revisa su código para la segmentación y el seguimiento de objetos en tiempo real usando YOLOv8. Realizan modificaciones al script, incluida la adición de una estructura de dirección y el cálculo del código restante. El presentador también analiza cómo calcular la velocidad del objeto y agregarla a la lista de ID. Luego copian y pegan un código de intersección y continúan haciendo ajustes para corregir errores en el código.

  • 00:25:00 En esta sección del video, el presentador agrega un código de contador para contar la cantidad de vehículos que entran y salen. El código de contador muestra el conteo total de vehículos y el subconteo, que incluye el número de automóviles, camiones y motocicletas que ingresan. El presentador también sugiere agregar una pantalla para la cantidad de vehículos que salen. Se produce un error en la función de dibujar cuadros y el presentador lo corrige declarando una variable global para el conteo y la cuenta regresiva. El script se ejecuta correctamente y el video de demostración de salida muestra la estimación de velocidad para cada vehículo y el recuento total de vehículos con subcuentas para cada tipo de vehículo que ingresó.

  • 00:30:00 En esta sección, el orador analiza los resultados de su segmentación y seguimiento de objetos en tiempo real utilizando YOLOv8 para el conteo de vehículos. Han logrado resultados precisos e incluso pueden estimar la velocidad de cada vehículo, junto con la identificación de seguimiento y los senderos. Además, la detección y segmentación de cada vehículo se ha realizado con precisión, y también se menciona el recuento total de vehículos. Han puesto este código a disposición exclusivamente de sus seguidores de Patreon, quienes tendrán acceso a todos los códigos y proyectos que comparten. Finalmente, invitan a los espectadores a probar los videos de demostración, implementar el código en sus sitios o unirse a su membresía de Patreon.
 

Seguimiento de objetos con YOLOv8: seguimiento de vehículos, conteo (entradas y salidas) y estimación de velocidad



Seguimiento de objetos con YOLOv8: seguimiento de vehículos, conteo (entradas y salidas) y estimación de velocidad

El tutorial en video describe cómo implementar el seguimiento de objetos, el conteo de vehículos y la estimación de velocidad usando YOLOv8 y DeepSORT. El presentador comparte un enlace al repositorio de GitHub que contiene el código y recorre el proceso de clonación del repositorio, descarga de archivos DeepSORT, importación de bibliotecas relevantes y definición de una lista DQ de datos para rastrear objetos. También explican cómo determinar la dirección del vehículo e incrementar el conteo en consecuencia. Además, el presentador muestra cómo estimar la velocidad de los vehículos mediante la implementación de la fórmula de la distancia euclidiana basada en las coordenadas X e Y de los objetos rastreados, y configura un espacio para la pantalla de conteo. En última instancia, la salida de la secuencia de comandos muestra la cantidad y la velocidad de los objetos, lo que indica que la implementación se ha realizado correctamente.

  • 00:00:00 En esta sección del tutorial, el presentador explica cómo implementar el seguimiento de detección de objetos y la estimación de velocidad usando YOLOv8. Para comenzar, el presentador proporciona un enlace al seguimiento de objetos de YOLOv8 con el repositorio de GitHub de Deep Sort, que contiene un archivo de Google Colab, así como instrucciones paso a paso para ejecutar el código en Windows. Luego, el presentador realiza los pasos necesarios para clonar el repositorio, configurar el directorio actual e instalar todas las bibliotecas necesarias. Después de eso, el presentador navega a la carpeta de detección y descarga los archivos de clasificación profunda del enlace proporcionado de Google Drive.

  • 00:05:00 En esta sección, el orador explica los pasos para descargar e implementar el seguimiento de objetos con YOLOv8 usando DeepSORT. Guían a los espectadores para que descarguen la carpeta DeepSORT descomprimiendo la carpeta y colocándola en la carpeta principal del proyecto. También explican las importaciones de bibliotecas utilizadas en el archivo predict.py y describen el concepto de cola de dos extremos (DQ) que se utiliza para almacenar ID únicos para objetos que entran y salen del marco. El orador también menciona descargar el video de muestra de Google Drive y esperar unos segundos para la salida, ya que están usando CPU en lugar de GPU para el procesamiento.

  • 00:10:00 En esta sección, el orador explica varias funciones utilizadas en el rastreador de clasificación profunda, un algoritmo de rastreo para el rastreo de objetos. Incluyen la función de adición de punto, que se usa para agregar valores al extremo derecho de una deque, un tipo de datos de contenedor que se usa para almacenar objetos y la función de adición de punto a la izquierda que se usa para insertar valores en el extremo izquierdo de una deque. El orador también analiza la función de cálculo de etiquetas de colores, que asigna diferentes colores a los objetos en función de sus tipos. Además, se explican en detalle las funciones dibujar borde de tablero y dibujar cuadros de tablero, donde crean una interfaz de usuario con un rectángulo redondeado que muestra el ID y el nombre únicos del objeto y una línea de seguimiento que se crea con CB2.9.

  • 00:15:00 En esta sección, el ponente explica cómo crean un Trail Line e implementan el concepto de datos DQ para rastrear objetos. Inicializan una lista DQ y le agregan las coordenadas inferiores de cada objeto detectado. Cuando un objeto sale del cuadro, sus puntos se eliminan de la lista DQ de datos. También crean un predictor de detección de clases, utilizan el algoritmo de clasificación profunda para asignar ID únicos a cada objeto y obtener sus nombres. Llaman a una función de cajas de dibujo y ejecutan las predicciones. Además, implementan el conteo de vehículos descargando y pegando un archivo y definiendo la dirección como norte, sur, este u oeste. Si un objeto entra o sale en una dirección específica, incrementan el conteo.

  • 00:20:00 En esta sección, el orador explica cómo implementaron el conteo de objetos en su script de seguimiento de objetos YOLOv8. Definieron una dirección para que los objetos entraran o salieran en función de su movimiento a través de las líneas designadas. También mostraron el conteo de objetos que ingresan o salen y establecieron el espacio donde se debe mostrar el conteo. Luego, el orador agregó la estimación de la velocidad al implementar la fórmula de la distancia euclidiana, utilizando las coordenadas X e Y de los objetos rastreados para calcular sus velocidades. Usaron un valor de píxel por metro para hacer el cálculo, que se puede hacer dinámico según la posición de la cámara. El resultado de la secuencia de comandos mostró recuentos y velocidades de objetos, lo que indica que la secuencia de comandos funcionaba correctamente.

  • 00:25:00 En esta sección, el ponente explica la fórmula utilizada para calcular la velocidad de los vehículos en metros por hora, que consiste en dividir la distancia en píxeles por el valor de píxel por metro (PPM) y multiplicar el resultado por una constante de tiempo . Cuando un vehículo cruza una línea establecida por el área de detección definida por el usuario, el script incrementará el conteo de vehículos y discernirá si el vehículo está entrando o saliendo del área, según la dirección en la que viaja. En última instancia, las estimaciones de velocidad y cantidad de vehículos se agregan a la lista de resultados y el usuario puede implementar este proyecto siguiendo los pasos del tutorial.
Razón de la queja: