2021.10.15

AIは犬と狼を区別できるのか検証してみました

ソフト開発のnabeです。最近はロボットやAI周りをやっています。

突然ですが、「犬」と「狼」の外見上の違いって説明できますか?人の目から見たらその違いが「なんとなく」分かりますけど、うまく言葉に表せないですよね(そんなことありません?)。というわけで今回は犬と狼の画像を分類するAIを開発してみます。言語化の難しい「なんとなく」を理解して、犬と狼を区別するAIができたらかなり人間に近いのでは!?

目標は下の2枚をきちんと犬か狼か当てれることです。

AIを学習させてみましょう

まずは、犬と狼の画像をいっぱい集めます。AIは始めの状態ではまだ、犬も狼も知らないので、画像を使って「これが犬だよ」「こっちは狼だよ」「これは犬に似てるけど狼だよ」と教えていく必要があります。今回はお試しなので、それぞれ30枚ずつ用意しました。

画像を集めたらそれをAIに教えていきます。この作業をAIの「学習」や「トレーニング」と言ったりします。このとき、学習中のAIの精度の推移を「損失(loss)」という値の変化で確認できます。損失とは簡単に言い換えればAIの「間違え率」です。損失の値が低いほど、精度がよくなっているということですね。

AIに判定させてみましょう

学習が終わったらAIに犬と狼の画像を見せて判定させてみます。今回は簡単に判定結果とAIが何%でそう判断したのかを表示してみました。結果は以下の通りです。(AIが解析しやすくなるよう画像サイズを変更しています)

上の画像を95%で犬と判定、下の画像を69%で狼と判定してくれました。う~ん、正解ですが、狼と判定したときはあまり自信が無い様子・・。

AIをもっと賢くさせるには?

今回は狼の判定力が弱いようでした。AIをもっと賢くするにはどうすれば良いでしょうか。色々な方法があるのですが、例えば「オーグメンテーション」という手法があります。これは学習画像を自動生成させて、AIに教える画像を増やす方法です。AIに学習させる情報を増やすことで、より賢くすることができます。

AIにもいろいろありまして、犬と判断した後に犬が画像のどこにいるのかまで教えてくるAIもあります。機会があれば、そんなAIについて記事を書きたいと思います。ここまで読んでいただきありがとうございました。

投稿者

nabe

主にソフトを担当しています。
最近はpythonを使うことが多いです。