事業内容
- DX推進/IoT開発事業
- AI/ROBOTICS開発事業
ソフト開発担当です。最近はロボットやAI周りをやっています。
突然ですが、「犬」と「狼」の外見上の違いって説明できますか?人の目から見たらその違いが「なんとなく」分かりますけど、うまく言葉に表せないですよね(そんなことありません?)。というわけで今回は犬と狼の画像を分類するAIを開発してみます。言語化の難しい「なんとなく」を理解して、犬と狼を区別するAIができたらかなり人間に近いのでは!?
目標は下の2枚をきちんと犬か狼か当てられることです。
まずは、犬と狼の画像をいっぱい集めます。AIは始めの状態ではまだ、犬も狼も知らないので、画像を使って「これが犬だよ」「こっちは狼だよ」「これは犬に似てるけど狼だよ」と教えていく必要があります。今回はお試しなので、それぞれ30枚ずつ用意しました。
画像を集めたらそれをAIに教えていきます。この作業をAIの「学習」や「トレーニング」と言ったりします。このとき、学習中のAIの精度の推移を「損失(loss)」という値の変化で確認できます。損失とは簡単に言い換えればAIの「間違え率」です。損失の値が低いほど、精度がよくなっているということですね。
学習が終わったらAIに犬と狼の画像を見せて判定させてみます。今回は簡単に判定結果とAIが何%でそう判断したのかを表示してみました。結果は以下の通りです。(AIが解析しやすくなるよう画像サイズを変更しています)
上の画像を95%で犬と判定、下の画像を69%で狼と判定してくれました。う~ん、正解ですが、狼と判定したときはあまり自信が無い様子・・。
今回は狼の判定力が弱いようでした。AIをもっと賢くするにはどうすれば良いでしょうか。色々な方法があるのですが、例えば「オーグメンテーション」という手法があります。これは学習画像を自動生成させて、AIに教える画像を増やす方法です。AIに学習させる情報を増やすことで、より賢くすることができます。
AIにもいろいろありまして、犬と判断した後に犬が画像のどこにいるのかまで教えてくるAIもあります。機会があれば、そんなAIについて記事を書きたいと思います。ここまで読んでいただきありがとうございました。
ソフトウェアエンジニア。
組み込み系からデスクトップアプリ、Web開発まで幅広く対応してます。