MxNetによる
ディープラーニングで
セミの抜け殻を識別する
Kichijouji.pm #12
2017.10.20 @dokechin
MxNetとは
• 畳み込みニューラルネットワーク (CNN) や長短期メモリ
ネットワーク (LSTM) といった最先端の深層学習モデル
をサポートする、効率的かつ柔軟で超高度にスケーラブ
ルな深層学習フレームワークです。
• 命令型言語と記号型言語を混在させることができます。
実際、「MXNet」という名前は混在ネットワークという意
味の「mixed networks」に由来します。(出典:https://
aws.amazon.com/jp/mxnet/)
• Perlで使えるAI::MxNet
MNIST
• 28x28ピクセルのグレースケールの手書きの数字(0-9)
画像とラベルデータのデータセット。
• 訓練データ6万、テストデータ1万が提供されている
やったこと
• MNISTを流用して、セミの抜け殻データでセミの識別を
させる!
素のMNIST
MNISTフォーマットのバイナリ
t10k-images.idx3-ubyte
t10k-labels.idx1-ubyte
train-images.idx3-ubyte
train-labels.idx1-ubyte
IO
Symbol
Module
MxNet
MNIST→PNG
MNISTデータ
http://yann.lecun.com/exdb/mnist/
MNIST形式のバイナリをpngファイルへ分割するツール
https://github.com/myleott/mnist_png
python convert_mnist_to_png.py ./ ./
testing
├── 0
│ ├── 10.png
│ ├── 1001.png
│ ├── 1009.png
│ ├── 101.png
│ ├── 1034.png
│ ├── 1047.png
│ ├── 1061.png
…
└── 9
├── 1000.png
├── 1005.png
├── 1013.png
├── 104.png
├── 1045.png
├── 1048.png
├── 105.png
PNG→RecordIO
• perlスクリプトで一覧(ctlファイル)を作成
10 0 ./testing/0/10.png
1001 0 ./testing/0/1001.png
1009 0 ./testing/0/1009.png
1010 ./testing/0/101.png
1034 0 ./testing/0/1034.png
1047 0 ./testing/0/1047.png
1061 0 ./testing/0/1061.png
1084 0 ./testing/0/1084.png
1094 0 ./testing/0/1094.png
• im2recコマンド(MxNet)
im2rec training.ctl ./ training.rec encoding=.png color=0
RecordIOのMNIST
RecordIOフォーマットの
バイナリ
training.rec
testing.rec
IO
Symbol
Module
MxNet
https://github.com/dokechin/mnist_png
抜け殻データを準備
正答率
• 80%程度
今までとこれから
• 蝉の教師がいないと自分で分類できない
• 蝉の種類によってサンプルが集めにくい
• Githubを用いたオープンデータの集約化&利用はいい
感じかも
ソースなどは
• https://github.com/dokechin/cicada_shell

Mxnetによるデープラーニングでセミの抜け殻を識別する