PJ Reddieダークネットサイトからyolo.weights
とyolo.cfg
をダウンロードしました。
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 && \
その後、 flow
に遭遇しようとしました:
$ ./flow --model cfg/yolo.cfg --load bin/yolo.weights --demo videofile.avi --gpu 1.0
そして私は得る
$:/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
[アップデート]
PJ Reddieファイルは完全に互換性がないようです。そのため、READMEの提供されたリンクからビルド済みのウェイトをダウンロードする必要があります: https ://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU
問題は、このサーバー側で実行する必要があることでした。少し掘り下げた後、最も簡単な解決策は、直接ダウンロードコマンドを模倣するFirefoxアドオンgcurlを使用することでした。
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
ところで、これらのリンクが永久に機能するかどうかはわかりません。ダウンロード後、 bin/
フォルダは次のようになります。
# 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
公式のYOLOのファイルは、彼が新しい構成を実験するときに常に更新されます。対応する.cfg
がリリースされているかどうかを確認する必要があります。 アップロードしたweights
ファイルは古いバージョンであり、このリポジトリの.cfg
と互換性があります。
@thtrieuありがとう、私はあなたのファイルを使用してその間に解決しました!
このエラーは、cfgとバイナリウェイトファイルの不一致が原因で発生します。 これが原因の関連コードです。
flow
の先頭で、最初に、コマンドラインでユーザーが指定した指定のcfg
とbin
TFNet
を初期化しようとします。
# in darkflow/utils/loader.py
class weights_walker(object):
...
self.size = os.path.getsize(path)
このウォーカーが作成され、関数walk
と呼ばれます
このウォークでは、各レイヤーのbin
ファイルから、cfgに従って正確なバイト数で重みを読み取ります。 実際に読み取る前に、読み取るバイトがファイル内の残りのバイトよりも少ないかどうかをチェックします。 これがそのためのコードです
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)
ここで、 end_point
は、現在のレイヤーの重みに対してバイナリファイルから必要な量を読み取り終えたときにファイル記述子カーソルが配置される場所です。 self.size
は、バイナリファイルの合計サイズです。 これら2つの変数を比較すると、cfgファイルとbinファイルの間に競合があるかどうかがどのように示されるかがわかります。
上記の説明に基づいて、yolov2Webサイトから最新のcfgとバイナリファイルをダウンロードしました。 しかし、それでも機能せず、その理由がわかりました。 後で成功した話を書き留められることを願っています。
@ chadrick-kwagこんにちは、あなたはそれを解決しましたか?
@AlexeyAB残念ながらありません。 グリッチなしで機能するtiny-yolo-vocに切り替える必要がありました。 私のプロジェクトはシンプルなので小さいです-yoloも私に合っています。 悪い知らせをお伝えして申し訳ありません:(
@ chadrick-kwagわかりましたありがとう。 https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEUまたはhttps://pjreddie.com/darknet/yolo/のtiny-yolo-vocを使用していますか?
@AlexeyAB私はpjreddieのものを使用しました。 参考までに、約6か月前にダウンロードしたものを使用しています。 私はそれがまだ機能することを願っています。
上記のGoogleドライブリンクからのウェイトファイル(yolo.weights)に対応するcfgファイルへの直接ダウンロードリンクを持っている人はいますか?
@shailensobhee darkflowとdarknetリポジトリの間で、yolov2-voccfgとウェイトファイルの可能なすべての組み合わせを試しました。 単一の一致はないようです。
@thtrieu @AlexeyAB何かアイデアはありますか?
この問題は、darkflowディレクトリのloader.pyのオフセットを変更することで修正できます。
オフセットを16に減らしてから、もう一度テストすることをお勧めします。
GL
ドライブ
リンクを取得しましたか? そうでない場合は、これが私が使用しているものです: https ://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU
最も参考になるコメント
[アップデート]
PJ Reddieファイルは完全に互換性がないようです。そのため、READMEの提供されたリンクからビルド済みのウェイトをダウンロードする必要があります: https ://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU
問題は、このサーバー側で実行する必要があることでした。少し掘り下げた後、最も簡単な解決策は、直接ダウンロードコマンドを模倣するFirefoxアドオンgcurlを使用することでした。
ところで、これらのリンクが永久に機能するかどうかはわかりません。ダウンロード後、
bin/
フォルダは次のようになります。