PythonとStreamlitで駅ブログ用画像分類アプリを作りました

Webサイト運営

前回の記事で、キカガク社の講座受講の成果物として、Pythonで画像分類の機械学習モデルを作っている話をご紹介しました。このたび、ある程度完成しましたので、どんなことをしたかご紹介します。

動作スクリーンショット

まずはアプリの動作は見ていただいた方がわかりやすいと思いますので、スクリーンショットで動作をご紹介します。なお、一般公開はしておりませんので悪しからず。

起動するとフォルダを指定する画面となっています。ここでローカルや外付けHDDのフォルダを指定します。ここで「OK」を押すと、画像分類のモデルが起動し、画像を5種類(駅舎・改札口・プラットホーム・駅名看板・駅前の様子)に分類します。

分類結果が画像カテゴリ別に表示されます。誤って分類されていた時のために、手動で変更できるようにもしています。

「次へ」を押すと画像カテゴリ別にブログで紹介する順番を指定するよう求められます。使わない画像は「使わない」を選んで、除外することもできます。プルダウンで数字を指定すると即時で画像が並び変わります。

最後に、「次へ」を押すとブログ用に画像の縮小と連番付与(XX駅01.jpg)が行われて、ログが画面表示されます。

アウトプットフォルダを見ると、縮小画像が出力されているので、Wordpressでの執筆がスムーズに行えるようになっています。

裏で使っている技術

前回の記事でも一部ご紹介しましたが、フロントエンドはPythonで簡単にWebアプリが作れるStreamlit、機械学習モデルは「microsoft/swin-base-patch4-window7-224」を使用しています。(前回紹介時点ではgoogle/vit-base-patch16-224-in21kと書きましたが、変更しました。)

機械学習モデルの構築方法

せっかくキカガク社の講座で機械学習モデルを学んだので、その内容をベースにPythonでサンプルコードをコピペしながら作りました。とはいえ、特に変わったことはしておらず、前処理→パラメーター指定→学習→モデルの評価というような手順で行いました。
自宅のPCだと機械学習に適したGPUがないので、Google Colaboratoryの環境上で無料のGPUを借りて推論しました。

苦労したポイント

①分類精度の向上

やはり最初はテストしても分類精度が60%程度しか出ず、苦労しました。そこで、いろいろ調べて機械学習モデルを前述のMS製モデルに変えたところ、一気に80%程度まで向上しました。さらにカテゴリ間で枚数に偏りがあったため、増やしたり減らしたりしながら学習の精度を向上させて、最終的には88%程度まで向上させることができました。

②学習に時間がかかる

普通のPCだとCPUはこだわるものの、GPUはゲーミング用でもない限りこだわらないかと思います。まして機械学習に最適化されたものではないので、Google Colaboratoryの環境で実行することにしました。それでも一回学習・テストするだけで30分はかかり、苦労しました。もちろん課金すればもっと性能の高いGPUを借りられるのですが、無課金で通しました。最初はエポック数(学習回数)を30回でやっていましたが、精度が途中で頭打ちになっていたため、10回まで減らして時間短縮を図りました。

③アプリの動作高速化

学習は時間がかかっても問題ありませんが、実際のアプリは速い動作が求められます。何も工夫しないと最初の画面表示まで15秒くらい待たされる状態だったので、高速化を図りました。というのもStreamlitの仕様上、モジュールのインポート文を冒頭に書くと、最初に読み込まれてしまうようで、それに時間を要していました。そこで、必要なタイミングになって初めて読み込むようにして、少し待ち時間を緩和させました。また進捗率のバーも表示させて待たされるストレスを和らげました。

今後やりたいこと

①本文の生成

今回は対象外としましたが、実際にはこのあと画像にキャプション文を付けてブログ本文を構成しています。それらを自動生成できるようにできれば大幅な工数削減になるので、挑戦していきたいと思います。ただ、それには「私っぽい文体」や「画像に写っている内容の把握・文章化」が必要なので、ハードルは高そうです。

②Wordpressへの自動投稿

WordPressには投稿用APIがあるそうなので、それを叩いて画像ファイルを渡せば、投稿の自動化もできるような感じです。投稿アプリに発展させていきたいとも考えています。

というわけで今回、Pythonの応用とアプリ開発、機械学習と幅広い分野を学びました。難しく成長著しい分野でもありますが、他人の作ったモデルを簡単に使用できるようにもなりつつあります。ぜひ一般公開されている成果物を取り入れて、自分の糧にしていきたいと思いました。

おすすめ参考書籍

コメント

タイトルとURLをコピーしました