Darkflow: Erro de declaração: yolo.weights lido em excesso

Criado em 28 mar. 2017  ·  35Comentários  ·  Fonte: thtrieu/darkflow

Eu tentei executar ./flow --test test/ --model cfg/yolo.cfg --load yolo.weights --gpu 1.0

Recebo carregando yolo.weights .... e, em seguida, erro de afirmação: Over-read yolo.weights.

No entanto, quando executo o mesmo comando com tiny-yolo.cfg e tiny-yolo.weights, ele funciona. Baixei o arquivo de pesos de https://pjreddie.com/darknet/yolo/

Comentários muito úteis

@Dhruv-Mohan @kinhunt veja o README atualizado,

Todos 35 comentários

eu acho que você usou pesos errados, não combinou com cfg. eu tentei com yolo.cfg & yolo.weights funcionou bem.
no entanto, quando treino yolo-voc.cfg com classe personalizada, recebo a mesma mensagem de erro com meus pesos treinados. Eu apreciaria se alguém pudesse explicar o que esse erro significa.

O analisador .weights segue .cfg camada por camada, lendo o bloco de bytes correspondente de .weights , mas ainda há camada para ler enquanto o analisador já atingiu o final de .weights ; é quando você tem o erro de afirmação.

Por favor, dê o comando que leva a este erro. Se você quiser personalizar sua classe, existem alguns lugares para fazer modificações:

  1. Número de filtros na última camada conv em .cfg
  2. class número na camada region
  3. labels.txt

Então corra

./flow --model cfg/model.cfg --load bin/model.weights --train

Tente treinar sua rede do zero, os pesos mais recentes https://pjreddie.com/darknet/yolo/ não parecem se alinhar com o arquivo cfg.
Eu me deparei com o mesmo problema com yolo.weights e yolo-voc.weights, no entanto, os pesos da minha rede treinada personalizada funcionam bem

Você poderia fornecer instruções para treinar usando o arquivo yolo.cfg. Obrigado

Na quarta-feira, 29 de março de 2017 às 12h20, Dhruv-Mohan [email protected]
escreveu:

Tente treinar sua rede do zero, os pesos mais recentes
https://pjreddie.com/darknet/yolo/ não alinhe com o arquivo cfg.
Eu me deparei com o mesmo problema com yolo.weights e yolo-voc.weights,
no entanto, os pesos da minha rede treinada personalizada funcionam bem


Você está recebendo isso porque foi o autor do tópico.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/thtrieu/darkflow/issues/107#issuecomment-289999490 ,
ou silenciar o thread
https://github.com/notifications/unsubscribe-auth/AZgJMHWUgCDnwlS_s1HY5RcBNrVSAWusks5rqf9CgaJpZM4Mrj84
.

mesmo problema. use a instrução leia-me com os pesos yolo.cfg e v2 de http://pjreddie.com/media/files/yolo-voc.weights

@kinhunt yolo.cfg e yolo-voc.weights não correspondem. Mesmo o novo yolo.weights não corresponde a yolo.cfg , parece que o site oficial do YOLO não mantém seus arquivos de forma confiável.

@thtrieu obrigado por limpar. você sabe onde encontrar os arquivos correspondentes?

@kinhunt eu

Eu posso carregar o meu. Aguarde ~ 24 horas.

@thtrieu boas notícias. obrigada

@Dhruv-Mohan @kinhunt veja o README atualizado,

entendi obrigado. funciona

@thtrieu você poderia fornecer as etapas seguidas para treinarj no conjunto de dados coco para gerar o arquivo yolo.weights. Eu gostaria de repetir o mesmo e gerar arquivo de pesos para yolov2 no conjunto de dados de coco.

Olá @thtrieu ,
Eu segui as etapas que você mencionou para treinar novamente o modelo com um número personalizado de classes

[convolucional]
tamanho=1
passo=1
pad=1
filtros=30
ativação=linear

[região]
âncoras = 1,08,1,19, 3,42,4,41, 6,63,11,38, 9,42,5,11, 16,62,10,52
bias_match=1
aulas=1
coordenadas=4
num=5

Eu também tenho apenas um rótulo em label.txt. Mas quando eu executo isso com o arquivo de pesos minúsculos que baixei do seu compartilhamento do google [ https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU tiny-yolo-voc.weights], ele falha com erro de afirmação

AssertionError: espere 63082056 bytes, encontrado 63471556

Você pode me ajudar a entender o que pode estar errado aqui.

Eu tive um problema semelhante com um peso previamente treinado da darknet, copiei o mesmo arquivo .cfg com o peso para experimentá-lo no darkflow e obtive:
AssertionError: expect 202314760 bytes, found 202314764
Ele difere apenas em 4 bytes, então estou perdendo algumas configurações?

@deng1028 você já resolveu seu problema? Eu tenho o mesmo problema.

@helloGitHub1993 você já resolveu seu problema? Eu tenho o mesmo problema.

@helloGitHub1993 vá para loader.py na pasta utils e altere self.offset = 20 na linha 121

@beerboaa eu usei de outra maneira. flow -model cfg/yolo-new.cfg(substitua-o pelo seu cfg de treinamento) --load -1 --imgdir yourimgdir. Funciona para mim e você pode tentar. A propósito, você não precisa treinar novamente.

