Darkflow: AssertionError: Over-read bin/yolo.weights

Creado en 10 abr. 2017  ·  12Comentarios  ·  Fuente: thtrieu/darkflow

He descargado yolo.weights y yolo.cfg del sitio darknet de PJ Reddie:

cd darkflow && mkdir bin && cd bin/ \
wget http://pjreddie.com/media/files/yolo.weights >/dev/null 2>&1 && \
wget http://pjreddie.com/media/files/tiny-yolo-voc.weights >/dev/null 2>&1 && \    

luego trató de encontrarse con flow :

$ ./flow --model cfg/yolo.cfg --load bin/yolo.weights --demo videofile.avi --gpu 1.0

y obtengo

$:/darkflow/darkflow# ./flow --model cfg/yolo.cfg --load bin/yolo.weights --demo videofile.avi --gpu 1.0
Parsing ./cfg/yolo.cfg
Parsing cfg/yolo.cfg
Loading bin/yolo.weights ...
Traceback (most recent call last):
  File "./flow", line 45, in <module>
    tfnet = TFNet(FLAGS)
  File "/darkflow/net/build.py", line 46, in __init__
    darknet = Darknet(FLAGS)
  File "/darkflow/dark/darknet.py", line 27, in __init__
    self.load_weights()
  File "/darkflow/dark/darknet.py", line 82, in load_weights
    wgts_loader = loader.create_loader(*args)
  File "/darkflow/utils/loader.py", line 105, in create_loader
    return load_type(path, cfg)
  File "/darkflow/utils/loader.py", line 19, in __init__
    self.load(*args)
  File "/darkflow/utils/loader.py", line 70, in load
    val = walker.walk(new.wsize[par])
  File "/darkflow/utils/loader.py", line 127, in walk
    'Over-read {}'.format(self.path)
AssertionError: Over-read bin/yolo.weights

Comentario más útil

[ACTUALIZAR]
Parece que los archivos de PJ Reddie no son totalmente compatibles, así que tengo que descargar los pesos preconstruidos del enlace provisto en el LÉAME: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU

El problema era que tenía que hacer esto del lado del servidor, así que después de investigar un poco, la solución más simple fue usar el complemento gcurl de Firefox que imita el comando de descarga directa:

cd darkflow/bin && \
    curl --header 'Host: doc-0k-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-0k-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/etft348j4r0b37n9p1jkokvbfagiimk2/1491782400000/16010642207042931662/*/0B1tW_VtY7onieS0zMzdkSG11OW8?e=download' -o 'tiny-yolo-v1.1.weights' -L && \
    curl --header 'Host: doc-08-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-08-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/s29gvf1n83pqr37pk2l7t2cvcjnssd8s/1491782400000/16010642207042931662/*/0B1tW_VtY7oniTjM3YUxlRHpDVW8?e=download' -o 'tiny-yolo-voc.weights' -L && \
    curl --header 'Host: doc-10-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-10-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/fmtsb8ruqk7a4tg5p98khj6qp4fq3p6i/1491782400000/16010642207042931662/*/0B1tW_VtY7onicFlqclhnRGlodGM?e=download' -o 'yolo-full.weights' -L && \
    curl --header 'Host: doc-0k-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-0k-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/knshmif3mk3n4ogtq9p77nf2f5v3dr0d/1491782400000/16010642207042931662/*/0B1tW_VtY7onibmdQWE1zVERxcjQ?e=download' -o 'yolo-tiny.weights' -L && \
    curl --header 'Host: doc-0c-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-0c-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/ggut18kr6ubhoc8btg5hf6f32stoh50n/1491782400000/16010642207042931662/*/0B1tW_VtY7oniZGlkLTh5YVl1WWs?e=download' -o 'yolo.weights' -L

Por cierto, no estoy seguro de si esos enlaces funcionarán para siempre, después de la descarga, mi carpeta bin/ se ve así:

# cd darkflow/bin/
# ls -lh
total 1.6G
-rw-r--r-- 1 root root 104M Apr 10 00:20 tiny-yolo-v1.1.weights
-rw-r--r-- 1 root root  61M Apr 10 00:20 tiny-yolo-voc.weights
-rw-r--r-- 1 root root 1.1G Apr 10 00:20 yolo-full.weights
-rw-r--r-- 1 root root 173M Apr 10 00:21 yolo-tiny.weights
-rw-r--r-- 1 root root 258M Apr 10 00:21 yolo.weights

Todos 12 comentarios

[ACTUALIZAR]
Parece que los archivos de PJ Reddie no son totalmente compatibles, así que tengo que descargar los pesos preconstruidos del enlace provisto en el LÉAME: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU

El problema era que tenía que hacer esto del lado del servidor, así que después de investigar un poco, la solución más simple fue usar el complemento gcurl de Firefox que imita el comando de descarga directa:

