機械学習及び深層学習(ディープラーニング)の基礎について学び、実験として2種類の犬種を判別する装置をプログラム(python)で試作しました。
使用した画像は以下から引用しました。
柴犬のウィキペディア
https://ja.wikipedia.org/wiki/%E6%9F%B4%E7%8A%AC
(アメリカン)ブルドックのウィキペディア
https://djanimateurfinistere.com/wiki/American_Bulldog
#仕様
プログラム言語:python
開発環境:google colaboratory
##colaboratoryについて
googleが無料で提供している(グレードアップ有料)ブラウザ上のpython開発環境です。
人工知能の研究者・学生向けに作られており、AIを製作するためのライブラリが
標準実装されています。AIプログラム製作に非常に便利
必要なのは、googleアカウントだけ!
#プログラム作成手順概要
機械学習とは・・・機械が自動でデータからパターンを見つけ出し、未知のデータに対しても
対応できるようにすること。
今回の場合、柴犬とブルドックの画像をたくさん覚えさせしっかり復習を行い、まだ見たことない画像に
対しても答えを導きだせるようにプログラムしました。
使用した画像データ
https://www.robots.ox.ac.uk/~vgg/data/pets/
英国のオックスフォード大学が提供している犬猫の画像データから、必要なものを使用しました。
①用意した画像データの適切な処理、分類を行う。
②①の処理を施した画像データを専用のアルゴリズムで機械に覚えさせる(パターンを自動で取得できるようにプログラムする)。
③判定(テスト)行う。(上で実験済)
以上が機械学習の大まかな流れです。
#①データの前処理
https://opencv.org/
機械が画像を覚えられやすいように「opencv」というライブラリで画像の前処理を
行います。
opencv・・・Intelが開発した画像処理オープンソースライブラリ
opencvを使うことで、画像認識のひとつである2値化処理(物体を2種類の色に分け、それぞれの比率から画像判定をする処理)も簡単に行うことができます。
#②学習
①の画像データを用い、深層学習を行います。
使用する主なライブラリは2点、
tensorflow・・・googleが開発した機械学習専用のオープンソースライブラリ
世界で最も普及している機械学習のライブラリ
keras・・・機械学習のためのプログラムコードを簡易的に扱うことができるオープンソースラ
イブラリ、専門的な数式なしでAIを実装することができます。
以下のコードは製作したプログラムのうちの一部です。
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same',
input_shape=X_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(label_num))
model.add(Activation('softmax'))
sgd = optimizers.SGD(lr=LEARNING_RATE)
model.compile(loss='categorical_crossentropy',
optimizer='SGD',
metrics=['accuracy'])
kerasを使用することで、このような短いコードだけで機械に対して画像を覚えさせることが
できます。
#まとめ
今回製作したプログラムは、費用かけず無料で製作しました。
判別した犬種は2種類ですが、プログラムを改良することで判定種類を増やすことができます。
使用したプログラム言語はpythonですが、flaskなどのwebサーバフレームワークを用いることで多言語で製作したツールとの連携も可能です。