@itsayush você já resolveu seu problema? Também segui os mesmos passos que você e tenho o mesmo problema com o treinamento de dados personalizados (1 aula). Tentei alterar self.offset = 1 em loader.py, não funcionou.
Meu comando:
flow --train --model cfg/tiny-yolo-voc-1c.cfg --load bin/tiny-yolo-voc.weights --annotation train/Annotations/ --dataset train/Images/ --config cfg/ - -gpu 0,9
Mas funciona bem com:
flow --imgdir sample_img/ --model cfg/tiny-yolo-voc.cfg --load bin/tiny-yolo-voc.weights --gpu 0.9
AssertionError: espere 63471541 bytes, encontrado 63471556

Alguém pode me ajudar?

Eu tenho o mesmo problema usando o código deste git https://github.com/bendidi/Tracking-with-darkflow com tiny-yolo

@hyperfraise
image
Também estou com o mesmo problema, vocês resolvem?

enfrentando o mesmo problema. tentei usar pesos do seu google drive com o .cfg correspondente, funcionou até tentar mudar o número de classes para 1 (=> filtros na última camada = 30). Ainda existe a chance de treinar em um número personalizado de aulas com modelo pré-treinado?

Eu tive o mesmo problema quando treinei Yolo com meu próprio conjunto de dados personalizado do site do pjreddie e tentei executar o arquivo .weights resultante usando o darkflow. Eu tive o problema de "Erro de afirmação: espere 268283952 bytes, encontrado 268283956". Depois de alterar self.offset = 20 na linha 121 em loader.py na pasta utils como @beerboaa disse, funciona bem. Obrigado.

@MartinBrisiak onde você conseguiu o .cfg correspondente?

não importa, eu o tenho rodando em um ambiente com o yolo.weights de @thtrieu e o yolo.cfg neste repositório
algo de errado com o outro ambiente...

@helloGitHub1993 vá para loader.py na pasta utils e altere self.offset = 20 na linha 121

sim, funciona muito obrigado

@beerboaa Obrigado mahn.. funcionou

Parece que os arquivos PJ Reddie não são totalmente compatíveis, então eu tenho que baixar os pesos pré-construídos no link fornecido no README: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU

Parece que os arquivos PJ Reddie não são totalmente compatíveis, então eu tenho que baixar os pesos pré-construídos no link fornecido no README: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU

onde encontrar yolov2-voc.weights? está faltando... alguma ideia?

existe mix com 2 problemas diferentes, o primeiro se for diferente do arquivo de peso existente e a configuração de exatamente 4 bytes neste caso você precisa alterar o offset na linha 121 para 20 (no meu caso está trabalhando com yolov2) no segundo caso se o diferente for maior que 4 bytes, isso é arquivo de configuração errado para arquivo de peso OU caso você queira treinar seus próprios objetos certifique-se que yolov2-voc.cfg existe na pasta de configuração, eu anexei aquele que resolve o problema
cfg-yolov2-voc.zip

Eu tive o mesmo problema quando treinei Yolo com meu próprio conjunto de dados personalizado do site do pjreddie e tentei executar o arquivo .weights resultante usando o darkflow. Eu tive o problema de "Erro de afirmação: espere 268283952 bytes, encontrado 268283956". Depois de alterar self.offset = 20 na linha 121 em loader.py na pasta utils como @beerboaa disse, funciona bem. Obrigado.

para mim não funciona, alguma outra idéia? :(

Oi,
Finalmente consegui fazê-lo funcionar usando este arquivo .cfg https://github.com/pjreddie/darknet/blob/master/cfg/yolov2.cfg
e funciona com o peso "yolov2 608X608" daqui: https://pjreddie.com/darknet/yolo/

Para lidar com o erro

AssertionError: espere 64701556 bytes, encontrado 180357512

apenas corra

$ cd /content/darkflow
$ !sed -i "s/self.offset = 16/self.offset = 20/g"  ./darkflow/utils/loader.py

Em relação ao erro de asserção, provavelmente é devido à incompatibilidade do arquivo de configuração e dos pesos.

Então, eu encontrei um hack em torno dele. Use este caderno de Zoltan Szabo
O autor fornece uma demonstração para apenas 2 aulas. Então, seu arquivo cfg tem 2 classes e usa os pesos yolov2-tiny-voc-10000, encontrados aqui .
Mas o modelo real (v2-tiny) foi treinado em 20 aulas. Portanto, para gerar um arquivo pb para o modelo real, use o arquivo de configuração real do modelo, mantido por pJreddie em
https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolov2-tiny-voc.cfg "

e substitua o arquivo cfg original por este. Deixe os pesos permanecerem os mesmos.

Agora, a alteração final que você deve fazer é no arquivo de texto que contém os nomes das classes. Para isso, acesse o arquivo de nomes de classes mantido por pj reddie e cole-os no arquivo de texto presente em /content/darkflow/labels.txt (no Google Collab).

Agora basta executar o comando que você estava executando
!./flow --model cfg/yolo-v2-tiny.cfg --load weights/yolov2-tiny-voc_10000.weights --savepb

E você deve obter o arquivo protobuf desejado :yum:

Esta página foi útil?
0 / 5 - 0 avaliações