【ネコと機械学習3】ネコの品種分類器を作ってうちのニャン達の品種を調べてみた

先日、ネコ判別器の作り方を紹介致しました。前回は、画像がネコかイヌかを当てるものでしたが、今回は、ネコの品種を識別する機械学習モデルを作ってみました。さっそく我が家の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品種の写真が並ぶ

 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枚だけはベンガルと予測してしまっていますね。

分類器のテスト結果。アビシニアンの画像12枚に対する予測と確信度が表示され、11枚はAbyssinianで確信度54.7%〜99.8%、1枚だけBengal 47.1%と誤判定されている

我が家の4ニャンズに使ってみた結果!

シエル君(アメリカンショートヘア : ペットショップ出身)

シエル君の写真と分類結果の棒グラフ。エジプシャンマウ36.01%、メインクーン23.31%、ベンガル15.02%の順で、上位3品種の参考写真も並ぶ

 シエル君はエジプシャンマウに分類される確率が一番高かった様です!確かにエジプシャンマウの画像の子とシエル君は柄の模様や色がよく似ていますね。筆者はエジプシャンマウに余り詳しくなかったのですが、アメリカンショートヘアとルーツが同じであるそうなので、今回の結果はリーズナブルなんですね!

シエル君
シエル君

ボクはペットショップ出身だし、当然にゃ(エヘン)

アンちゃん(キジトラ : ホームセンター出身)

アンちゃんの写真と分類結果の棒グラフ。ベンガル48.62%、メインクーン13.8%、アビシニアン10.93%の順で、上位3品種の参考写真も並ぶ

 アンちゃんはベンガルである確率がダントツで高いとの結果になりました!毛の長さがちょうどベンガルくらいであるのと、毛の色と柄が似ていることが多かったのが原因でしょうか?2番目の予測結果にメインクーンが上がってきているのも意外で面白いですね!

アンちゃん
アンちゃん

アタシ、ベンガルだって!メインクーンだって!ただのキジトラじゃないのね!(勘違い)

ラル君(茶トラ : ホームセンター出身)

抱っこされたラル君の写真と分類結果の棒グラフ。アビシニアン24.93%、ベンガル24.14%、メインクーン17.03%と拮抗している

 茶トラのラル君はアビシニアンとベンガルの分類結果がほぼ同率でした。毛の長さもそうですが、白茶トラの色の影響が大きかったと思われます。3番目にはメインクーンが上がっていますが、メインクーン率高いですね^^。

ラル君
ラル君

白茶トラはみんな可愛いから数が多いんだにゃ!

リンク君(ノルウェージャンフォレストキャット(?) : ホームセンター出身)

リンク君の写真と分類結果の棒グラフ。ペルシャ41.26%、メインクーン18.72%、ラグドール14.45%の順で、上位3品種の参考写真も並ぶ

 最後はリンク君です。リンク君はホームセンター出身ですがフサフサなにゃんこだったので、これまでノルウェージャンフォレストキャットとして扱ってきましたが…?
 結果は、ペルシャである確率が最も高いとのことです。またメインクーン、ラグドールなどの確率もそこそこありますね。ペルシャといいラグドールといい、他の3匹とは違う予測結果が上位になっているので、リンク君のフサフサ具合が予測結果に効いているのがわかりますね!リンク君はこれからもノルとして可愛がっていきます^^!

リンク君
リンク君

ボク、実は洋物の血が入ってるんだ!

 

ネコの品種分類器で癒やされながら勉強するのオススメです!

 今回は機械学習を使ってネコの品種分類器を作り、我が家の4ニャンズを調べてみました。データ分析かけだしの私でも、こういったモデルを作れるのは感動です!今回作ったネコの品種分類器のモデル精度は80%程であり、改善の余地があるので、データ拡張やモデルの選択などをやってみたいと思います!

1 COMMENT

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA