Webアプリ開発-モデル構築編-
・・・ちょっと酔ってます。
ブログ書いている途中に寝落ちしてしまった(_ _).。o○
今日やったこと
- FlickrAPIを使った画像データの自動取得
- VGG16をファインチューニングさせた深層学習モデルの構築
- Djangoサーバを起動し実行テスト
FlickrAPIを使った画像データの自動取得
今回のWebアプリは、多クラス分類を行う。分類対象であるクラスは「grape」「blueberry」「blackberry」の3種類。それぞれの学習データは、FlickrAPIを使ってスクレイピングのような自動取得をする。参考文献【1】は、コマンド引数を1つ指定して検索ワードして検索していました。しかし、FlickrAPIによる自動取得は全く関係のない画像も取得してくる。検索対象を絞り込むため空白を用いて検索対象を絞り込みたかった。なので自分のプログラムではコマンド引数を複数にして、空白を挟んだ検索を可能にしました。ソースコードはGitHubを使えるようになったら見れるようするう。
VGG16をファインチューニングさせた深層学習モデルの構築
モデルのファインチューニングでも学習に時間がかかるので、GPUが無料で使えるGoogleColaboratoryを使用した。colaboratoryにあるtensorflow(tf)のバージョンは1.15.0なので、一旦tfをuninstallして2.0.0を再インストールした。
CNNにおける上位層は、どの画像にも同様な処理(エッジ検出など)が行われている。層が深くなるにつれ対象とする特有のパターンを検出する。よって、最終層に近い畳み込み層のパラメータだけを更新し、浅い層の共通処理は変えない。
train_dataのaccuracyは約93%,validation_dataのaccuracyは約88%となった。genratorは未使用なので精度向上は見込める。
Djangoを起動し実行テスト
ここが本当に苦労した。。。webアプリ画面(index.html)の実行結果↓
url.pyのPATHの指定も独特で、path(""...)のようにクォーテーションの中に何もないとhttp://127.0.0.1:8000/で'...'に書かれたアプリ用ディレクトリのurlpatternsにあるviews.pyにアクセスしてるっぽい。コマンド上のエラーログを見る限りviews.pyまでは通っているものの、templatesフォルダからhtmlファイルを読み出せていない様子。
サーバ起動中は、ファイルが編集されるたびに更新される仕様みたい。
わかったこと
参考サイトの記述ミスとかライブラリのバージョンに振り回されながらエラーを修正して行く過程で、Djangoのリクエストに対するアプリ内のルーティングやそれぞれのpythonファイルの役割が理解できた。
アプリの作り方は、一気に全てを完成させて動作テストや結合テストをするのではなく、早い段階から都度確認するほうがスムーズに開発が進むと感じた。
いろいろなサイトを参考にしてるうち、qiitaに開発の流れ・githubにソースコードを載せておきたいと思った。(もしかしたら誰かの参考になるかも?)
参考文献
【2】Djangoで機械学習アプリケーション ~Webアプリ作成~ - Qiita
【3】【Tensorflow・VGG16】転移学習による画像分類 - Qiita