Eu baixei o yolo.weights
e yolo.cfg
do site darknet 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 && \
então tentei encontrar flow
:
$ ./flow --model cfg/yolo.cfg --load bin/yolo.weights --demo videofile.avi --gpu 1.0
e eu recebo
$:/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
[ATUALIZAR]
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
O problema era que eu tinha que fazer isso do lado do servidor, então depois de cavar um pouco, a solução mais simples foi usar o addon gcurl do Firefox que imita o comando de download direto:
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
Aliás, não tenho certeza se esses links funcionarão para sempre, após o download, minha pasta bin/
fica assim:
# 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
Os arquivos oficiais do YOLO são sempre renovados à medida que ele experimenta novas configurações, você deve verificar se há .cfg
correspondente liberado. O arquivo weights
que enviei são versões mais antigas e são compatíveis com o .cfg
neste repositório.
@thtrieu obrigado, resolvi enquanto isso usando seus arquivos!
este erro é causado pela incompatibilidade entre o cfg e o arquivo de peso binário. Aqui está o código relacionado que o causa.
No início de flow
, ele primeiro tentará inicializar o TFNet
a partir de cfg
e bin
especificados pelo usuário na linha de comando.
# in darkflow/utils/loader.py
class weights_walker(object):
...
self.size = os.path.getsize(path)
este walker é criado e chamado de função walk
Esta caminhada lerá os pesos do arquivo bin
para cada camada com a quantidade exata de bytes de acordo com o cfg. Antes de realmente lê-lo, ele verifica se os bytes a serem lidos são menores que os bytes restantes no arquivo. Aqui está o código para isso
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)
aqui o end_point
é onde o cursor do descritor de arquivo estaria localizado quando terminar de ler a quantidade necessária do arquivo binário para os pesos da camada atual. O self.size
é o tamanho total do arquivo binário. Você pode ver como a comparação dessas duas variáveis indicará se há um conflito entre o arquivo cfg e o arquivo bin.
Com base nas discussões acima, baixei o arquivo cfg e binário mais recente do site yolov2. No entanto, ainda não funciona e agora tenho certeza do porquê. Espero que eu possa escrever uma história de sucesso mais tarde.
@chadrick-kwag Oi, você resolveu?
@AlexeyAB infelizmente não. Eu tive que mudar para tiny-yolo-voc, que funcionou sem falhas. Meu projeto é simples, então o tiny-yolo também combina comigo. Desculpe lhe dar a má notícia :(
@chadrick-kwag Ok, obrigado. Você usa tiny-yolo-voc de https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU ou de https://pjreddie.com/darknet/yolo/ ?
@AlexeyAB Eu usei o de pjreddie . Para sua informação, estou usando o que baixei há cerca de 6 meses. Espero que ainda funcione.
Alguém tem o link de download direto para o arquivo cfg que corresponde ao arquivo de peso (yolo.weights) do link do Google Drive acima?
@shailensobhee Eu tentei todas as combinações possíveis de yolov2-voc cfg e arquivos de peso entre darkflow e darknet repo. Parece não haver uma única partida.
@thtrieu @AlexeyAB Alguma ideia?
você pode corrigir esse problema alterando o deslocamento no loader.py em seu diretório darkflow.
recomendado diminuir o deslocamento para 16 e depois testar novamente.
GL
Dirigir
Você conseguiu o link? Se não, aqui está o que eu tenho usado: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU
Comentários muito úteis
[ATUALIZAR]
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
O problema era que eu tinha que fazer isso do lado do servidor, então depois de cavar um pouco, a solução mais simples foi usar o addon gcurl do Firefox que imita o comando de download direto:
Aliás, não tenho certeza se esses links funcionarão para sempre, após o download, minha pasta
bin/
fica assim: