Darknetという人工知能が超簡単で凄いと聞いたので試したら大変なことになった

f:id:karaage:20161007234606p:plain:w640

Darknetをインストール

 id:shi3z さんが、下記のブログ記事でまた何やら面白そうなものを紹介なさっていました。

http://ch.nicovideo.jp/akiba-cyberspacecowboys/blomaga/ar1116319

 その名もDarknet!名前からしてヤバそうな匂いがプンプンしますw 記事でも解説していますが、インストールはターミナルでコマンドさえうてれば簡単にできます。自分の環境だと、MacでもRaspberry Piでもインストールできました。

 準備は以下3行コピペするだけ。

$ git clone https://github.com/pjreddie/darknet.git
$ cd darknet
$ make

 あとは以下実行して

$ ./darknet

 以下のような表示が出ればインストールは(一応)成功

usage: ./darknet <function>

darknetを使ってみた

 せっかくなので、チュートリアルに沿って物体認識と画像生成の2つを試して見ることにしました。以下はMacで試した例です。記事の最後におまけでRaspberry Pi 3で試した例も紹介します。以下のコマンドはすべてdarknetのディレクトリ内で実行して下さい。上記のインストール完了したらそのままコマンド実行すれば大丈夫です。

darknetによる物体認識

 まずはニューラルネットを以下コマンドでダウンロードします。

$ wget http://pjreddie.com/media/files/yolo.weights

 あとは、サンプル画像で試してみます

$ ./darknet yolo test cfg/yolo.cfg yolo.weights data/dog.jpg

 実行するとずらずらメッセージが出て結果が表示されます。Mac book Pro Retina(2012年モデル) で10秒程度で結果が出ました。

Loading weights from yolo.weights...Done!
data/dog.jpg: Predicted in 6.291042 seconds.
car: 74%
bicycle: 39%
dog: 26%

 同じディレクトリに、prediction.jpgという名前で結果画像が保存されています。

f:id:karaage:20161006221942p:plain:w640
 こんな感じ。良い感じに認識してくれています

 さて、ここでいつものリファレンス画像を使用してみたいと思います。ロンスタ(id:lonestartx)さん。いつもフリー素材提供ありがとうございます!

f:id:karaage:20161007233056p:plain:w480
 おお!ちゃんと人として判断されている!障子じゃなかった!

darknetによる画像生成

 DeepDreamみたいな画像生成もできるみたいです。以前Raspberry PiでやったDeepDreamの記事は以下参照下さい。

 まずは以下で画像生成用のニューラルネットをダウンロード

$ wget http://pjreddie.com/media/files/vgg-conv.weights

 まずはサンプル画像でテスト。

f:id:karaage:20161006222357j:plain:w480
 こんなのね

 以下実行するだけ

$ ./darknet nightmare cfg/vgg-conv.cfg vgg-conv.weights data/scream.jpg 10

 待つこと10分程度、なんかキモいのできた f:id:karaage:20161008010400p:plain:w480
 ヤバい!

 じゃあこちらのフリー素材はどうなるかな?と試してみたら…

f:id:karaage:20160709132426j:plain:w640
 使用前

f:id:karaage:20161007234606p:plain:w640
 使用後

 やばい!!ヤバすぎる!!!Darknetヤバい!

Raspberry Pi 3でDarknet

 Raspberry Pi 3ではどうかなーと思って試してみました。使用するコマンドはMacと全く同じです。画像認識の方は、普通に実行したらメモリが足りないのかニューラルネットを読み込むことすらできず途中で強制終了してしまいました。なのでtiny modelというニューラルネットもあったのでそちらを試したのですが、こちらはニューラルネットを読み込んだ後にあえなくSegmentation fault. 仕方なく画像を120x90程度に縮小すると…5分程度待つと一応処理完了しました!ただ縮小しすぎたせいか何も認識できませんでした…残念。

 画像生成の方も同様に120x90程度に縮小すると実行することに成功しました!縮小したのが聞いたのか1枚10分程度で生成できました!ヤバいぜDarknet!ただ、画像縮小しすぎてるせいなのかちょいイマイチですね。

f:id:karaage:20161008010205p:plain:w640
 Raspberry PiでDarknetを実行した図

まとめ

 お手軽人工知能Darknetを試してみました。インストールが手軽な上に、多くの人がすぐ試したそうな画像認識とかDeepDreamもどきがすぐ試せるのが非常によいですね。今回試した認識や画像生成以外にも、AlphaGoみたいに囲碁をしたり(DarkGoというらしいw)。リアルタイムに物体検出できたりと色々できそうです。

 Cで書かれているみたいだし、Raspberry Pi 3でもサクッと動いたら最高だなとほんのちょっとだけ期待して動かしたのですが、やはりRaspberry Pi 3には荷が重く実用には厳しい感じでした。しかし、以前Raspberry PiにDeep Dream入れたときは地獄だったので、3行のコマンドでDeepDream的なことができるのは素晴らしいなと思いました。

 しかし、この世界はどんどん凄いものが次から次へと出てきますね。これだともう自分みたいな凡人はついていくのは諦めて、口を開けて待っていた方がよさそうだなとか思ってしまいます。

 そんなDarknetを試したくなった方は以下リンクからどうぞ。

参考リンク

ジョセフ・レドモン: コンピューターはいかに物体を即座に認識できるようになったのか | TED Talk
 Darknet開発者のTEDトーク(日本語)。ターミナル画面カッコ良すぎでしょ…

関連記事

変更履歴

  • 2017/09/05 参考リンクにTEDのDarknet開発者トークへのリンクを追記