~ そこにAIはあるんか? ~
画像と学習モデルを選択するだけで、その画像が犬か猫なのかを判定するプログラム。
- Python 3.8以上
- Python環境上に以下のモジュールが導入されている
- tensorflow
- keras
- numpy
- pillow(PIL)
- h5py
- .NET Framework 4.7.2の開発環境または、再頒布可能パッケージが利用可能であること
- 日本語LanguagePackが利用可能であること
前項の2で用いるモジュールについては同梱のpython_setup.bat
を実行する事でセットアップが可能(試験的)
- 本レポジトリをクローン または Releaseからzipをダウンロード。(後者の方法が安全)
- フォルダを任意の場所に配置。
python_setup.bat
を実行。
※インストーラも含まれるがそちらの方は上手くいかない。
AI_CatDog/AI_CatDog.exe
を起動します。
Visual Studioでプロジェクトからデバッグ用に起動する事を推奨します。
-
判定する画像を選択
D&Dで読み込む またはPicture:
の...
をクリックして画像ファイル.jpg
を選択 -
判定に用いるモデルを選択
D&Dで読み込む またはModel:
の...
をクリックして.h5
ファイルを選択
大学の研究室での研究テーマとしてAIをつかったソフトウェアやサービスが挙がっていたので、経験として軽くAIに触れてみたいと思ったため。
PythonやC#の軽い復習として。
統合開発環境のVisual Studio 2022やエディタのVSCodeの両方。
Pythonは3.8.5で、仮想環境上(venv)でも同様のバージョンで構築している。
.NET Frameworkは4.7.2。
- Tensorflow&kerasを使って学習モデルを作成。
- 作成したモデルで画像判定が出来るPythonプログラムを作成
- GUIの部分をWPF(XAML)とC#で実装。
- GUI側で学習モデルを読み込む
- 同様に画像ファイルも読み込む
- GUI側から画像判定のプログラムを起動
- プログラムからの判定結果を受け取る
- 判定結果をGUIに表示する
AIライブラリにはTensorflowとそのフレームワークに含まれるkerasを用いている。
AIへの学習には、犬・猫の画像それぞれ約3000枚を前処理を行った上で学習させている。
Pythonのモジュールicrawlerを用いて実装した画像収集プログラムで、「猫」「犬」のキーワードでの検索にヒットした画像を収集する。
なお、同様な画像が含まれるがそれは容認する。
そして、明らかに犬・猫に関係のない画像を選定し、さらに選定した画像と一致する画像を取り除く(プログラムで実行)
画像の学習はGoogle Colabや自分のデスクトップPCで行った。
他の開発やゲーム等の為の計算資源が持っていかれるのでGoogle Colabを使うのも手だが、処理速度が遅い。(時間制限もある)
Colab側で12時間以上かかる学習が自宅PCだと3~4時間で終わる。
Colab側では画像収集、自宅PCで学習という流れが吉だと思う。
仕組み的な部分では想像通りに出来上がった。だが、判定精度が若干よろしくない印象。それぞれ3000枚の合計6000枚でも足りないという事はないはずだと思う。そうなると、画像の質が悪かったのだろうか。量より質っていうところでしょうか。