43411


環境 linux mint18 mate

darknetでyolov3  
識別した範囲の画像をキャプチャーしたいのですが、  
以前に端末からではなく、pythonから呼び出せば可能だと聞きました。

どの様にして呼び出すのでしょうか？


CC BY-SA 3.0
2018-04-18T07:18:17.950
43352
2018-04-20T22:50:51.110
2018-04-19T19:49:50.370
19110
28217
question
python python3
python3からdarknet [yolov3]呼び出し


2018年4月20日現在、Python 2 だと
[`python/darknet.py`](https://github.com/pjreddie/darknet/blob/508381b37fe75e0e1a01bcb2941cb0b31eb0e4c9/python/darknet.py)
を使えば識別が可能です。ただし以下の変更が必要でした。

  1. [チュートリアル](https://pjreddie.com/darknet/yolo/)に従って、目的に合った訓練済み重みファイルをダウンロードしておく。
  2. 適当な場所からシンボリックリンクを張るなどして、`libdarknet.so` が見えるようにする。
  3. そのままだと `tiny-yolo.cfg` を読みにいくので、ここを yolov3 に変える。

また、Python 3 でも更に以下の変更を行うと動くことを確認しました。

  1. `print r` を `print(r)` にする。つまり `2to3 -w ./python/darknet.py` 相当のことをする。
  2. 文字列の型が変わった関係でファイル名の部分をバイト列にしないと動かないので、すべて `.encode('ascii')` をつける ([参考](https://stackoverflow.com/a/7258112/5989200))。

このサンプルプログラムでは最終的に `r` へ識別結果が入っているため、その後に何か処理したい場合はこの `r` を元に行うことになります。

※ darknet のリポジトリ内容は時折破壊的に変わるため、この方法が将来的にも使えるとは限りません。使えなかった場合、darknet の issue
トラッカーを見るなどして、まずはサンプル・プログラムがあるか確認するのが良いと思います。


CC BY-SA 3.0
2018-04-19T20:40:01.973
43411
2018-04-20T22:50:51.110
2018-04-20T22:50:51.110
19110
19110
43352
answer