Mac OSにmxnet-ssdをインストールして、ディープラーニングに触ってみた

学生の頃によくブログを読んでいたshi3zさんが、いまは人工知能に注力している模様。
下記の記事に触発されて、手元のMBPで試してみました。
http://ch.nicovideo.jp/akiba-cyberspacecowboys/blomaga

環境

最近アップデートしたMacOS Sierraです。

shi3zさんのページではさらっとしか書かれていないのですが、
私のMacは環境とか整っていないので、いろいろと入れるものもありました。

#mac デフォルトのpythonだとうまくいかなかったので、brew でインストールする。
$ brew install python
$ brew linkapps python
$ brew link --overwrite python

#opencv をインストール
$ brew tap homebrew/science
$ brew install openblas
$ brew install opencv --HEAD #いらないのかも
$ brew unlink numpy
$ brew link --overwrite numpy
$ hash -r python

#描画ツールが入ってないと怒られたのでインストール
$ pip install matplotlib

#肝心のmxnet-ssdをclone
$ git clone --recursive https://github.com/zhreshold/mxnet-ssd.git
$ cd mxnet-ssd/mxnet
$ cp make/config.mk ./config.mk

#configを変えないとコンパイルできなかったので、下記のように変更
$ vi config.mk
~
# whether use opencv during compilation
# you can disable it, however, you will not able to use
# imbin iterator
#ココを0に変更
USE_OPENCV = 0

# use openmp for parallelization
#ココも0に変更
USE_OPENMP = 0

# choose the version of blas you want to use
# can be: mkl, blas, atlas, openblas
# in default use atlas for linux while apple for osx
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S), Darwin)
USE_BLAS = apple
#LDパスを指定
ADD_LDFLAGS = -I/usr/local/opt/openblas/lib
ADD_CFLAGS =  -I/usr/local/opt/openblas/include
else
USE_BLAS = atlas
endif
~
#makeする
$ make -j$(sysctl -n hw.ncpu)
#デモを走らせる(cpuオプションをつけないとgpuで処理しようとしてエラーになる)
$ python demo.py --epoch 0 --images ./data/demo/dog.jpg --thresh 0.5 --cpu

息子が公園行った時の写真で試した。

ちゃんと息子は人として、ポニーは馬として認識されました。



新婚旅行で撮った象は残念ながらcowと認識 w


多分色々と学習さえさせれば認識できるようになるんだろうけど、
高スペックなGPU積んだマシンでデータを用意してゴリゴリ学習させるのが一番大変らしい。。


ただ今回試して見て、ちゃんと学習させれば機械が色々なものを認識できるようになるというのは肌で感じ取ることができました。

動物学習データモデル
物体学習データモデル
人間学習データモデル


とかとかいろんな訓練モデルを用意することで、その場に適した使い方ができるようになったりするのでしょうか。
ロボットも近い将来、カセットみたいに知能モデルをガッシャン切り替えられたりして。


まだディープラーニングの畳み込みとか理論的な背景はなんとなくしか理解できていませんが、
遠い昔、学習心理学を専攻していた自分にとって、人工知能は興味の近いところにあってとても面白いです。