先日、ネコ判別器の作り方を紹介致しました。前回は、画像がネコかイヌかを当てるものでしたが、今回は、ネコの品種を識別する機械学習モデルを作ってみました。さっそく我が家の4ニャンズに使ってみました!
ボクは純血のアメショーだからアメショーに決まってるニャ(エヘン)
アタシは何に分類されるかしら?
ザ・茶トラのボクに何か秘密でも?
ボク、実は…黙っていたけど…
ネコ判別器の学習データ
VGGで有名なオックスフォード大学Visual Geometry Group のネコの品種12種それぞれ200データ合計2400の公開データを利用しました(https://www.robots.ox.ac.uk/~vgg/data/pets/)
前回ネコ判別器を作ったのと同様、Kaggleにデータがあるので、ダウンロードして使いました。https://www.kaggle.com/datasets/zippyz/cats-and-dogs-breeds-classification-oxford-dataset
品種名 | データ数 |
アビシニアン | 200 |
ベンガル | 200 |
バーマン | 200 |
ボンベイ | 200 |
ブリティッシュショートヘア | 200 |
エジプシャンマウ | 200 |
メインクーン | 200 |
ペルシャ | 200 |
ラグドール | 200 |
ロシアンブルー | 200 |
シャム | 200 |
スフィンクス | 200 |
合計 | 2400 |
12種類というのは少ないかもしれませんね。また1品種につき200データというのも、画像学習においては少ない部類です。
KaggleにはPetFinderというサイトから収集したデータセットもあります。(https://www.kaggle.com/code/amanymounas/cats-breeds-dataset/data)こちらの方が品種が充実していそうでしたが、データの確認が大変だと思ったため、今回はオックスフォード大学のデータセットを使わせて頂きました!
GoogleColabでEfficientNetモデルで分類器を作成
前回のコード(【ネコと機械学習2】Pytorchを使ったネコ判別器の作り方)を活用し、GoogleColabolatoryでPytorchのものと、EfficientNetB7でネコの品種12種類を識別するモデルを作成しました。実装したコードについては別の記事で書きたいと思います!今回は作ったモデルの性能と、我が家の4ニャンズに使ってみた結果を紹介します!
ネコ分類器の精度(Accuracy)はおよそ80%
今回のネコ分類器は80%程の精度でテストデータのネコの品種を当てることが出来ることがわかりました!試しにアビシニアンの画像12枚をモデルに入力すると、12枚中11枚がアビシニアンである確率が最も高いと判別しています。1枚だけはベンガルと予測してしまっていますね。
我が家の4ニャンズに使ってみた結果!
シエル君(アメリカンショートヘア : ペットショップ出身)
シエル君はエジプシャンマウに分類される確率が一番高かった様です!確かにエジプシャンマウの画像の子とシエル君は柄の模様や色がよく似ていますね。筆者はエジプシャンマウに余り詳しくなかったのですが、アメリカンショートヘアとルーツが同じであるそうなので、今回の結果はリーズナブルなんですね!
ボクはペットショップ出身だし、当然にゃ(エヘン)
アンちゃん(キジトラ : ホームセンター出身)
アンちゃんはベンガルである確率がダントツで高いとの結果になりました!毛の長さがちょうどベンガルくらいであるのと、毛の色と柄が似ていることが多かったのが原因でしょうか?2番目の予測結果にメインクーンが上がってきているのも意外で面白いですね!
アタシ、ベンガルだって!メインクーンだって!ただのキジトラじゃないのね!(勘違い)
ラル君(茶トラ : ホームセンター出身)
茶トラのラル君はアビシニアンとベンガルの分類結果がほぼ同率でした。毛の長さもそうですが、白茶トラの色の影響が大きかったと思われます。3番目にはメインクーンが上がっていますが、メインクーン率高いですね^^。
白茶トラはみんな可愛いから数が多いんだにゃ!
リンク君(ノルウェージャンフォレストキャット(?) : ホームセンター出身)
最後はリンク君です。リンク君はホームセンター出身ですがフサフサなにゃんこだったので、これまでノルウェージャンフォレストキャットとして扱ってきましたが…?
結果は、ペルシャである確率が最も高いとのことです。またメインクーン、ラグドールなどの確率もそこそこありますね。ペルシャといいラグドールといい、他の3匹とは違う予測結果が上位になっているので、リンク君のフサフサ具合が予測結果に効いているのがわかりますね!リンク君はこれからもノルとして可愛がっていきます^^!
ボク、実は洋物の血が入ってるんだ!
ネコの品種分類器で癒やされながら勉強するのオススメです!
今回は機械学習を使ってネコの品種分類器を作り、我が家の4ニャンズを調べてみました。データ分析かけだしの私でも、こういったモデルを作れるのは感動です!今回作ったネコの品種分類器のモデル精度は80%程であり、改善の余地があるので、データ拡張やモデルの選択などをやってみたいと思います!
普通の日本猫も洋物猫の可能性があるなんて、面白いですね!