Yolo, Darknetを用いたリアルタイム物体検出(QuickStart用リポジトリ作成)
リアルタイムに物体検出したくなった
カメラに映っている内容から、任意のアクションをフックするようなシステムを構築したく調査してみた
その際、公式のDarknetでは素直にリアルタイム検出ができず後述する諸問題がでてきたため、修正版のdarknetとしてリポジトリをフォークした
問題点のメモとしてこの記事にまとめておく。
成果物
フォークしたDarknetがこちら
下記のページから、いつもありがたく使わせてもらっています
みんなにOSSを見てもらいたい人の為に、GitHubリポジトリのOGP的画像を自動生成してくれるサービスを作った
つまづいた内容
Githubに行ったけど、何をしていいかわからない問題
下記がdarknetのgithubだが、READMEがさらっとしか書いていなかった...
https://github.com/pjreddie/darknet
また、別サイトのリンクもあるが、こちらにもpythonという文字列が見つからず。
pythonで動かしたい場合の方法が一切わからない状況だった
ソースそのままじゃうごかない問題
下記のpython用のコードを見つけて実行してみるとまぁまぁエラーが出る
https://github.com/pjreddie/darknet/blob/master/python/darknet.py
python3じゃ動かないぜ?のエラー
python2系の表記やないですか(絶望
(py) $python python/darknet.py
File "python/darknet.py", line 154
print r
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(r)?
下記のように修正し解決
print(r)
libdarknetないで?のエラー
これはdarknetをビルドすることで解決
方法はインストールディレクトリでmakeってするだけ
OSError: dlopen(libdarknet.so, 10): image not found
型おかしいで?のエラー
Cのコードにpythonの文字列を渡してあげるときに、b"文字列"って書くとのこと
エラー内容: 「ctypes.ArgumentError: argument 1: : wrong type」
参考: https://github.com/pjreddie/darknet/issues/241
そんな設定ファイルないで?のエラー
Couldn't open file: cfg/tiny-yolo.cfg
とりま新しげなやつも同じディレクトリにあるので、下記のファイルに変更した(適当
cfg/yolov3-tiny.cfg
重みないよ?のエラー
Loading weights from tiny-yolo.weights...Couldn't open file: tiny-yolo.weights
下記コマンドで(cfgに併せて適当なものを)取得して解決
wget https://pjreddie.com/media/files/yolov3-tiny.weights
上記により、画像一枚分の物体検出が可能
しかし、リアルタイムに物体検出がしたい
そのままのDarknetでは、OpenCVから取得したリアルタイム画像を扱うことができない。
下記のIssueにて回避策も提示されているが、darknetのソースに修正を加えるもののため面倒
https://github.com/pjreddie/darknet/issues/289
上記までの課題部分を解決し、すぐにdarknetを試せるようFixしたDarknetを下記の通り公開中(2回目)
上記で述べた問題点を改修して、READMEにQuick Start方法を記載してあります。
Author And Source
この問題について(Yolo, Darknetを用いたリアルタイム物体検出(QuickStart用リポジトリ作成)), 我々は、より多くの情報をここで見つけました https://qiita.com/iaoiui/items/dd83e570e63b07706874著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .