以前、動物画像を分類するLINEアカウントを作った。
https://new.kumahiyo.com/ai/animal-classification-cnn/

しかし、羊の判別が上手くいかなかった。
恐らく学習画像の枚数が比較的少なかったために、羊の特徴を捉えることができなかったのだと思われる。
そこで今度は、学習画像が少なくても上手く判別できるという、Zero-Shot Learningという方法を学習に採用してみた。

例えば、人は「馬」のことを学習すると、「シマウマ」を見た時に何の動物かはわからないが、
馬の仲間かもしれない。と、馬とシマウマを関連付けることができ、そこから推測することができる。
しかし、先日作った分類モデルではその関連付けができないために、「羊のような画像」を見ても、
学習したものと一致するものでなければ、それを「羊かもしれない」と推測することはできない。

Zero-Shot Learningは、学習時に「羊」という情報を、次元と大きさをもったベクトルとして学習する。
そうすることで「羊」という情報に広がりを持つことができ、「羊のような画像」を見た時に、
学習したものと一致するものではないが、羊の情報付近に位置するから「羊かもしれない」と推測するようになる。

この方法であれば、羊の学習画像が多くなくても上手く判別できるようになるとのことで、早速試してみた。

その結果、今まで判別できなかった羊の画像を、ほぼほぼ上手く判別できるようになった。

(その後)ラクダとオオカミの学習

実装後、ラクダやオオカミの画像を見せた時に、羊や犬と間違えるケースが発生。
そこでこれらの動物も判別するようプログラムを変更、さらに分類できる動物が増えた。

Contact
AI に関するお問い合わせは、当サイトのContactページのフォームよりお問い合わせください。