こんにちは、ヨウハ(@Yo_u_ha22)です。
以前書いたのですが、最近プログラミングを始めました。
前回の記事↓
色々種類があるプログラミング言語の中から私が選んだのはPythonです。
Pythonは応用できる範囲が広く、最近話題のAI、ディープラーニングといった最新の技術にも盛んに使用されています。
今回は、せっかくPythonを勉強しているのでディープラーニングがどのようなものか実際に触れてみるために簡単なプログラムに挑戦しました。
事前勉強
まず、現在の私のプログラミングレベルは、約三週間前からPythonを触っている超初心者です。
今回ディープラーニングを体験するための準備として、Aidemyというプログラミング学習サービスでディープラーニングに関する無料講座をいくつか受講しました。
かなり専門的な単語などが飛び交うため、こういった事前学習は必須であると思いました。
ディープラーニング以外にもPythonの基礎なども無料で受講できるのでこれからPythonに触れる人にもオススメできます。
作りたいもの
今回私が作るのは、ヒョウモントカゲモドキ(レオパ)というヤモリのモルフ(品種)を見分けるAIです。
レオパのモルフは数え切れないほど種類がありますが、網羅するのはデータ集め的にも到底無理なので今回はハイイエロー、アルビノ、スーパーマックスノーという3種類に絞ったプログラムにします。
上手くいけば更にモルフを増やして試してみたいと思っています。
画像収集
次に必要なのが画像収集です。
スクレイビングで何千枚と画像を集めている記事も多いですが、今回はお試しということで数十枚手作業で集めました。
訓練用画像30枚、検証用画像10枚、テスト用画像10枚を各3種類分集めました。
実装してみる
今回はGoogle Colaboratoryというクラウド環境を使用していきます。
自分のパソコンで環境構築するのは初心者には中々大変で、コードを書くところにすらたどり着けない可能性もあります(私は辿りつけなかった)
また、ディープラーニングはCPUまたはGPUを使って処理を行いますが、かなり時間がかかりスペックも求められるので初心者が個人で楽しむならこういったサービスを利用するのが一番だと思います。
次にディープラーニングモデルの構築ですが、0から作るとなるとかなり大量の画像と時間が必要となるため、転移学習という手法を使うことにします。
今回はVGG16という学習済みモデルを使用します。
それでは実際のソースコードがこちらです。












こんな感じになります。
ソースコードなどは以下の記事をかなり参考にさせて頂きました。
大変分かりやすい記事でとても助かりました。
VGG16を転移学習させて「まどか☆マギカ」のキャラを見分ける
この記事のままだと私の画像データでは精度が出なかったため、訓練用画像の前処理の追加、OptimizerをSGDからAdamに変更、損失関数をreluからsigmoidに変更など色々試してます。
結果としては精度70%ぐらいに落ちつきました。
画像の背景などがばらばらな状態でこの精度なことを考えると、真っ白の背景に対象物だけという画像を集めることができればかなり高い精度で判定できるのではないかと思います。
今回はお試しということで特に実用性などはありませんが、そのうちディープラーニングを使ったアプリでも作れればいいなと考えております。