- AnimeFace Character Dataset

アニメやゲームなどのイラストの顔領域サムネイル(160x160)を
キャラクターごとにまとめたデータセットです.
moe.imouto.orgのキャラクタータグをベースに作成されています.
キャラクターによる画像分類の実験に使用する目的で個人的に作成していたものですが
インターネットに置けというインターネットの妖精からのお告げがありましたので,
置くことになりました.

いろいろとあまり正確ではないので,注意してください.
いろいろの部分は,このREADMEに書いています.
修正については,一番最後に記載しています.

勝手に画像使うななどありましたら,
ファイル名やキャラクタ名を添えてnagadomi@nurs.or.jpまで連絡ください.

-- データセットのURL
http://www.nurs.or.jp/~nagadomi/animeface-character-dataset/

-- 想定している用途
イラスト画像分類やそれに基づくアノテーションの付加,イラスト顔画像の解析などに
機械学習を用いる場合の教師データ.それらの評価用データ,他実験データ.

-- 構成
thumbフォルダの下に,キャラクターごとの画像フォルダがあります.
toolsフォルダは,このデータセットを作った際に使用したスクリプトで,
参考までに置いてます.

-- キャラクターフォルダ
キャラクターフォルダには,後述する顔画像ファイル,ignoreファイル,
color.csvが置かれています.
各フォルダの顔画像ファイル数は大体80前後ですが,
中には50未満や100を超えるフォルダもあります.

フォルダ名は,${連番}_${タグ}となっています.
連番は,僕の管理上つけているテキトウな整数なので気にしなくていいです.
(元は,moe.imouto.org*1で使用されているタグ数順でしたが,
 900番台に個人的に追加したいデータを追加しています)
タグは,moe.imouto.orgで使われているキャラクタータグ名です.そのフォルダ配下の
キャラクター名が表されています.タグにファイル名に使用できない文字が含まれて
いる場合は,取り除かれているので,正確には一致しないことがあります.

注意として,作品によっては,ライトノベル,ゲーム,アニメなどがあり,
それそれキャラクターデザインが異なる場合でも,同じフォルダに入っています.
また変身により外見が変化する場合なども名前が共通していれば同じフォルダに入ってます.
このあたりは,moe.imouto.org上のタグの規則に従っています.
そういうデータを使いたくない場合は,フォルダごと無視するようにしてください.
(たとえば,後述するignoreファイルによって)

-- 顔画像ファイル
顔画像ファイルには,フォルダ名が指すキャラクターの顔領域がpng形式で
保存されています.
画像のサイズは,基本的には160x160ですが,顔領域が元画像の端にあった場合は,
幅か高さのどちらか160で,どちらかは160未満になっています.
顔の周りは,ある程度マージンがあります.
画像を切り出した際に使ったスクリプトは,tools/extanimeface.plにあります.

これらは,moe.imouto.orgのキャラクタータグの登録数上位の情報から
Imager::AnimeFace*2を使って自動抽出した顔領域を手作業により仕分けしたものです.

*1: http://moe.imouto.org/tag?name=&type=4&order=count
*2: http://anime.udp.jp/imager-animeface.html

-- ignoreファイル
キャラクターフォルダにはignoreという名前のファイルが置かれていることが
あります.
このファイルは,僕が使っていないフォルダの目印として置いているものです.
パターンとして,
1. 画像ファイルがなくignoreファイルのみ
2. 画像ファイルはあるがignoreファイルがある
があります.

パターン1の場合,このフォルダは無視してください.
パターン2の場合,そのフォルダは分類の難易度が高く,まずは使わないほうがいい
という目印になります.
ただこれは個人的にそうしているだけで,あまり強い意味はありません.

-- color.csv
キャラクターフォルダにはcolor.csvという名前のファイルが置かれています.
ignoreファイルのみのフォルダには置かれていないので存在チェックは必要です.
このファイルは,そのフォルダ内の画像ファイル名と
画像の顔から自動抽出した髪の色と肌の色の情報がRGBの値として入っています.
各色成分は8bitで0~255の値になっています.

CSVフォーマットは,カンマ(,)区切りで次のようになっています.
画像ファイル名,髪の色R,髪の色G,髪の色B,肌の色R,肌の色G,肌の色B

この色はImager::AnimeFaceによる自動抽出で,
間違ってオデコやその他の領域の色が保存されていることがあるため,
あまり信用しすぎないほうがいいです.

-- 画像内の顔の正確位置や部品位置の取得について
Imager::AnimeFaceには,目や口などの顔の部品位置を取得する機能が備わっていますが,
このデータセットには,情報がありません.
これは,個人的に使うつもりがなかったので,保存していなかったのですが,
次のようにすると9割程度の画像からは取得できると思います.

# 画像読み込み
my $img = new Imager;
$img->read(file => 'piyo.png'));
# 大きめにリサイズ
$img = $img->scale(scalefactor => 1.5);
# 顔検出(細かく探す)
my $results = detect_animeface($img, window => 32.0, scale_factor => 1.01);

元はImager::AnimeFaceで切り取ったものですが,
一部はサムネイルにする段階で顔検出ができなくなっています.

-- 関連データ

このデータセットに関連するデータベースをwedata*3に置いています.

--- インデックス
http://wedata.net/databases/acd-info/items

--- 削除情報のデータベース
http://wedata.net/databases/acd-remove/items

--- タグ名(フォルダ名)から日本語キャラクター名への変換データベース
http://wedata.net/databases/acd-character-ja/items


他,なにか作ったときはacd-infoのほうに追加していただければ.

*3: http://wedata.net/help/about


-- 使用例
顔によるイラストの検索
http://anime.udp.jp/face-search-v1/

AnimeFace Search v3
http://animeface3.libotama.so/

1枚の顔領域画像からキャラクターとしての属性値を要素とするような
特徴ベクトルに変換するための関数を機械学習で作る際に使用しています.
表示されているデータは,このデータセットではなく,
海外の画像掲示板(4chan /c/)の実データです.