Skip to content

AIによる犬・猫画像の判定プログラム。

Notifications You must be signed in to change notification settings

Minamin1234/AI_DogCat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI_DogCat

~ そこにAIはあるんか? ~

概要

画像と学習モデルを選択するだけで、その画像が犬か猫なのかを判定するプログラム。

動作環境

  1. Python 3.8以上
  2. Python環境上に以下のモジュールが導入されている
    • tensorflow
    • keras
    • numpy
    • pillow(PIL)
    • h5py
  3. .NET Framework 4.7.2の開発環境または、再頒布可能パッケージが利用可能であること
  4. 日本語LanguagePackが利用可能であること

Pythonモジュールについて

前項の2で用いるモジュールについては同梱のpython_setup.batを実行する事でセットアップが可能(試験的)

導入方法

  1. 本レポジトリをクローン または Releaseからzipをダウンロード。(後者の方法が安全)
  2. フォルダを任意の場所に配置。
  3. 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。

制作の流れ

  1. Tensorflow&kerasを使って学習モデルを作成。
  2. 作成したモデルで画像判定が出来るPythonプログラムを作成
  3. GUIの部分をWPF(XAML)とC#で実装。

Tensorflowを使った画像判定のflow

  1. GUI側で学習モデルを読み込む
  2. 同様に画像ファイルも読み込む
  3. GUI側から画像判定のプログラムを起動
  4. プログラムからの判定結果を受け取る
  5. 判定結果をGUIに表示する

AIのライブラリと学習モデル

AIライブラリにはTensorflowとそのフレームワークに含まれるkerasを用いている。
AIへの学習には、犬・猫の画像それぞれ約3000枚を前処理を行った上で学習させている。

画像の収集方法とか

Pythonのモジュールicrawlerを用いて実装した画像収集プログラムで、「猫」「犬」のキーワードでの検索にヒットした画像を収集する。
なお、同様な画像が含まれるがそれは容認する。

そして、明らかに犬・猫に関係のない画像を選定し、さらに選定した画像と一致する画像を取り除く(プログラムで実行)

画像の学習方法など

画像の学習はGoogle Colabや自分のデスクトップPCで行った。
他の開発やゲーム等の為の計算資源が持っていかれるのでGoogle Colabを使うのも手だが、処理速度が遅い。(時間制限もある) Colab側で12時間以上かかる学習が自宅PCだと3~4時間で終わる。
Colab側では画像収集、自宅PCで学習という流れが吉だと思う。

結果

仕組み的な部分では想像通りに出来上がった。だが、判定精度が若干よろしくない印象。それぞれ3000枚の合計6000枚でも足りないという事はないはずだと思う。そうなると、画像の質が悪かったのだろうか。量より質っていうところでしょうか。