Training Yolov3 Custom Dataset en Google Colab

Поділитися
Вставка
  • Опубліковано 18 лис 2024
  • En este video encontrarás el PASO a PASO para entrenar una red neuronal YOLOv3 usando tu propio dataset y con procesamiento en la nube (pytorch y google colab).
    Enlace al repositorio (código e instrucciones):
    github.com/Dav...
    Instalador de Git para Windows:
    git-scm.com/do...
    Tutoriales de interés:
    Yolov3 en video
    • YOLOv3 Detección de ob...
    Etiquetado de imágenes y configuración de dataset para detección de objetos Retinanet:
    • Detección de objetos (...
    Entrenamiento de la red neuronal convolucional detección de objetos Retinanet:
    • Detección de objetos (...
    Prueba dedetección de objetos en video Retinanet:
    • Detección de objetos (...
    Data augmentation parte 1:
    • Data Augmentation para...
    Data augmentation parte 2: (Entrenamiento Clasificador de imágenes de aves)
    • Data Augmentation para...
    Cómo calcular e interpretar la matriz de confusión:
    • Cómo interpretar y cal...
    Transfer learning Resnet50, VGG16, VGG19, Mobilenet
    • Clasificación de imáge...

КОМЕНТАРІ • 106

  • @camilobahamon4984
    @camilobahamon4984 3 роки тому +1

    el mejor hp video de la historiaaa, llevaba como 2 semanas traton de entrenar la red en maquina virtual y ya casi llorabaaaa

  • @matematicasuniversitariasc134
    @matematicasuniversitariasc134 3 роки тому +1

    También estaría de lujo un tutorial del mismo video pero probado en modo local con windows, saludos!!

  • @juanjohernandez7848
    @juanjohernandez7848 3 роки тому +2

    Excelente video! Disculpa cómo puedo hacer para sacar gráficas del entrenamiento y validación?

    •  3 роки тому

      Hola Juan, muchas gracias por escribir
      Claro que sí, solamente crea una celda en colab después de tu entrenamiento y ejecuta la siguiente línea:
      %load_ext tensorboard
      %tensorboard --logdir logs
      Saludos!!! y gracias nuevamente por comentar

  • @Belmont0102
    @Belmont0102 3 роки тому +1

    Hola. Muchas gracias por este video, por fin lo logro después de varios días de intentar diferentes cosas. Una pregunta, puedo hacer la detección con videos ya grabados? Es decir, .mp4 por ejemplo.
    ¡Muchas gracias!

    •  3 роки тому +1

      Hola Daniel, muchas gracias por comentar.
      Claro que sí. Solo debes ir a la línea donde accedemos a la cámara (si estas corriendo detect_cam.py, vas a la línea 63):
      camera = cv2.VideoCapture(0)
      Y vas a cambiar el número 0, para poner el path del video que quieres cargar, algo así:
      camera = cv2.VideoCapture('Mi_video.avi')

  • @cmunoz4615
    @cmunoz4615 2 роки тому

    Excelente video, agradecido, habrá alguna forma de guardar los pesos con el entrenamiento custom?

  • @matematicasuniversitariasc134
    @matematicasuniversitariasc134 3 роки тому +2

    Hola mi estimado, excelente video. Tengo una pregunta, si quisiera graficar las curvas de aprendizaje y perdida, es posible con esta implementación? Saludos!!

    • @Rinzlah
      @Rinzlah 2 роки тому +1

      Ojalá alguien responda esta pregunta. Saludos!

  • @lucia-hh2iv
    @lucia-hh2iv 4 роки тому +1

    Hola david, soy jorge un nuevo suscriptor, buen video he seguido cada paso y todo bien, solo que tuve problemas al entrenar en colab en modo GPU, cuando entrene en modo none hasta 150 etapas, me corrio perfecto. tal vez sea por que no tengo un procesador gráfico actual. Seguire viendo tus videos

    •  4 роки тому

      Hola, muchas gracias por escribir.
      Si continuas con problemas al entrenar en Colab, compártenos el error y podemos ver si lo podemos solucionar. Saludos!!!

  • @normitirado1225
    @normitirado1225 3 роки тому +1

    Saludos excelente video, me podrias indicar como puedo obtener el bounding box de cada objeto detectado en cada imagen.

    •  3 роки тому

      Hola, muchas gracias por escribir
      En el archivo detectC.py encuentras los bouding box en las líneas 117 y 118. En el código tenemos un bucle for que recorre cada una de las detecciones y guarda en las variables x1, x2, y1 y y2, las coordenadas de cada región.
      Espero que esta información sea de ayuda.

  • @zerguiter001
    @zerguiter001 3 роки тому +2

    @sistemas Inteligente hola amigo tengo un problema con la ultima con el ultimo comando para ya abrir la cámara y luego se queda asi cargando, espero me puedas ayudar por favor
    (YoloCustom) C:\Users\jorge\Yolov3Custom-master>python detect_cam.py --model_def config/yolov3-custom3C.cfg --weights_path checkpoints/yolov3_ckpt_199.pth --class_path data/custom/classes.names --conf_thres 0.6
    Namespace(batch_size=1, checkpoint_model=None, class_path='data/custom/classes.names', conf_thres=0.6, image_folder='data/samples', img_size=416, model_def='config/yolov3-custom3C.cfg', n_cpu=0, nms_thres=0.4, weights_path='checkpoints/yolov3_ckpt_199.pth')
    Traceback (most recent call last):
    File "detect_cam.py", line 99, in
    frame_ = cv2.rectangle(frame, (x1, y1 + box_h), (x2, y1), color, 5)
    cv2.error: OpenCV(4.5.2) :-1: error: (-5:Bad argument) in function 'rectangle'
    > Overload resolution failed:
    > - Can't parse 'pt1'. Sequence item with index 0 has a wrong type
    > - Can't parse 'pt1'. Sequence item with index 0 has a wrong type
    > - Can't parse 'rec'. Expected sequence length 4, got 2
    > - Can't parse 'rec'. Expected sequence length 4, got 2
    [ WARN:0] global C:\Users
    unneradmin\AppData\Local\Temp\pip-req-build-1bq9o88m\opencv\modules\videoio\src\cap_msmf.cpp (438) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback

  • @alonsoamado3723
    @alonsoamado3723 3 роки тому +1

    Hola David.
    Una consulta, cuando intento ejecutar la prueba con imagenes me sale este error:
    (YoloCustom) D:\Desarrollos\Yolov3_handgun_detect>python detectC.py --image_folder data/samplesC/ --model_def config/yolov3-custom3C.cfg --weights_path checkpoints/yolov3_ckpt_9.pth --class_path data/custom/classes.names
    Traceback (most recent call last):
    File "detectC.py", line 3, in
    from models import *
    ModuleNotFoundError: No module named 'models'

  • @artetech904
    @artetech904 3 роки тому

    NO tendrás un video de Faster RCNN?

  • @felipecortes1176
    @felipecortes1176 3 роки тому +1

    Hola David. Gracias por tu vídeo me sirvió bastante, sin embargo una pregunta ¿Cómo logras que tu vídeo streaming desde tu webcam se vea tan fluido cuando detecta? en mi caso cuando ejecuto el comando para detectar con la webcam va bastante lento, con un retraso aproximado de 4s. y he notado que al ejecutarlo corre en la CPU mientras no en la GPU dedicada que tengo.
    Gracias por los vídeos, son de bastante aprendizaje!
    Nuevo Suscriptor!

    •  3 роки тому

      Hola Felipe, gracias por escribir.
      Dependerá la rapidez, entre otras cosas, de la GPU que tengas. Fíjate con el administrador de tareas de windows, en la pestaña de rendimiento, si la gráfica que muestra la memoria de la GPU aumenta en su ocupación. Si no es así, el sistema no la está usando y debes verificar que el entorno tenga correctamente instalado el toolkit de cuda.

    • @felipecortes1176
      @felipecortes1176 3 роки тому +1

      Hola David, muchas gracias por tu ayuda, ya mejoro el retraso en el streaming con la instalación de tensorflow-gpu y cuda.
      Disculpa otra pregunta, ¿Sabes de algún módelo para implementar transfer learning que utilice CNN para regresión?
      Gracia.

    •  3 роки тому

      Hola Felipe
      Me alegra que hayas logrado mejorar el sistema usando el procesamiento en GPU. Respecto a tu pregunta, me he enfocado en sistemas de clasificación más que en sistemas de regresión. Si encuentro algo útil que te pueda servir, con mucho gusto te lo compartiré.

  • @cristophertoapanta9343
    @cristophertoapanta9343 3 роки тому +1

    Buen día, excelente explicación y vídeo. Gracias por compartir. Estoy probando el tutorial como indicas, sin embargo me he encontrado con un error al momento de realizar la Prueba loca en imagen, al ingresar python detectC.py --image_folder data/samplesC/ --model_def config/yolov3-custom3C.cfg --weights_path checkpoints/yolov3_ckpt_252.pth --class_path data/custom/classes.names en ANACONDA...
    OBTENGO EL SIGUIENTE ERROR EN CONSOLA:
    RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location='cpu' to map your storages to the CPU.
    Me sería de gran ayudar que por favor me indicarás como solucionarlo. Saludos

    • @DavidSanchez-xj3ek
      @DavidSanchez-xj3ek 3 роки тому +1

      Que tal amigo, a mi también me dio ese error y encontré la solución en esta pagina stackoverflow.com/questions/56369030/runtimeerror-attempting-to-deserialize-object-on-a-cuda-device
      la primera respuesta es la que me funciono
      Para solucionar esto, puede cambiar los parámetros de la función nombrada load()en el serialization.pyarchivo. Esto se almacena en:./site-package/torch/serialization.py
      Escribir:
      def load(f, map_location='cpu', pickle_module=pickle, **pickle_load_args):
      en vez de:
      def load(f, map_location=None, pickle_module=pickle, **pickle_load_args):
      o si tienes en "none" cambiar a "cpu"

    •  3 роки тому

      Muchas gracias David por tu aporte!!!

    • @alivalentinameragiraldo5756
      @alivalentinameragiraldo5756 3 роки тому +1

      @ hola es que soy nueva utilizando esto, no entiendo bien en que archivo debo modificar para corregir ese error y como hacerlo

    •  3 роки тому

      @@alivalentinameragiraldo5756 muchas gracias por escribir.
      Bueno te cuento que volví a correr todo y no obtengo ese error, estoy corriendo un entorno como se muestra en el repositorio:
      github.com/DavidReveloLuna/Yolov3Custom
      Es decir con python=3.6, pytorch==1.1.0, torchvision==0.3.0 y cudatoolkit=10.0
      Pero si aún con ese entorno sigues con el error, los foros reportan la solución cambiando ésta línea
      def load(f, map_location='cpu', pickle_module=pickle, **pickle_load_args):
      por esta
      def load(f, map_location=None, pickle_module=pickle, **pickle_load_args):
      En el archivo serialization.py que lo encuentras en la carpeta de miniconda3 (donde hayas hecho la instalación), luego lib/site-packages/torch.
      Espero que puedas avanzar!

    • @sofiabricenodiaz9700
      @sofiabricenodiaz9700 3 роки тому

      Después de modificarlo obtuve un nuevo error, ¿a alguien le ocurrió algo similar? Traceback (most recent call last):
      File "detectC.py", line 51, in
      model.load_state_dict(torch.load(opt.weights_path))
      File "C:\Users\Casa\anaconda3\envs\YoloCustom\lib\site-packages\torch\serialization.py", line 549, in load
      _check_seekable(f)
      File "C:\Users\Casa\anaconda3\envs\YoloCustom\lib\site-packages\torch\serialization.py", line 194, in _check_seekable
      raise_err_msg(["seek", "tell"], e)
      File "C:\Users\Casa\anaconda3\envs\YoloCustom\lib\site-packages\torch\serialization.py", line 187, in raise_err_msg
      raise type(e)(msg)
      AttributeError: 'str' object has no attribute 'seek'. You can only torch.load from a file that is seekable. Please pre-load the data into a buffer like io.BytesIO and try to load from it instead.

  • @santiagocanozapata9572
    @santiagocanozapata9572 3 роки тому

    Hola, excelente aporte. ¿Como podria probar otro modelo preentrenado ( Darknet19, Resnet 18 ...... y otros )para el entreamiento?

    •  3 роки тому

      Hola Santiago, gracias por comentar.
      Si son pesos preentrenados de arquitectura Darknet puedes cargarlos con --pretrained_weights. Si lo que buscas es una modificación de yolo para que la extracción de características se haga con otra arquitectura de red, tendrías que buscar los desarrollos específicos con esas variaciones, como en este repositorio que te comparto:
      github.com/makatx/YOLO_ResNet

  • @moisesarias4563
    @moisesarias4563 3 роки тому

    Tienes algún vídeo con Yolo implementandolo en jupyter, o me podrías indicar que se le modificaría, tengo entendido que sería las rutas, es que deseo realizar un entrenamiento local con mi GPU, gracias

  • @juniorgomezcontreras1145
    @juniorgomezcontreras1145 3 роки тому +1

    Hola David , muchas gracias por el video me sirvió batante. Una consulta hice la prueba con un imagenes propias para crear el modelo todo bien pero al momento de que muestra las imagenes resultantes con los BoundingBox la imagen original se reduce de tamaño , como podría hacer para que se mantenga su tamaño original o en que parte del código es que realiza esa reducción de temaño de la imagen original, creo que es esta linea pero no estoy seguro : detections = rescale_boxes(detections, opt.img_size, img.shape[:2]) en el detectC.py. Si me podrías ayudar muchas gracias. Saludos

    •  3 роки тому +1

      Hola Junior, gracias por escribir.
      Dentro de los argumentos al llamar a detectC.py existe la posibilidad de configurar el tamaño de la imagen. Por defecto el valor que toma, si no se especifica otro es de 416 y conserva la proporción. Si quieres modificar ese parámetro lo puedes hacer usando --img_size.

    • @juanjohernandez7848
      @juanjohernandez7848 3 роки тому

      @ Buen día, te agradezco mucho por el video, me a sido de gran utilidad. Estoy trabajando en una aplicación muy particular en donde quiero que el tamaño de la imagen de entrada se conserve, he intentado conservar esa proporción por medio de img_size lo cual ayuda bastante en la detección pero la imagen resultante sigue reduciéndose de tamaño, te agradecería mucho si me puedes orientar en este asunto (y)

  • @jeansethelliotperezbula4028
    @jeansethelliotperezbula4028 3 роки тому

    Excelente video uno de los mejores en UA-cam, tengo un problema en la carpeta dist-packages no me aparece ningun archivo cuya ruta es usr/local/lib/python3.6/dist-packages. he seguido cada uno de los paso. ayuda por favor. gracias

    •  3 роки тому +3

      Gracias!
      Colab está ahora en la versión de Python 3.7. Busca por favor la ruta para esa versión. Debería ser usr/local/lib/python3.7/dist-packages.

    • @jeansethelliotperezbula4028
      @jeansethelliotperezbula4028 3 роки тому

      @ muchas gracias me sirvió eres el mejor

  • @nestorjavierhurtado
    @nestorjavierhurtado 3 роки тому +1

    Y para detección en videos es posible entrenar el modelo también?

    •  3 роки тому +1

      Hola Nestor, muchas gracias por comentar
      Claro que si, solamente se debe cambiar la instrucción de la línea 63 del archivo detect_cam.py como te muestro enseguida:
      La línea ahora mismo es:
      camera = cv2.VideoCapture(0)
      Y la debes cambiar por:
      camera = cv2.VideoCapture("Nombre_del_video.extensión")
      Donde "Nombre_del_video.extensión" debe ser el nombre del video que quieres procesar. Si está el video en la misma carpeta, puedes poner únicamente el nombre y la extensión del video. Si está en otra carpeta, debes incluir el path.

    • @nestorjavierhurtado
      @nestorjavierhurtado 3 роки тому +1

      @ muchas gracias por responder también, gracias por tu explicación

    • @pacocable
      @pacocable 3 роки тому

      @ Muy buen video pero intento de hacerlo con un mp4 cambiando lo que refieres arriba, pero da el siguiente error, uso ubuntu 20.03
      (YoloCustom) paco@paco-ESPRIMO-E710:~/Documentos/Yolov3Custom$ python detect_cam.py --model_def config/yolov3-custom3C.cfg --weights_path checkpoints/yolov3_ckpt_141.pth --class_path data/custom/classes.names --conf_thres 0.6
      Namespace(batch_size=1, checkpoint_model=None, class_path='data/custom/classes.names', conf_thres=0.6, image_folder='data/samples', img_size=416, model_def='config/yolov3-custom3C.cfg', n_cpu=0, nms_thres=0.4, weights_path='checkpoints/yolov3_ckpt_141.pth')
      Traceback (most recent call last):
      File "detect_cam.py", line 52, in
      model.load_state_dict(torch.load(opt.weights_path))
      File "/home/paco/anaconda3/envs/YoloCustom/lib/python3.6/site-packages/torch/serialization.py", line 387, in load
      return _load(f, map_location, pickle_module, **pickle_load_args)
      File "/home/paco/anaconda3/envs/YoloCustom/lib/python3.6/site-packages/torch/serialization.py", line 574, in _load
      result = unpickler.load()
      File "/home/paco/anaconda3/envs/YoloCustom/lib/python3.6/site-packages/torch/serialization.py", line 537, in persistent_load
      deserialized_objects[root_key] = restore_location(obj, location)
      File "/home/paco/anaconda3/envs/YoloCustom/lib/python3.6/site-packages/torch/serialization.py", line 119, in default_restore_location
      result = fn(storage, location)
      File "/home/paco/anaconda3/envs/YoloCustom/lib/python3.6/site-packages/torch/serialization.py", line 95, in _cuda_deserialize
      device = validate_cuda_device(location)
      File "/home/paco/anaconda3/envs/YoloCustom/lib/python3.6/site-packages/torch/serialization.py", line 79, in validate_cuda_device
      raise RuntimeError('Attempting to deserialize object on a CUDA '
      RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location='cpu' to map your storages to the CPU.
      Desde ya muchas gracias por el canal

  • @angelbonillagonzalez1780
    @angelbonillagonzalez1780 3 роки тому +2

    la carpeta data e images, ya no aparece en la carpeta labelImg, alguna sugerencia?

    •  3 роки тому

      Hola Angel, muchas gracias por escribir.
      La carpeta images puedes crearla manualmente, y en ella poner las imágenes que quieres etiquetar, luego seleccionas la carpeta desde LabelImg (OpenDir). La carpeta data también puedes crearla manualmente y seleccionarla desde LabelImg (Chage Save Dir)

    • @angelbonillagonzalez1780
      @angelbonillagonzalez1780 3 роки тому

      @ No me muestra nada en la carpeta de python3.6. que puedo hacer?

    •  3 роки тому

      Hola Angel, gracias por escribir.
      Es posible que la versión de colab sea la 3.7. Busca la carpeta python 3.7.

  • @cesarpujayespinoza4725
    @cesarpujayespinoza4725 3 роки тому

    Hola como se llama el software para poder para seleccionar los lugares de las imágenes?

  • @nept4ne
    @nept4ne 4 роки тому +1

    hola @
    Sistemas Inteligentes David, que tal, nuevo suscriptor. Acabo de descubrir tu canal y quería saber si hay alguna forma de poder contactarte?.
    Es para un proyecto de mentoría. Saludos

    •  4 роки тому +2

      Hola Harry, claro escríbeme al mail david.luna.1986@gmail.com. Saludos!

    • @nept4ne
      @nept4ne 4 роки тому

      @ Te respondí a tu correo. Saludos.

    • @angelbonillagonzalez1780
      @angelbonillagonzalez1780 3 роки тому

      @ Bro, te eh dejado mensajes, por fa si podrías revisarlos

  • @enriqueropo8325
    @enriqueropo8325 3 роки тому +1

    ¿Cómo puedo aumentar la velocidad del modelo?

    •  3 роки тому

      Hola Enrique
      Puedes usar la versión tiny de yolo, que tiene una arquitectura más pequeña y la inferencia toma menos tiempo. La otra opción es mejorar el hardware con una GPU más potente. Espero te ayude, saludos!!!.

  • @juancarlossalazarvaca7080
    @juancarlossalazarvaca7080 3 роки тому

    en la carpeta dist-packages no abre, solo se queda con la flechita abajo que prodría ser disculpa?

  • @rutymedina1807
    @rutymedina1807 3 роки тому +1

    se lleno el disco de google colab :( no alcanzó hacer las 200 épocas. Estoy usando tus imágenes... podría probar en local sin usar google?

    • @musica-lofi
      @musica-lofi 3 роки тому +1

      Me pasó lo mismo

    •  3 роки тому

      Hola, gracias por tu comentario
      Podrías probar local siempre y cuando tengas una tarjeta gpu dedicada, de otra forma no será posible. Ahora, respecto a colab, tiene la limitación que cada 12 horas se reinician los servidores y se cancela el trabajo que lleves al momento del reinicio. Es posible que haya pasado eso y no necesariamente la ocupación de la memoria. Te invitaría a que pruebes nuevamente. Saludos!

    •  3 роки тому

      Rubén, muchas gracias por escribir.
      Otra opción para disminuir la carga de recursos es disminuir el batch-size. Espero que eso pueda ayudar.

    • @erikayanethlarijollanos2781
      @erikayanethlarijollanos2781 3 роки тому +1

      @ hola también tengo el mismo problema, de las 100 épocas no paso, con disminuir te refieres a colocar 2 en lugar de 4? porque al disminuir el batch-size tarda mas en ejecutar y las épocas también tardan mas en ejecutar, alcanzando mas rápido el limite que da colab :c

    •  3 роки тому +1

      @@erikayanethlarijollanos2781 muchas gracias por comentar
      Bueno tenemos que diferenciar las dos limitantes de colab, por una parte tenemos una limitación en capacidad de GPU (eso depende de la GPU que nos asignen en la nube), y esa limitación puede manejarse en cierto modo modificando el batch-size (disminuyéndolo), normalmente ocurre que cuando tenemos un dataset muy grande el sistema se ve limitado y no puede procesar batch grandes. Si el problema que tienes es limitación de tiempo (colab tiene de forma gratuita sesiones de hasta 12 horas), si pasas las 12 horas de colab se reinician los servidores y pierdes el trabajo de entrenamiento que llevas hasta el momento. Si ese es el caso, lo que puedes intentar es aumentar el batch-size para procesar un poco más rápido, pero puedes quedarte corta por las limitaciones en las GB de la GPU asignadas. Si modificando esos parámetros no logras terminar tu entrenamiento solo existen dos opciones. Entrenar local con un equipo de buenas prestaciones, o pagar un servicio en la nube. Colab cobra aprox 9USD por mes para mejorar el tiempo de procesamiento (hasta 24 horas) y te asigna mejores prestaciones en el servicio (mejores GPU).
      Espero aclarar un poco tus dudas, gracias nuevamente por comentar!!!

  • @antonietakuz8369
    @antonietakuz8369 2 роки тому

    buen dia te felicito por el video, te comento que me ha dado el error siguiente: raise RuntimeError('Attempting to deserialize object on a CUDA '
    RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location='cpu' to map your storages to the CPU.

  • @hector_matias
    @hector_matias 3 роки тому +3

    Muy buen vídeo, pero y si quisiera recortar lo que me sale seleccionado y crear una imagen nueva solo con eso recortado? Por ejemplo, si detecto un gato en una imagen en un parque, cortar el gato y tener una imagen nueva con el gato solamente, ¿Cómo podría hacer eso? Muchas gracias y muy buen video

    •  3 роки тому

      Hola Hector, gracias por escribir
      Usando PIL puedes recortar la sección de la imagen con algo como:
      imagen_recortada = imagen.crop(area) # donde área tiene los vértices de la región que vas a recortar (x1,y1,x2,y2) que corresponderían con los datos del boundingbox que usamos para graficar el rectángulo en las detecciones (Esos bounding boxes los encuentras en la parte del código que tiene como comentario "# Draw bounding boxes and labels of detections")
      También podrias recortar la imagen usando opencv, tendrías algo como:
      #Recortar una imagen
      image_recortada = image[f1:f2,c1:c2]
      donde f1,f2,c1 y c2 corresponden también con la información del boundingbox, solo debes tener cuidado de escribir los datos correctamente. En este caso f1:f2 quiere decir: desde la fila f1 hasta la fila f2, y c1:c2 quiere decir: desde la columna c1 hasta columna c2.
      Espero que esta información sea de ayuda.

    • @aldocerda3129
      @aldocerda3129 3 роки тому

      @ entrene mi propio detector, pero aun no puedo recortar el objeto detectado... donde estan los valores del bounding box que debo poner ese comando? saludos

  • @kevinrodriguezyllescas9908
    @kevinrodriguezyllescas9908 3 роки тому

    Alguien me puede ayudar con el siguiente error, es cuando empiezo a colocar el objeto se cierra y me manda ese error :c
    Traceback (most recent call last):
    File "detect_cam.py", line 99, in
    frame_ = cv2.rectangle(frame, (x1, y1 + box_h), (x2, y1), color, 5)
    cv2.error: OpenCV(4.5.3) :-1: error: (-5:Bad argument) in function 'rectangle'
    > Overload resolution failed:
    > - Can't parse 'pt1'. Sequence item with index 0 has a wrong type
    > - Can't parse 'pt1'. Sequence item with index 0 has a wrong type
    > - Can't parse 'rec'. Expected sequence length 4, got 2
    > - Can't parse 'rec'. Expected sequence length 4, got 2
    [ WARN:1] global C:\Users
    unneradmin\AppData\Local\Temp\pip-req-build-uzca7qz1\opencv\modules\videoio\src\cap_msmf.cpp (438) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback

  • @andresgomez9629
    @andresgomez9629 4 роки тому

    Hola, buen dia. Estoy intentando entrenar una sola clase con 200 imagenes utilizo epochs 200 y batch_size 4 y tengo este error
    THCudaCheck FAIL file=/pytorch/aten/src/THC/THCGeneral.cpp line=383 error=11 : invalid argument
    /pytorch/aten/src/ATen/native/cuda/IndexKernel.cu:53: lambda [](int)->auto::operator()(int)->auto: block: [0,0,0], thread: [0,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.
    /pytorch/aten/src/ATen/native/cuda/IndexKernel.cu:53: lambda [](int)->auto::operator()(int)->auto: block: [0,0,0], thread: [1,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.
    /pytorch/aten/src/ATen/native/cuda/IndexKernel.cu:53: lambda [](int)->auto::operator()(int)->auto: block: [0,0,0], thread: [2,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.
    /pytorch/aten/src/ATen/native/cuda/IndexKernel.cu:53: lambda [](int)->auto::operator()(int)->auto: block: [0,0,0], thread: [3,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.
    /pytorch/aten/src/ATen/native/cuda/IndexKernel.cu:53: lambda [](int)->auto::operator()(int)->auto: block: [0,0,0], thread: [4,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.
    /pytorch/aten/src/ATen/native/cuda/IndexKernel.cu:53: lambda [](int)->auto::operator()(int)->auto: block: [0,0,0], thread: [5,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.
    Traceback (most recent call last):
    File "train.py", line 105, in
    loss, outputs = model(imgs, targets)
    File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)
    File "/content/Yolov3Custom/models.py", line 259, in forward
    x, layer_loss = module[0](x, targets, img_dim)
    File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)
    File "/content/Yolov3Custom/models.py", line 188, in forward
    ignore_thres=self.ignore_thres,
    File "/content/Yolov3Custom/utils/utils.py", line 317, in build_targets
    class_mask[b, best_n, gj, gi] = (pred_cls[b, best_n, gj, gi].argmax(-1) == target_labels).float()
    RuntimeError: CUDA error: device-side assert triggered

    •  4 роки тому +1

      Hola Andrés, gracias por escribir
      Ese error suele ocurrir cuando no están bien los labels de las imágenes de tu dataset. Te recomendaría que pruebes primero con el dataset que está en el repositorio del tutorial, y si funciona, definitivamente el problema es tu dataset. Tendrías que revisar el formato del etiquetado de las imágenes.

    • @andresgomez9629
      @andresgomez9629 3 роки тому

      @ Hola, gracias por responder, tenia razon sobre el mal label de mis imagenes, lo pude corregir y funciona a la perfeccion he trabajado con 6 clases. Tengo la duda si este archivo .pth lo puedo subir a una tarjeta de desarrollo como maix duino he visto que usan archivos .h5 y .tflite pero no se como generarlos aqui, Gracias!

  • @cristianmorilla8631
    @cristianmorilla8631 3 роки тому +1

    Mil disculpas, suelo arreglármelas para solucionar codigo pero este error me esta superando, pq encontre que es un error de etiquetamiento pero ya reetiquetado mis datos 3 o 4 veces controlando paso a paso seria de mucha ayudar una respuesta, lei en los comentarios que ya le paso a otras personas
    File "train.py", line 99, in
    for batch_i, (_, imgs, targets) in enumerate(dataloader):
    File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataloader.py", line 582, in _next_
    return self._process_next_batch(batch)
    File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataloader.py", line 608, in _process_next_batch
    raise batch.exc_type(batch.exc_msg)
    TypeError: Traceback (most recent call last):
    File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/worker.py", line 99, in _worker_loop
    samples = collate_fn([dataset[i] for i in batch_indices])
    File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/worker.py", line 99, in
    samples = collate_fn([dataset[i] for i in batch_indices])
    File "/content/Yolov3Custom/utils/datasets.py", line 130, in _getitem_
    img, targets = horisontal_flip(img, targets)
    File "/content/Yolov3Custom/utils/augmentations.py", line 8, in horisontal_flip
    targets[:, 2] = 1 - targets[:, 2]
    TypeError: 'NoneType' object is not subscriptable

    •  3 роки тому

      Hola Cristian, gracias por comentar
      Efectivamente, he visto ese error por problemas en el dataset y las etiquetas. Si me compartes tu dataset puedo revisarlo, e intentar solucionar el problema para que puedas avanzar.

    • @cristianmorilla8631
      @cristianmorilla8631 3 роки тому

      @ Muy amable no me gustaría quitarte tempo con eso, retire la nueva parte de datos que tenia y volvio a funcionar pero con una performance baja, cual seria el numero de fotos para un dataset para reconocimiento de gestos de manos

  • @Mikepro2.0
    @Mikepro2.0 4 роки тому

    Hola gracias por el video, cuando ejecuto con mi carpeta custom y config tengo este error.
    Traceback (most recent call last):
    File "train.py", line 160, in
    batch_size=opt.batch_size
    File "/content/drive/My Drive/Yolov3Custom-master/test.py", line 53, in evaluate
    true_positives, pred_scores, pred_labels = [np.concatenate(x, 0) for x in list(zip(*sample_metrics))]
    ValueError: not enough values to unpack (expected 3, got 0)

    •  4 роки тому +1

      Hola Carlo, gracias por escribir
      Ese error es muy común. Sucede cuando en el inicio del entrenamiento el sistema no tiene detecciones positivas con los datos de validación. Una forma de solucionarlo es incrementar el tamaño del dataset, o demorar la evaluación con el parámetro evaluation_interval.

    • @Mikepro2.0
      @Mikepro2.0 4 роки тому

      @ Gracias ya se soluciono

    •  4 роки тому

      Genial!

    • @maribelorozcoalzate9473
      @maribelorozcoalzate9473 4 роки тому +2

      @ Hola soy Maribel, me surgio el mismo error que Carlo, como puedo demorar la evaluación; donde se debe poner el parametro evaluation_interval?

  • @aureliomurillo5058
    @aureliomurillo5058 3 роки тому +1

    Buenas tardes, buen video muy explicativo. yo tuve el error al intentar entrenarlo con un epoch de 50 y un batch de 80.
    Seguí todo paso a paso y no sé cual sea el problema. este es el mensaje de error:
    Traceback (most recent call last):
    File "train.py", line 99, in
    for batch_i, (_, imgs, targets) in enumerate(dataloader):
    File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataloader.py", line 568, in __next__
    return self._process_next_batch(batch)
    File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataloader.py", line 608, in _process_next_batch
    raise batch.exc_type(batch.exc_msg)
    TypeError: Traceback (most recent call last):
    File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/worker.py", line 99, in _worker_loop
    samples = collate_fn([dataset[i] for i in batch_indices])
    File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/worker.py", line 99, in
    samples = collate_fn([dataset[i] for i in batch_indices])
    File "/content/Yolov3Custom/utils/datasets.py", line 130, in __getitem__
    img, targets = horisontal_flip(img, targets)
    File "/content/Yolov3Custom/utils/augmentations.py", line 8, in horisontal_flip
    targets[:, 2] = 1 - targets[:, 2]
    TypeError: 'NoneType' object is not subscriptable

    •  3 роки тому

      Hola Aurelio, gracias por escribir
      He visto antes ese error cuando hay errores en el dataset o en los archivos de anotaciones. Te recomendaría revisar con detalle que el dataset y las anotaciones estén cargadas correctamente.

    • @saimonjt585
      @saimonjt585 2 роки тому

      pudiste solucionarlo?