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
という名前で結果画像が保存されています。
こんな感じ。良い感じに認識してくれています
さて、ここでいつものリファレンス画像を使用してみたいと思います。ロンスタ(id:lonestartx)さん。いつもフリー素材提供ありがとうございます!
おお!ちゃんと人として判断されている!障子じゃなかった!
darknetによる画像生成
DeepDreamみたいな画像生成もできるみたいです。以前Raspberry PiでやったDeepDreamの記事は以下参照下さい。
まずは以下で画像生成用のニューラルネットをダウンロード
$ wget http://pjreddie.com/media/files/vgg-conv.weights
まずはサンプル画像でテスト。
こんなのね
以下実行するだけ
$ ./darknet nightmare cfg/vgg-conv.cfg vgg-conv.weights data/scream.jpg 10
待つこと10分程度、なんかキモいのできた
ヤバい!
じゃあこちらのフリー素材はどうなるかな?と試してみたら…
使用前
使用後
やばい!!ヤバすぎる!!!Darknetヤバい!
Raspberry Pi 3でDarknet
Raspberry Pi 3ではどうかなーと思って試してみました。使用するコマンドはMacと全く同じです。画像認識の方は、普通に実行したらメモリが足りないのかニューラルネットを読み込むことすらできず途中で強制終了してしまいました。なのでtiny modelというニューラルネットもあったのでそちらを試したのですが、こちらはニューラルネットを読み込んだ後にあえなくSegmentation fault. 仕方なく画像を120x90程度に縮小すると…5分程度待つと一応処理完了しました!ただ縮小しすぎたせいか何も認識できませんでした…残念。
画像生成の方も同様に120x90程度に縮小すると実行することに成功しました!縮小したのが聞いたのか1枚10分程度で生成できました!ヤバいぜDarknet!ただ、画像縮小しすぎてるせいなのかちょいイマイチですね。
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開発者トークへのリンクを追記