DarknetをWindowsで使ってみる


Darknetとは何ぞやについてはいろいろなサイトで紹介されてるので、そっちをご参照ください。

これは、ディープラーニングのフレームワークの1つで、このモデルでリアルタイム物体検出などができます(リアルタイムはGPUがあればの話ですけど)。

Darknet:Open Source Neural Networks in C の公式サイト

開発者の公式サイト?Joseph Chet Redmon

なんだか闇サイトや神秘主義を連想させるロゴですが、内容はいたってマトモです(^^)。

まあ、この方のネーミングセンスはどれもこんな感じなんで、そういう方なんでしょう。


準備した環境

Windows 7 (64bit)……まだ使ってます(^^)

Visual Studio 2017 Community

2015 を使うのが本筋のようだけどMicrosoftの公式サイトにはもうないです、Dev Essentialsに参加すればProducts->Downloadsの中にありますが、延々とLoadingが続いてばかりだったので面倒になって止めました。

Darknet(GitHub)

OpenCV 3.0.0

CUDAも用意しといてね、ということだけど我PCにはGPUなどという立派なものは積んでないのでここではパス。


前準備

Visual Studio 2017 Community

をインストールしたら、もう一度Visual Studio installerを起動して変更をかけます。対象はビルドツールセットです。現行のDarknetではv140のツールセットを使ってますが、VS 2017はv141です。

「C++によるデスクトップ開発」を選んで、v140ツールセットにチェックを入れて変更を実行します。

 


コンパイル準備

VS2017を起動して、ビルドをRelease x64にしておきます。

ファイル->開く->プロジェクト/ソリューションで、darknet-masterの中のbuild/darknet/daknet_no_gpu.slnを選びます。

プロジェクトのプロパティ

VC++ディレクトリ

インクルードディレクトリにOpenCVのbuild/includeをフルパスで追加

ライブラリディレクトリにOpenCVのbuild/x64/vc12/libをフルパスで追加


コンパイル実行

ビルドメニュからdarknet_no_gpuのビルドを実行

これでdaknet-master/build/darknet/x64の中にdarknet_no_gpu.exeが作成されます。


試してみる

Darknetには学習済のweightsデータが用意されています。

このyolo.weightsをダウンロードしてdarknet-master/build/darknet/x64にコピー。

検出テストをしてみましょう。

DOSプロンプトを開いて、darknet-master/build/darknet/x64に移動。

darknet-master/build/darknet/x64/dataフォルダーに動物のJPG画像(例:animals.jpg)を入れてテストしてみます。

以下のコマンドを実行。

GPUを使っていない分、2~3秒くらいかかって認識されます。

確からしさはこんな感じです。

 

 

選手もボールも検出されています、後は顔認識があればね。

ラズベリーパイ3で顔認識

WisteriaHillでは2010年ころにOpenCV2.0を使ってサッカーボールの検出なんてことやってました。ハールトレーニングをやってカスケードファイルを作って….云々。OpenCV 覚書

もう必要ないですなぁ。


GPUがあると仮定して……

CUDA 8.0 + cuDNNでやってみました。難しくはありませんが、とっても面倒でした。

NVIDIAの公式ぺーじには、CUDA 8.0はもうないので探さなきゃいけなかったですし。

でコンパイルは通りましたが、darknet.exeを実行するとドライバーが無いのでinsuffientで

途中エラーで落ちます。

GPU欲しい。CPUのみの環境だとトレーニングに恐ろしく時間がかかるようで。

 

サーバーが過負荷になるようですので、CUDA,cuDNNファイルの直ダウンロードはしばらくお休みします。

ダウンロード先を再設定したら、また復活します。

 


Movidius NCSについて

WisteriaHillではAIの最終ターゲットのプラットフォームイメージはスタンドアローンのポータブルデバイスです(A.I. in my pocket)。

WisteriaHillではMovidius NCSでやってみます。これはTensorFlowやCaffeのモデルを実行できる専用プロセッサーを搭載したUSBタイプのデバイスです。

最近はAmazonでも扱ってて10000円ちょいくらいです。

秋月電子で買った方が安いです(2017/12/16)。

Raspberry Piがインストールターゲットになっている例をよくみますが、さてどうしよう?シングルボード・コンピュータは他にもあるしなぁ。これにはジャイロと加速度計とGPSも欲しいです。

 

 

DraknetのモデルをTensorFlow用に変換するやり方については、この方のブログを参照。

Draknetのモデル->TensorFlow変換ライブラリ

TensorFlowをMovidius NCSで使う方法はSWITCHSCIENCEの記事を参照

 

Caffeについてはこの方のブログが参考になります

Caffeの場合の変換ライブラリはここを参照


Next

トレーニングを開始する前に、データを準備しておきます。

OpenCV 覚書でハールトレーニングをやる前に矩形座標取得(haartraining用)でやったような、ジミーに画像からデータを取得するようなやつです。今回のデータはもっと複雑ですがツールを使ってやってみましょう。

 


参考資料

いろんなNeural Networkについての説明の中で、以下の電子書籍が一番分かりやすかったです。

Neural Networkの理解に数学は避けて通れない(避けると、ますます分からなくなります)が、この説明は理解しやすいです。

ニューラルネットワークと深層学習

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*