GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

Russell91

TensorBox – TensorFlowでのオブジェクト検出

投稿日:

TensorFlowでのオブジェクト検出

現在は推奨されておらず、Tensorflow 1.1または1.2でのみ動作します

TensorBoxは、ニューラルネットワークをトレーニングして画像内のオブジェクトを検出するプロジェクトです。 トレーニングには、イメージのリストと各イメージの境界ボックスを含むjsonファイル( ここでは例)が必要です。 基本モデルは、簡単で堅牢なGoogLeNet-OverFeatアルゴリズムを実装しています。

OverFeatのインストールとトレーニング

まず、 ソースまたはpipからTensorFlowをインストールします(NB:ソースは現在1.2のスレッドを中断してインストールします)

$ git clone http://github.com/russell91/tensorbox
$ cd tensorbox
$ ./download_data.sh
$ cd /path/to/tensorbox/utils && make && cd ..
$ python train.py --hypes hypes/overfeat_rezoom.json --gpu 0 --logdir output
$ #see evaluation instructions below

独自のデータセットで実行するには、 hypes/overfeat_rezoom.jsonファイルを変更する必要があります。

あなた自身のデータのトレーニング

TensorBoxは、バウンディングボックスの説明(idl、json、…)のいくつかのデータ形式をサポートしています。 データセットを作成する最も簡単な方法は、jsonファイルの記述です。 make_json.pyスクリプトを使用してmake_json.pyすることも、他の注釈記述をjsonに変換することもできます。 ここではファイル形式について説明します

これで、ハイフファイルで画像の入力サイズを変更できるようになりました。 それが複数の32であることを確認してください。また、いくつかの実験的でないモデルが最近追加されました。

ReInspectのインストールとトレーニング

最初にCaffeで実装されたReInspectは、
TensorflowのOverfeat-GoogLeNetへのニューラルネットワーク拡張です。
これは、重なり合うインスタンスが重なっている画像で高性能のオブジェクト検出を行うように設計されています。
詳細やデモンストレーションのビデオ は論文を参照してください。

 # REQUIRES TENSORFLOW VERSION >= 1.2     
 $ git clone http://github.com/russell91/tensorbox     
 $ cd tensorbox        
 $ ./download_data.sh      
       
 $ # Download the cudnn version used by your tensorflow verion and         
 $ # put the libcudnn*.so files on your LD_LIBRARY_PATH e.g.       
 $ cp /path/to/appropriate/cudnn/lib64/* /usr/local/cuda/lib64     
   
 $ cd /path/to/tensorbox/utils && make && make hungarian && cd ..      
 $ python train.py --hypes hypes/lstm_rezoom.json --gpu 0 --logdir output      
 $ #see evaluation instructions below

評価

Pythonスクリプト

次の手順は、私の実験の後にtest.pyがどのように使用されるかを示しています。必要に応じてパスを変更する必要があります:

$ # kill training script if you don't have a spare GPU
$ cd /path/to/tensorbox
$ python evaluate.py --weights output/overfeat_rezoom_2017_01_17_15.20/save.ckpt-130000 --test_boxes data/brainwash/val_boxes.json
$ # val_boxes should contain the list of images you want to output boxes on, and
$ # the annotated boxes for each image if you want to generate a precision recall curve
$ cd ./output/overfeat_rezoom_2017_01_17_15.20/images_val_boxes_130000/
$ ls # ... notice the images with predicted boxes painted on, and the results saved in results.png
$ python -m SimpleHTTPServer 8080 # set up a image server to view the images from your browser
$ ssh myserver -N -L localhost:8080:localhost:8080 # set up an ssh tunnel to your server (skip if running locally)
$ # open firefox and visit localhost:8080 to view images

微調整

まともな結果が得られ、パフォーマンスを向上させたい場合は、試してみることができることがたくさんあります。 ハイパーパラメータの最適化のために、学習率、脱落率、およびパラメータの初期化は、開始するのに最適な場所です。 神経ネットのデバッグに関するより一般的なチュートリアルについては、このブログ記事をお読みください。 私たちは最近、大規模なボックスで少し良く機能するはずのresnetバージョンも追加しました(このレポは歴史的に元の研究目的のポートではなかったので、これらはほとんど役に立たなかった)。 あなたが箱の大きさに大きな変化があるならば、lstmにoverfeatバージョンを使うことをお勧めします。

テンソルボード

Tensorboardを使用してトレーニング中の実験の進行状況を視覚化することができます。

$ cd /path/to/tensorbox
$ tensorboard --logdir output
$ # (optional, start an ssh tunnel if not experimenting locally)
$ ssh myserver -N -L localhost:6006:localhost:6006
$ # open localhost:6006 in your browser

たとえば、次の2つの異なる実験を異なるポイントで開始する学習速度減衰と比較したテンソルボードのスクリーンショットです。 緑の実験では60kの反復で、赤の実験では300kの反復で学習率が半減します。

引用


@article{stewart2016tensorbox,
  Author = {Stewart, Russell},
  Title = {TensorBox: A Fast Object Detection Framework in TensorFlow},
  Year = {2016}
}

コミュニティ

オブジェクト検出が初めてで、同様の問題を抱えている他の人とチャットしたい場合は、特に土曜日にhttps://gitter.im/Russell91/TensorBoxでコミュニティチャットをチェックしてください







-Russell91

執筆者: