Espero que puedas hacer videos donde podamos entrenar con nuestras propias imágenes. He visto muchos videos pero sin duda los tuyos son los mejores con diferencia. Un saludo.
Excelente contenido!! vas a llegar muy lejos con esta calidad sigue así! en mi caso yo necesito hacer tracking de objetos y contarlos (sin que se recuente el mismo como a veces pasaba en este video que perdía la referencia y luego la volvía a tomar el mismo objeto pero se pudo haber contado como nuevo objeto) se me ocurre contarlos si solo duran unos 2 segundos con la referencia para que no cuente las pequeñas intermitencias
¡Muchas gracias Alfredo! Si, justo uno de los puntos importantes a considerar cuando se hace tracking es el switch-id y/o re-id. Esto lo puedes reducir con los siguientes consejos: - Ajusta el max_age de SORT (para que si pierde la detección, pueda volver a asignarlos después de "k" frames perdidos) - Cambia el tracker (e.g. DeepSORT y/o ByteTrack). Ambos tienen pros y cons, lo interesante de DeepSORT es que usa embeddings, por tanto "con base en el embedding y propiedades de SORT per se, asigna, mantiene o cambia el id". Ten en cuenta que DeepSORT es mas lento que SORT. - Agregar heurísticos arriba de tu aplicación. Justo como comentas, validadores de tiempo podría ser una opción. ¡Mas adelante vendrá contenido de trackers!
@@ferneutron (Espero me leas :c ) tengo un problema que me está superando en conocimiento a cerca de YoloV5... me contacté contigo por Instagram ya que estoy buscando ayuda y aún no encuentro a alguien o algo que me pueda ayudar... No sé será posible que me puedas ayudar con esto ya que estoy casi desesperado con solucionar mi problema, he buscado mucha info, pero no logro encontrar algo en concreto de como solucionarlo... Muchas gracias por ello en caso sea posible y si no de igual manera por subir buen contenido :D
Hola, buen video y buena didatica te felicito...!!! Podrias hacer un tercer video para llevar un conteo general de autos que pasan dentro del poligono. gracias...!!! ya tienes mi 👍 Saludos...!!!
¡Gracias! Claro, con todo gusto. Si entiendo correctamente, lo que sugieres sería contar todos los autos que ya han pasado por el polígono, cierto? De ser así, solo bastaría con inicializar el contador fuera del ciclo -while- y con esto, estaríamos teniendo el acumulado de todos los autos.
Hola, excelente video Ferneutron, una pregunta, si ya tengo el modelo preentrenado pero en Yolov5 este código que muestras en el video funcionaría igualmente? Tendría que hacer algunos ajustes? O cambia totalmente? Siendo así, donde podría encontrar una guía para hacerlo? Gracias!!
¡Muchas gracias! Cierto, una aplicación interesante es determinar las dimensiones de un objeto. Lo agrego a mi backlog para tan pronto como sea posible, lanzar un video sobre este tema. ¡Saludos!
Lo haces ver muy facil!! y es el único que me ha funcionado.. oye y si yolo no tiene los objetos que quiero detectar como puedo hacer para entrenarlo que los detecte , es decir agregarla a su base de conocimiento mas objetos?
Hola buenas tardes, veo que es muy atento con las inquietudes de las personas. Pregunta... Hiciste fine tuning con tu dataset personalizado o estas usando directamente el modelo? Aunque imagino que por defecto coco tiene categorías de carros cierto. Porfa espero su respuesta 👊👊
Que tal @theworldofmadafaka8845 ! Es posible agregar multiples cámaras. No obstante, esta implementación tendría que ser refactorizada para poder abordar tal comportamiento. Cuando utilizas multiples cámaras, tienes que asegurar la sincronización entre estas. Tendrías que crear una estructura de datos (queue) que controle este comportamiento.
Buen video estimado Fernando. Interesante la aplicación que muestras. Seria muy importante además de detectar el vehículo y el tipo (moto, auto, bus, camión etc), tambien el tiempo ( hora/min/seg) para luego registrarlo en un csv. Eso permitiria luego agrupar por hora, la cantidad de vehículo y la clasificación por tipo. Es posible que el video con los autos se procese más rápido o es una limitación de cómputo ?
Por supuesto. Las aplicaciones basadas en vision por computadora, particularmente la detección y segmentación de objetos, se prestan muy bien para la extracción de métricas la cuales, puedes gestionar como lo necesites. Un ejemplo sería lo que comentas, guardar en archivos. Otra opción sería enviar esa info a una base de datos en tiempo real cuando el video es en stream. Y si, el procesamiento esta sujeto al poder de computo. No obstante, hay algunas técnicas que podemos utilizar para mejorar el performance de la aplicación. Una muy común es hacer un "resize", que básicamente sería reducir el tamaño de los frames tanto como sea necesario pero sin degradar demasiado la detección.
Hola, excelente video Ferneutron . ¿Como puedo hacer para poder detectar los colores de los vehículos en tiempo real(de cualquier color y tipo de vehículo)?
Que tal @oberpolinard8407 ! Para detectar el color, con opencv pudes extraer el equivalente RGB (0-255, 0-255, 0-255). Échale un ojo a: pyimagesearch.com/2014/08/04/opencv-python-color-detection/
Hola ! soy nueva en esto, me gustaria que el control de cuantas personas hay en un auto puedan verlo los pasajeros, pero no encuentro como visualizarlo en una aplicación, que lenguajes de programación o recursos deba utilizar para conectar esa información :c
Buenas noches, excelente video muchas gracias por compartir. Disculpa, como podría definir una región de interés para que solo cuente los objetos que estén dentro, pero que sea sobre una imagen. Preguntarte, si el código lo puedes compartir...Saludos!
¡Muchas gracias! Este código tal cual está, solo funciona para yolov5. No obstante, puedes bajar yolov8.pt desde ultralytics y también, con la misma librería de ultralytics, cargar el modelo. Te paso este link en donde se explica a detalle: docs.ultralytics.com/modes/predict/
@@ferneutron disculpa la molestia amigo, alguna recomendación para entrenar modelos de redes neuronales pero en lugar de imágenes sean audios, es decir, en lugar que sea detectar objetos, sea detectar sonido de aves en una selva, por decir un ejemplo
¡Que tal! Claro, existe una gran variedad de modelos que puedes utilizar para audio dependiendo de la tarea que vayas a resolver (por ejemplo, clasificación de audio, etc). Puedes echarle un ojo a Wav2Vec, aquí te dejo un link con un buen tutorial sobre como entrenar un modelo para clasificación de audio con un dataset custom: huggingface.co/docs/transformers/tasks/audio_classification Espero te funcione! :)
@@ferneutron muchas gracias de nuevo, pero, me refería ha que si se pudiera hacer la detección de sonido directo en python, así como mostraste en tus videos, solo en cuestión de cargar el modelo y empezar la deteccion
en mi trabajo me encargaron revisar videos de descarga de salmones. son videos estaticos solo van pasando salmones, y derrepente aparecen uno que otro sujeto. podria hacerlo con esto cierto? mi pc es igual al que estas ocupando
Hola! Es correcto. Yolo podría detectar el sujeto y con base en esta detección, contar. Si lo que pretendes es contar salmones, ahí tendrías que customizar Yolo o buscar algún modelo pre entrenado que detecte peces.
¡Hola @santiagosuarez4274! Uno de los errores comunes es que el archivo .pt no se haya descargado o que el path que no este seteado correctamente. Igual si compartes el error, podríamos ver un poco más del detalle :) ¡Saludos!
¡Hola @StonedBored! Así es. Todo aquello que puedas optimizar (el heurístico, leer/escribir, etc), tendrá impacto directo en la latencia. Por tanto, si lo guardas la latencia seguro se beneficiará. Otro consejo que también te podría servir es que hagas un resize del video (a una tamaño más pequeño) y yo que el video que guardes también sea de una dimension menor. También, si el video está a 20 FPS, podrías guardarlo a 10, esto hará que también vaya más rápido. ¡Saludos!
@@ferneutron Gracias por responder! Amigo la ultima pregunta, si quiero usar google colab (por el hecho de puedo usar su GPU) como puedo correr el codigo pero no usando VideoCapture? Entiendo que con colab es complicado correr un video. Pero desde que quiero solo guardar el video no necesito verlo en tiempo real. Hay alguna alternativa para VideoCapture? Exactamente en esa linea se cae.
@@StonedBored hay varias formas de hacerlo, una forma práctica es: 1) Sube el video directo a colab o importalo desde drive. 2) Para cargar el video, usamos cv2, entonces tendrías que agregar una línea que sea: cap = cv2.VideoCapture("video.mp4") Ahora, si lo que quieres es omitir el uso de VideoCapture(), entonces asumo que por alguna razón no usarás cv2. Por tanto, otra alterativa es usar moviepy, de esta forma: ``` from moviepy.editor import VideoFileClip # Open video file video_path = "video.mp4" clip = VideoFileClip(video_path) ``` ¡Espero te funcione, saludos!
Hey @kamrangul2876! Thanks for your comment. Will try in the future to create some content in english. For the mean time, I have some blogs in english: ferneutron.medium.com/ .
Muchas Gracias, @Ferneutron, brutal. Bendiciones
Espero que puedas hacer videos donde podamos entrenar con nuestras propias imágenes. He visto muchos videos pero sin duda los tuyos son los mejores con diferencia. Un saludo.
¡Gracias!
Por supuesto, ¡próximamente estaré subiendo material al respecto!
Muchas gracias, muy buena explicación y muy útil el codigo que nos compartes. Ya lo probé y funciona correctamente. Ya me suscribí a tu canal.
Excelente contenido!! vas a llegar muy lejos con esta calidad sigue así! en mi caso yo necesito hacer tracking de objetos y contarlos (sin que se recuente el mismo como a veces pasaba en este video que perdía la referencia y luego la volvía a tomar el mismo objeto pero se pudo haber contado como nuevo objeto) se me ocurre contarlos si solo duran unos 2 segundos con la referencia para que no cuente las pequeñas intermitencias
¡Muchas gracias Alfredo!
Si, justo uno de los puntos importantes a considerar cuando se hace tracking es el switch-id y/o re-id. Esto lo puedes reducir con los siguientes consejos:
- Ajusta el max_age de SORT (para que si pierde la detección, pueda volver a asignarlos después de "k" frames perdidos)
- Cambia el tracker (e.g. DeepSORT y/o ByteTrack). Ambos tienen pros y cons, lo interesante de DeepSORT es que usa embeddings, por tanto "con base en el embedding y propiedades de SORT per se, asigna, mantiene o cambia el id". Ten en cuenta que DeepSORT es mas lento que SORT.
- Agregar heurísticos arriba de tu aplicación. Justo como comentas, validadores de tiempo podría ser una opción.
¡Mas adelante vendrá contenido de trackers!
@@ferneutron gracias!
Excelente explicación 🎉
excelente instructor
excelente. habria que ver una variación de contar autos unicos a travez de todo el video.
excelente video, gracias
Nuevo sub... contenido muy bien explicado!!!!
¡Gracias!
Sigo trabajando en generar mas contenido que les pueda ayudar/servir/gustar.
¡Saludos!
@@ferneutron (Espero me leas :c ) tengo un problema que me está superando en conocimiento a cerca de YoloV5... me contacté contigo por Instagram ya que estoy buscando ayuda y aún no encuentro a alguien o algo que me pueda ayudar...
No sé será posible que me puedas ayudar con esto ya que estoy casi desesperado con solucionar mi problema, he buscado mucha info, pero no logro encontrar algo en concreto de como solucionarlo...
Muchas gracias por ello en caso sea posible y si no de igual manera por subir buen contenido :D
@@victorhuertas5159 ¡Hola Victor! Claro, justo ya te he respondido por allá :)
que tal estimado muy bueno, también realizas proyectos ya que requiero para conteo de objetos
Excelente video. Una consulta, puedes hacer un ejemplo para hacerlo contando personas?
Hola, buen video y buena didatica te felicito...!!! Podrias hacer un tercer video para llevar un conteo general de autos que pasan dentro del poligono. gracias...!!! ya tienes mi 👍 Saludos...!!!
¡Gracias!
Claro, con todo gusto. Si entiendo correctamente, lo que sugieres sería contar todos los autos que ya han pasado por el polígono, cierto? De ser así, solo bastaría con inicializar el contador fuera del ciclo -while- y con esto, estaríamos teniendo el acumulado de todos los autos.
Hola, excelente video Ferneutron, una pregunta, si ya tengo el modelo preentrenado pero en Yolov5 este código que muestras en el video funcionaría igualmente? Tendría que hacer algunos ajustes? O cambia totalmente? Siendo así, donde podría encontrar una guía para hacerlo? Gracias!!
Buen video me a ayudado mucho. Si conoces alguna manera de poder determinar el tamaño de lo objetos seria genial con yolov5. Exitos..!!
¡Muchas gracias!
Cierto, una aplicación interesante es determinar las dimensiones de un objeto. Lo agrego a mi backlog para tan pronto como sea posible, lanzar un video sobre este tema.
¡Saludos!
Eso es util para controlar la velocidad de los vehiculos
Lo haces ver muy facil!! y es el único que me ha funcionado.. oye y si yolo no tiene los objetos que quiero detectar como puedo hacer para entrenarlo que los detecte , es decir agregarla a su base de conocimiento mas objetos?
Hola buenas tardes, veo que es muy atento con las inquietudes de las personas. Pregunta... Hiciste fine tuning con tu dataset personalizado o estas usando directamente el modelo? Aunque imagino que por defecto coco tiene categorías de carros cierto. Porfa espero su respuesta 👊👊
Que tal bro!
No hice fine tune, estoy utilizando Yolo tal cual está (con las clases de coco)
Saludos!
Este mismo procedimiento lo puedo usar para cualquier objeto que quiera detectar?
bro this opening was an absolute jumpscare
👀
Hola amigo, ya no está disponible el repositorio del ejemplo... Por favor podrías actualizarlo a YoloV8 ?
hola, excelente video, una pregunta, si quisiera utilizar multiples camaras en este script es posible, y de ser asi como podria agregarlas ?
Que tal @theworldofmadafaka8845 !
Es posible agregar multiples cámaras. No obstante, esta implementación tendría que ser refactorizada para poder abordar tal comportamiento.
Cuando utilizas multiples cámaras, tienes que asegurar la sincronización entre estas. Tendrías que crear una estructura de datos (queue) que controle este comportamiento.
gracias me ayudaste un monton pero el codigo esta en el otro video esta invertido!!! para los curiosos
excelente explicacion... nuevo sub !.. en su github como encuentro este proyecto ?
¡Gracias!
Si, ahí encuentras varios de los proyectos de los videos
Buen video estimado Fernando. Interesante la aplicación que muestras.
Seria muy importante además de detectar el vehículo y el tipo (moto, auto, bus, camión etc), tambien el tiempo ( hora/min/seg) para luego registrarlo en un csv. Eso permitiria luego agrupar por hora, la cantidad de vehículo y la clasificación por tipo. Es posible que el video con los autos se procese más rápido o es una limitación de cómputo ?
Por supuesto. Las aplicaciones basadas en vision por computadora, particularmente la detección y segmentación de objetos, se prestan muy bien para la extracción de métricas la cuales, puedes gestionar como lo necesites. Un ejemplo sería lo que comentas, guardar en archivos. Otra opción sería enviar esa info a una base de datos en tiempo real cuando el video es en stream.
Y si, el procesamiento esta sujeto al poder de computo. No obstante, hay algunas técnicas que podemos utilizar para mejorar el performance de la aplicación. Una muy común es hacer un "resize", que básicamente sería reducir el tamaño de los frames tanto como sea necesario pero sin degradar demasiado la detección.
Hola, excelente video Ferneutron . ¿Como puedo hacer para poder detectar los colores de los vehículos en tiempo real(de cualquier color y tipo de vehículo)?
Que tal @oberpolinard8407 !
Para detectar el color, con opencv pudes extraer el equivalente RGB (0-255, 0-255, 0-255).
Échale un ojo a: pyimagesearch.com/2014/08/04/opencv-python-color-detection/
Hola ! soy nueva en esto, me gustaria que el control de cuantas personas hay en un auto puedan verlo los pasajeros, pero no encuentro como visualizarlo en una aplicación, que lenguajes de programación o recursos deba utilizar para conectar esa información :c
Buenas noches, excelente video muchas gracias por compartir. Disculpa, como podría definir una región de interés para que solo cuente los objetos que estén dentro, pero que sea sobre una imagen. Preguntarte, si el código lo puedes compartir...Saludos!
¡Hola Jose Luis!
Claro, con gusto te comparto el script que uso en el video: github.com/FernandoLpz/TH-cam/blob/main/CountCars/coordinates.py
buen video, pero tengo un modelo en yolov8 en formato .pt,me pregunto si funcionará en este código o solo es para versiones yolov5
¡Muchas gracias!
Este código tal cual está, solo funciona para yolov5. No obstante, puedes bajar yolov8.pt desde ultralytics y también, con la misma librería de ultralytics, cargar el modelo. Te paso este link en donde se explica a detalle: docs.ultralytics.com/modes/predict/
@@ferneutron muchas graciasss, nuevo suscriptor:))))
@@ferneutron disculpa la molestia amigo, alguna recomendación para entrenar modelos de redes neuronales pero en lugar de imágenes sean audios, es decir, en lugar que sea detectar objetos, sea detectar sonido de aves en una selva, por decir un ejemplo
¡Que tal!
Claro, existe una gran variedad de modelos que puedes utilizar para audio dependiendo de la tarea que vayas a resolver (por ejemplo, clasificación de audio, etc). Puedes echarle un ojo a Wav2Vec, aquí te dejo un link con un buen tutorial sobre como entrenar un modelo para clasificación de audio con un dataset custom: huggingface.co/docs/transformers/tasks/audio_classification
Espero te funcione! :)
@@ferneutron muchas gracias de nuevo, pero, me refería ha que si se pudiera hacer la detección de sonido directo en python, así como mostraste en tus videos, solo en cuestión de cargar el modelo y empezar la deteccion
en mi trabajo me encargaron revisar videos de descarga de salmones. son videos estaticos solo van pasando salmones, y derrepente aparecen uno que otro sujeto. podria hacerlo con esto cierto? mi pc es igual al que estas ocupando
Hola!
Es correcto. Yolo podría detectar el sujeto y con base en esta detección, contar. Si lo que pretendes es contar salmones, ahí tendrías que customizar Yolo o buscar algún modelo pre entrenado que detecte peces.
Hola, una pregunta, como solucionas el cargar el modelo de Yolov5n? Me aparecen los errores pero no sé como solucionarlos, muchas gracias!
¡Hola @santiagosuarez4274!
Uno de los errores comunes es que el archivo .pt no se haya descargado o que el path que no este seteado correctamente. Igual si compartes el error, podríamos ver un poco más del detalle :)
¡Saludos!
@@ferneutron Gracias, hoy volví a intentar y funcionó correctamente :)
Si no quiero ver el video en tiempo real y solo guardarlo, hace que el procesamiento sea mas rapido? Por ejemplo, si tengo 1 video de 24 horas.
¡Hola @StonedBored!
Así es. Todo aquello que puedas optimizar (el heurístico, leer/escribir, etc), tendrá impacto directo en la latencia. Por tanto, si lo guardas la latencia seguro se beneficiará.
Otro consejo que también te podría servir es que hagas un resize del video (a una tamaño más pequeño) y yo que el video que guardes también sea de una dimension menor.
También, si el video está a 20 FPS, podrías guardarlo a 10, esto hará que también vaya más rápido.
¡Saludos!
@@ferneutron Gracias por responder! Amigo la ultima pregunta, si quiero usar google colab (por el hecho de puedo usar su GPU) como puedo correr el codigo pero no usando VideoCapture? Entiendo que con colab es complicado correr un video. Pero desde que quiero solo guardar el video no necesito verlo en tiempo real. Hay alguna alternativa para VideoCapture? Exactamente en esa linea se cae.
@@StonedBored hay varias formas de hacerlo, una forma práctica es:
1) Sube el video directo a colab o importalo desde drive.
2) Para cargar el video, usamos cv2, entonces tendrías que agregar una línea que sea: cap = cv2.VideoCapture("video.mp4")
Ahora, si lo que quieres es omitir el uso de VideoCapture(), entonces asumo que por alguna razón no usarás cv2. Por tanto, otra alterativa es usar moviepy, de esta forma:
```
from moviepy.editor import VideoFileClip
# Open video file
video_path = "video.mp4"
clip = VideoFileClip(video_path)
```
¡Espero te funcione, saludos!
English please
Hey @kamrangul2876!
Thanks for your comment. Will try in the future to create some content in english. For the mean time, I have some blogs in english: ferneutron.medium.com/ .