プログラミング初心者の雑記帳など

2024年5月14日火曜日

AI

 識別(分類)を行うAIです。
 画像認識で強みを持つCNN(畳み込みニューラルネットワーク)による識別を行えます。

ソースコードはこちらに置いておきます。
説明はコメントアウトで記載してあります。引用元明記のうえご自由に改変して使ってください。

プログラムの詳細

AI_learn.pyは学習用のプログラム、AI_test.pyは検証用データに対する評価用プログラムになります。ディレクトリ構成は以下のように想定してありますが必要に応じて変えてください。

このClassディレクトリに分類したい画像データをそれぞれ入れておけば最低限の分類はできるよう設定してます。精度を上げたり誤差を下げたいときはAI_learn.pyの
・model.compile()の引数をいろいろ変更する。
・学習データを増やす。
・ニューラルネットワークの層を変化させる
上記の操作をするとよくなります。

例えばepock(一度に学習するデータ数)やfilter(CNNで用いるデータ抽出のフィルタ)の値を変える、model.compile()の引数であるlearning_rate(学習率,学習するときのノードの重み)やweight_decay(学習率の低下率)を調整する、model.add()でニューラルネットワークの中間層を追加または削除したりすると精度が変化すると思います。

実行すると以下のようなグラフが出力されます。


AI_test.pyでは分類結果の混合行列を以下のようなヒートマップに出力するようにしてあります。使っているデータセットはkaggleのFruits-360というものです。ただし、ファイル数をすべて合わせないときれいにならないので、邪魔だと感じたらコメントアウトしたり削除してお使いください。


*注意*

 AIの使用において最も注意すべきことは、AIは絶対の正解を導くものではないことです。言い換えれば「もっとも正解の可能性が高いもの」を求めているだけです。 ですからこのAIがどんなに高い精度で識別・分類してももそれはあくまで近似解(それっぽいもの)であり、絶対の正解(確実なもの)ではありません。
 どんなAIを使う場合も同じです。近年話題のChat-GPTを代表とする文章生成AIやStabledDiffusionのような画像生成AIでも間違い(ハルシネーション)は起こります。出力を鵜呑みにしてそのまま使ってもそれが正しいとは限りません。必ず外部の情報を参照し、自分の頭で考えて判断をしてください。
 AIは道具です。最後に決めるのは自分であり、その責任も自分にあることを忘れないでください。

0 件のコメント:

コメントを投稿