cd darkflow/bin && \
    curl --header 'Host: doc-0k-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-0k-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/etft348j4r0b37n9p1jkokvbfagiimk2/1491782400000/16010642207042931662/*/0B1tW_VtY7onieS0zMzdkSG11OW8?e=download' -o 'tiny-yolo-v1.1.weights' -L && \
    curl --header 'Host: doc-08-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-08-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/s29gvf1n83pqr37pk2l7t2cvcjnssd8s/1491782400000/16010642207042931662/*/0B1tW_VtY7oniTjM3YUxlRHpDVW8?e=download' -o 'tiny-yolo-voc.weights' -L && \
    curl --header 'Host: doc-10-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-10-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/fmtsb8ruqk7a4tg5p98khj6qp4fq3p6i/1491782400000/16010642207042931662/*/0B1tW_VtY7onicFlqclhnRGlodGM?e=download' -o 'yolo-full.weights' -L && \
    curl --header 'Host: doc-0k-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-0k-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/knshmif3mk3n4ogtq9p77nf2f5v3dr0d/1491782400000/16010642207042931662/*/0B1tW_VtY7onibmdQWE1zVERxcjQ?e=download' -o 'yolo-tiny.weights' -L && \
    curl --header 'Host: doc-0c-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-0c-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/ggut18kr6ubhoc8btg5hf6f32stoh50n/1491782400000/16010642207042931662/*/0B1tW_VtY7oniZGlkLTh5YVl1WWs?e=download' -o 'yolo.weights' -L

Por cierto, no estoy seguro de si esos enlaces funcionarán para siempre, después de la descarga, mi carpeta bin/ se ve así:

# cd darkflow/bin/
# ls -lh
total 1.6G
-rw-r--r-- 1 root root 104M Apr 10 00:20 tiny-yolo-v1.1.weights
-rw-r--r-- 1 root root  61M Apr 10 00:20 tiny-yolo-voc.weights
-rw-r--r-- 1 root root 1.1G Apr 10 00:20 yolo-full.weights
-rw-r--r-- 1 root root 173M Apr 10 00:21 yolo-tiny.weights
-rw-r--r-- 1 root root 258M Apr 10 00:21 yolo.weights

Los archivos en YOLO oficial siempre se renuevan a medida que experimenta nuevas configuraciones, debe verificar si hay .cfg correspondientes liberados. El archivo weights que cargué son versiones anteriores y es compatible con el .cfg de este repositorio.

@thtrieu gracias, ¡lo resolví mientras tanto usando tus archivos!

este error es causado por la discrepancia entre el cfg y el archivo de peso binario. Aquí está el código relacionado que lo causa.
Al comienzo de flow , primero intentará inicializar TFNet desde los cfg y bin especificados por el usuario en la línea de comando.

# in darkflow/utils/loader.py

class weights_walker(object):
  ...
  self.size = os.path.getsize(path)

este caminante se crea y se llama función walk
Este recorrido leerá los pesos del archivo bin para cada capa con la cantidad exacta de bytes según el cfg. Antes de leerlo, verifica si los bytes para leer son menores que los bytes restantes en el archivo. Aquí está el código para eso

    def walk(self, size):

        if self.eof: return None
        end_point = self.offset + 4 * size

        assert end_point <= self.size, \
        'Over-read {}'.format(self.path)

aquí el end_point es donde se ubicaría el cursor del descriptor de archivo cuando termine de leer la cantidad requerida del archivo binario para los pesos de la capa actual. El self.size es el tamaño total del archivo binario. Puede ver cómo la comparación de estas dos variables indicará si hay un conflicto entre el archivo cfg y bin.

Basado en las discusiones anteriores, descargué el archivo cfg y binario más reciente del sitio web yolov2. Sin embargo, todavía no funciona y ahora estoy seguro de por qué. Espero poder escribir una historia exitosa más adelante.

@chadrick-kwag Hola, ¿lo resolviste?

@AlexeyAB desafortunadamente no. Tuve que cambiar a tiny-yolo-voc que funcionó sin problemas. Mi proyecto es simple, así que tiny-yolo también me queda bien. Siento darte las malas noticias :(

@AlexeyAB Usé el de pjreddie. Para su información, estoy usando el que descargué hace unos 6 meses. Espero que todavía funcione.

¿Alguien tiene el enlace de descarga directa al archivo cfg que corresponde al archivo de peso (yolo.weights) del enlace de Google Drive anterior?

@shailensobhee Probé todas las combinaciones posibles de yolov2-voc cfg y archivos de peso entre darkflow y darknet repo. Parece que no hay una coincidencia única.

@thtrieu @AlexeyAB ¿ Alguna idea?

puede solucionar este problema cambiando el desplazamiento en loader.py en su directorio darkflow.
recomienda disminuir el desplazamiento a 16 y luego probar de nuevo.
GL

Conducir

¿Conseguiste el enlace? Si no, esto es lo que he estado usando: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU

¿Fue útil esta página
0 / 5 - 0 calificaciones