J'ai téléchargé les yolo.weights
et yolo.cfg
du site 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 && \
puis essayé de tomber sur flow
:
$ ./flow --model cfg/yolo.cfg --load bin/yolo.weights --demo videofile.avi --gpu 1.0
et je reçois
$:/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
[METTRE À JOUR]
Il semble que les fichiers PJ Reddie ne soient pas entièrement compatibles, je dois donc télécharger les poids pré-construits à partir du lien fourni dans le README : https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU
Le problème était que je devais faire cela côté serveur, donc après avoir creusé un peu, la solution la plus simple était d'utiliser l'addon Firefox gcurl qui imitait la commande de téléchargement direct :
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
Au fait, je ne sais pas si ces liens fonctionneront pour toujours, après le téléchargement, mon dossier bin/
ressemble à :
# 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
Les fichiers sur YOLO officiel sont toujours renouvelés au fur et à mesure qu'il expérimente de nouvelles configurations, vous devez vérifier s'il y a .cfg
correspondant publié. Les fichiers weights
que j'ai téléchargés sont des versions plus anciennes et sont compatibles avec les .cfg
de ce dépôt.
@thtrieu merci, j'ai résolu entre-temps grâce à vos fichiers !
cette erreur est causée par la non-concordance entre le cfg et le fichier de poids binaire. Voici le code associé qui le provoque.
Au début de flow
, il essaiera d'abord d'initialiser le TFNet
partir des cfg
et bin
spécifiés par l'utilisateur dans la ligne de commande.
# in darkflow/utils/loader.py
class weights_walker(object):
...
self.size = os.path.getsize(path)
ce marcheur est créé et appelé fonction walk
Cette promenade lira les poids du fichier bin
pour chaque couche avec le nombre exact d'octets selon le cfg. Avant de le lire, il vérifie si le nombre d'octets à lire est inférieur au nombre d'octets restants dans le fichier. Voici le code pour cela
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)
ici, le end_point
est l'endroit où se trouverait le curseur du descripteur de fichier lorsqu'il aurait fini de lire la quantité requise dans le fichier binaire pour les poids de la couche actuelle. Le self.size
est la taille totale du fichier binaire. Vous pouvez voir comment la comparaison de ces deux variables indiquera s'il y a un conflit entre le fichier cfg et bin.
Sur la base des discussions ci-dessus, j'ai téléchargé le dernier fichier cfg et binaire sur le site Web yolov2. Cependant, cela ne fonctionne toujours pas et je sais maintenant pourquoi. J'espère pouvoir écrire une histoire réussie plus tard.
@chadrick-kwag Bonjour, avez-vous résolu le problème ?
@AlexeyAB malheureusement non. Je devais simplement passer à tiny-yolo-voc qui fonctionnait sans problème. Mon projet est simple donc tiny-yolo me convient aussi. Désolé de vous annoncer la mauvaise nouvelle :(
@chadrick-kwag Ok merci. Utilisez-vous tiny-yolo-voc de https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU ou de https://pjreddie.com/darknet/yolo/ ?
@AlexeyAB J'ai utilisé celui de pjreddie. Pour votre information, j'utilise celui que j'ai téléchargé il y a environ 6 mois. J'espère que ça marche encore.
Quelqu'un a-t-il le lien de téléchargement direct vers le fichier cfg qui correspond au fichier de poids (yolo.weights) à partir du lien Google Drive ci-dessus ?
@shailensobhee J'ai essayé toutes les combinaisons possibles de yolov2-voc cfg et de fichiers de poids entre darkflow et darknet repo. Il semble qu'il n'y ait pas de match unique.
@thtrieu @AlexeyAB Une idée ?
vous pouvez résoudre ce problème en modifiant le décalage dans loader.py dans votre répertoire darkflow.
recommandé de réduire le décalage à 16, puis de tester à nouveau.
GL
Conduire
Avez-vous obtenu le lien? Sinon, voici ce que j'ai utilisé : https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU
Commentaire le plus utile
[METTRE À JOUR]
Il semble que les fichiers PJ Reddie ne soient pas entièrement compatibles, je dois donc télécharger les poids pré-construits à partir du lien fourni dans le README : https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU
Le problème était que je devais faire cela côté serveur, donc après avoir creusé un peu, la solution la plus simple était d'utiliser l'addon Firefox gcurl qui imitait la commande de téléchargement direct :
Au fait, je ne sais pas si ces liens fonctionneront pour toujours, après le téléchargement, mon dossier
bin/
ressemble à :