アニメキャラ識別データセットを作った話


TL;DR

  • アニメキャラ識別のデータセットを作った
  • 人間のエラー率13%に対し、ベースラインモデルは70%程度のエラー率にとどまっており改善の余地は大きい

データセット作成の動機

以前metric learningで人間並みのアニメキャラ識別性能を目指す!の記事でアニメキャラ識別に関する取り組みの結果を紹介しましたが、やはり一人の力では性能改善に限界があると感じました。 そこで、いろいろな人が同じデータセットでアニメキャラ識別の性能改善に取り組めるようにベンチマークデータセットを作成することにしました。

ZACI-20データセット

作成したベンチマークデータセットZACI-20については以下のレポジトリで公開しています。

github.com

このデータセットDanbooru2020データセットに含まれるイラストに対して顔検知を行い、以下の基準を満たしたイラストから得られた顔画像を対応するキャラクターラベルでアノテーションしたものです。

  • キャラクタータグが1つしか付けられていない
  • 顔検知の結果、顔が1つしか検出されなかった

データセットには約3万9000人のキャラクターにわたる、合計約145万枚の顔画像が含まれています。

zero-shotキャラクター識別タスク

このデータセットの応用先として、zero-shotキャラクター識別タスクを主に想定しています。

zero-shotキャラクター識別タスクとは、訓練時に未知なキャラクターの顔画像が2枚与えられた際に、それらの画像に描かれているものが同じキャラクターかどうかを推定するタスクです。(名付けが適切かどうかはわかりませんが。。。) このタスクにおける性能を評価するため、テストデータには同じキャラクターの顔画像のペア(正例)と、異なるキャラクターの顔画像のペア(負例)が含まれています。

タスクの難易度を上げるため、負例ペアは訓練データで学習したモデルがより間違えやすいようなペアを敵対的に選んでいます。 以下の図はそのようにして得られた負例ペアの具体例を示していますが、髪の色が似ているキャラクターのペアなど、区別が難しいペアが選択されていることがわかります。

https://github.com/kosuke1701/ZACI-20-dataset/raw/main/misc/adversarial.png

ベンチマーク

このタスクにおいて現在の深層学習モデルがどの程度人間の性能に迫っているのかを評価するため、テストデータに対して人手でアノテーションを行うことで人間の識別性能を評価しました。 比較対象の深層学習モデルとして、前回の記事と同様にmetric learningを用いて学習したResNetモデルと、arkel32/animesionにおいて公開されていたコードにより学習したVision Transformerモデルを評価しています。

この図から明らかなように、このタスクにおいては(少なくとも私が学習した)深層学習モデルは人間が13.6%のエラー率で識別できるテストデータに対し70%前後のエラー率しか達成することができていません。

f:id:ronwall1701:20210316182414p:plain

おわりに

この記事ではアニメキャラ識別の性能改善のために作成したデータセットZACI-20について紹介しました。 このデータセットが、今後のアニメキャラ識別モデルの性能改善に貢献できれば嬉しいです。