Detección de objetos con aprendizaje profundo y OpenCV | Yacine Rouizi | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Detección de objetos con aprendizaje profundo y OpenCV

teacher avatar Yacine Rouizi

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Descripción general

      1:22

    • 2.

      Instalación

      1:40

    • 3.

      Detección de objetos en imágenes

      14:10

    • 4.

      Detección de objetos en videos

      4:41

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

63

Estudiantes

--

Proyecto

Acerca de esta clase

En esta clase veremos cómo detectar objetos en imágenes y videos usando el aprendizaje profundo y OpenCV.

Vamos a usar el marco de un solo detector de tomas combinado con la arquitectura de MobileNet como nuestro detector de objetos basado en el aprendizaje.

Conoce a tu profesor(a)

Teacher Profile Image

Yacine Rouizi

Profesor(a)

Hi! My name is Yacine Rouizi. I have a Master's level in physics of materials and components and I am a passionate self-taught programmer. I've been programming since 2019 and I teach on my blog about programming, machine learning, and computer vision.

My goal is to make learning accessible to everyone and simplify complex topics, such as computer vision and deep learning, by following a hands-on approach.

Ver perfil completo

Habilidades relacionadas

Computadora Fotografía IA para fotografía
Level: Beginner

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Descripción general: Hola. En esta clase, veremos como detectar objetos en imágenes y videos usando deep learning y CV abierto. Mi nombre es Yossi y seré tu instructor en esta clase. Llevo programando desde 2019. Y yo soy el autor del vlog. No te repitas, donde ayudo a más de 5 mil desarrolladores cada mes a aprender más sobre Python, aprendizaje automático y visión por computadora. Entonces, ¿qué es la detección de objetos? detección de objetos es el proceso de localizar objetos con cajas delimitadoras, una imagen o un video. Es una de las tareas más importantes en la visión por computador. Y tiene muchas aplicaciones en diversos campos, como vigilancia, personas, conteo, autos autónomos, etc. Ahora, hay una diferencia entre detección de objetos y la clasificación de imágenes. Entonces, básicamente, la detección de objetos es el proceso que localiza objetos en una imagen. Si bien la clasificación de imágenes es el proceso que asigna etiquetas a las imágenes en función de su contenido. Así que entremos a la clase y empecemos a construir nuestro proyecto. 2. Instalación: Lo primero que tenemos que hacer es instalar los paquetes requeridos útiles para el procesamiento de imágenes. Entonces vamos a instalar OpenCV y el non pipe. Primero comencemos con OpenCV, abrimos una nueva ventana de terminal y ejecutemos el comando pip, Install OpenCV polygon. En mi caso, se puede ver que tengo CV abierto ya instalado. Requisito, ya satisfecho. Pero solo quiero crear un entorno virtual. Para que el trío pueda ver lo que obtienes cuando lo instalaste. Así que vamos a crear el entorno virtual. Envidiamos. Hablemos de TV. Ahora, vamos a preinstalar CV abierto. Cv. Aquí puede ver que OpenCV se instaló con éxito junto con CV sin tubería abierta. Entonces no necesito instalar NumPy. Aquí puedes ver que tengo abierto CV 4.54.5 versión de OpenCV y la versión de non pi air es 1.22 a uno. 3. Detección de objetos en imágenes: Ahora en este video, usaremos el detector de disparo único del trabajo combinado con la arquitectura MobileNet como nuestro detector de objetos basado en deep learning. Entonces lo primero que tenemos que hacer es importar nuestras bibliotecas. Entonces diremos importar CB2. Y también podemos cargar nuestra imagen. Entonces vamos a decir Marine aquí, la olla para nuestra imagen. Y también podemos redimensionarlo también. Entonces cuando decimos CV para cambiar el tamaño de la imagen, digamos 644 el ancho. Y para 84 la altura. Ahora vamos a obtener la altura de la imagen y el ancho. Entonces no diríamos imagen punto forma 0. Y para la altura dirá forma uno. Ahora necesitamos los pesos y el archivo de configuración para nuestro modelo. Por lo que descargó este phi es de la documentación de OpenCV. Entonces tenemos dos expedientes aquí. Pondré un enlace a estas personas en la versión textual de esta parte. Entonces ahora que tenemos todos los archivos que necesitamos, podemos cargar nuestro modelo. Para que podamos escribir aquí nuestra red. Entonces no veremos V2 punto DNN punto leído en tipo de flujo. Y en el encabezado proporcionaremos los pesos y el archivo de configuración. Entonces no podemos escribir estas dos variables aquí. Cuando dices que el peso es igual a y nosotros brindamos el camino a nuestro peso. Entonces este es el archivo que contiene los pesos para el modelo. Se puede decir modelo. Esta es la arquitectura de nuestro modelo. Ahora lo que podemos hacer es eso, así que aquí tenemos el archivo de nombres de cacao. Cuando lo pones aquí dentro del proyecto. Entonces básicamente este archivo contiene las cláusulas que podemos detectar. Así podremos abrir el archivo e instalar las etiquetas de clase en la lista. Podemos usar Context Manager para adultos, así lo diremos con open. Y aquí te brindamos el camino a nuestro nombre de cacao está bien. Sólo tienes que copiarlo de aquí. Aquí diremos leer archivo. Aquí almacenaremos las etiquetas de clase dentro, dentro de la lista que vamos a nombrar nombres. Entonces vamos a decir aquí los nombres de clúster es igual a una lista vacía. Aquí podemos escribir f, lote, llovido, despojado y puntos. Y nos dividiremos en base a la nueva línea. Ahora necesitamos preprocesar nuestra imagen y tenemos una función que hará todo el preprocesamiento por nosotros. Entonces podemos decir aquí, blob es igual a c v2 punto DNN. Y aquí usaremos la imagen de envolvente funcional. Aquí te brindamos nuestra imagen. Y ahora aquí tenemos algunos parámetros que están establecidos por defecto. Estos se proporcionan a partir de la documentación. Entonces básicamente aquí el primero es el factor de escala. Podemos poner 1, dividimos por 127.5. Y entonces aquí tenemos el tamaño para la imagen de salida. No podemos escribir 320. Y el último argumento aquí es el medio de valores de producción. Ahora podemos escribir uno a uno a 7.5. Lo mismo aquí y lo mismo aquí. A continuación, podemos establecer el, este blob como entrada para la red y obtener la predicción de salida. Entonces podemos decir aquí, no mucho. Entrada. Y vamos a proporcionar nuestro blob. Para hacer la predicción. Diremos que la salida es igual a cuatro. Ahora aquí tenemos nuestras predicciones. Así que vamos a imprimir la forma de esta variable. Diremos que la forma de salida será escribir nuestro código. Entonces aquí, como pueden ver, tenemos una forma de 11107. Entonces aquí tenemos las detecciones, el pelo siete, tenemos las cajas delimitadoras, la confianza, y alguna otra información. Entonces ahora lo que podemos hacer, podemos recorrer esta variable para obtener las detecciones. Entonces diremos para detección en salida. Aquí diremos 00. Y aquí nos llevamos todo. Y aquí también nos llevamos todo. Ahora aquí obtendremos la confianza del modelo para la detección de corriente. Entonces podemos decir Pro Really t es igual al segundo argumento del segundo elemento de nuestra detección. Ahora podemos filtrar las detecciones de errores. Entonces ahora podemos atar si nuestra probabilidad o la confianza del modelo es, digamos, por debajo de 0.5, seguiremos haciendo un ciclo. Entonces no vamos a hacer nada. Y si no, obtendremos el cuadro delimitador de la detección. Por lo que se encuentran los recuadros delimitadores. Se puede ver la detección de tres a siete. Ahora bien, este cuadro delimitador, o dado un relativamente con respecto a la anchura y la altura de la imagen. Así que vamos a imprimir nuestra caja. Y el pelo. Como puede ver, tenemos 0.30.350.5. Entonces necesitamos multiplicarlos con el ancho y el alto de la imagen para obtener las coordenadas x e y reales del cuadro delimitador. Hola, Qué podemos hacer, podemos usar la función zip y no vamos a escribir una lista de comprensión. Entonces aquí cuando escribamos el ZIP, tomaremos las detecciones de tres a siete. Y el segundo argumento aquí vamos a proporcionar la anchura, la altura, la anchura, y la altura. Y aquí diremos Para a, b en esta función zip, tomaremos la multiplicación de estos dos elementos. Aquí. La primera coordenada es la x de la parte superior izquierda del cuadro delimitador. Lo multiplicamos con el ancho. Entonces tenemos la y. La multiplicamos por la altura. Y luego tenemos la x en la parte inferior, justo por el ancho. Y luego las coordenadas y en la parte inferior, justo multiplicado por la altura. Entonces ya no necesitamos esto. Y también necesitamos convertir nuestra lista en una tupla. Ahora podemos dibujar los rectángulos, así diremos c v2 rectángulo de punto. Aquí. Déjenme decir imagen. Para las coordenadas del rectángulo, usaremos el cuadro delimitador. Toma para el punto de partida, tomaremos los dos primeros elementos del cuadro delimitador. Entonces aquí diremos los dos últimos elementos. El motivo de la llamada a para el espesor. Ahora vamos a extraer el ID de clúster del objeto detectado y obtener la etiqueta de clase. Así que podemos bien, el ID de clase es igual a y aquí el ID del clúster. Podemos acceder a él así. Para el nombre de la clase, podemos escribir aquí la etiqueta. La etiqueta que es el punto de texto que vamos a poner en la imagen que vamos a escribir es igual a una cadena f. El primer elemento. Tomaremos la etiqueta de clase. Entonces tenemos los nombres de nuestras clases. Y los nombres de nuestras clases es una lista. Se inicia a partir de 0. Entonces necesitamos restar uno del ID del clúster. Entonces escribiremos permite ID y restaremos uno. Ahora también podemos escuchar que se muestra la probabilidad junto con las etiquetas de clase. Entonces diremos probabilidad por 100. Y por último, podemos dibujar nuestro texto sobre la imagen. Entonces diremos CV para adoptar poner texto aquí, imagen. Aquí para el texto, tendremos decir la etiqueta para el origen. Podemos usar nuestras cajas. Entonces 0 aquí y la caja uno. Pero aquí agregaremos algunos píxeles para asegurarnos de que el texto esté dentro del cuadro delimitador. Agreguemos 15 píxeles. Ahora para la fuente, podemos usar font. Simplemente busca la piel, digamos 0.5 color verde. Y dos, para el grosor. Creo que ya hemos terminado para que podamos mostrar nuestra imagen. Así decir V2 punto IM mostrar imagen e imagen. Y CB2 punto peso 0. Vamos a ejecutar nuestro código. Y aquí no se muestra el cuadro delimitador. Aquí está, necesitamos tomar los dos últimos elementos en el cuadro delimitador. Entonces cuando volvemos a ejecutar esto, ahora aquí como pueden ver, se detectó a la persona, pero aquí el texto es un poco raro. Podemos cambiar. El tipo de letra, dirá, aquí dicen las mujeres. En terciario es simplemente miradas. Entonces aquí como puedes ver, la persona fue detectada correctamente. Y aquí tenemos la confianza, que es 78% 4. Detección de objetos en videos: Ahora pasemos al siguiente paso, que es detectar objetos en un video. Entonces aquí primero necesitamos inicializar la captura de video. Escribiremos v d u es igual a CV para adoptar captura de video. Y aquí tengo un video que voy a usar en este ejemplo. Entonces vamos a escribir aquí, estamos digamos rehacer un punto mp4. Ahora aquí todo sigue igual. Pero dos, puede crear una lista de colores aleatorios para representar cada clase. Entonces ya podemos escribir aquí. Primero tendremos que importar numpy. Y aquí en realidad no necesitamos estos dos paquetes. Así que aquí vamos a escribir semilla aleatoria de punto no pi para T2 y T4. Los colores, diremos non pi, no alrededor de ellos. Alrededor. Para el valor bajo, diremos 0 y para el valor alto 255. Por lo que generará valores entre estos dos valores. El tamaño usaremos la longitud de nuestros nombres de clase. Y aquí diremos tres para generar los colores RGB. A continuación podemos comenzar a procesar nuestros forams. Entonces si bien es cierto. Y aquí vamos a hacer un up frames. Entonces vamos a decir por qué es cierto aquí. Cuando la copa y cuando ponemos esto dentro del bucle while. Aquí, fuimos a conseguir la altura de nuestros marcos. Entonces para él, no en forma 0. Y también el ancho y el pelo, todo sigue igual. Entonces escucharemos decir marco. Lo único que queremos hacer es conseguir el foro de color, la detección actual. Entonces diremos que los colores son iguales para llamar al nuestro. Y aquí necesitamos proporcionar el ID de la detección. Para que podamos poner esta línea antes del lote de autos. Y aquí podemos decir clase. Ahora necesitamos convertir el color en un entero. Entonces diremos r es igual a entero de color, el primer color. Lo mismo para el BGF. Y el encabezado, podemos usar nuestro color personalizado. Vamos a decir B, G, y R. Y aquí el nombre y el marco. Y aquí necesitamos usar uno por un milisegundo para el peso k De lo contrario, nuestro marco se congelará. Así que ahora podemos ejecutar nuestro código. Entonces ahí vamos. Nuestro auto se detecta con éxito en el video. Ahora puedes usar diferentes videos para ver si esto va a funcionar, esto va a funcionar bien. Pero espero que se te ocurra la idea de la detección de objetos.