feature image

2019年11月13日 | ブログ記事

顔認識で推す

こんにちは、Fogrexです。

この記事は:nan_india:ですか

この記事は、あなたの担当(もしくは推し)を推すために顔認識を使った馬鹿記事です
正直もとになったプログラムはかなり前に作ったのであんまりどうやったか覚えてないけど勘弁してください
あと長いことデレステから離れていたのでところどころ古い知識で書いているかもしれないです

皆さん、デレステをやったことはありますか?

僕はあります。そして沼にハマって一時期金を費やしていたこともあります(といっても高校生だったのでそんなにお金なかった)

しゅがはかわいい

デレステの醍醐味といえばMVのスクショだと思います。

イラストを描く技術がなくても、エモい動画編集の技術がなくても、手軽に担当の素晴らしい姿を記録し、宣伝できます。

というわけで、スクショを取りまくってスクショだけでカメラロールが埋まったりするわけですが、途中で気付くわけです

あれ、これスクショ撮るより動画取った方がいいんじゃね

と。いや、実際には画質が落ちるので完全なる上位互換ではないんですよ?でもね、

となるわけです
で、こうなる
-----------155-
動画から全フレーム切り出して画像で保存したものです
でも正直誰も映ってないフレームとか要らないんですよ
で、本題

顔認識で担当の顔を検知させてそのフレームだけ切り出す

何やるか見えてきましたね
処理の流れはこう

スクリプト1
学習用の動画を用意する
OpenCVで顔認識をして認識された顔を切り出して画像に保存

保存された画像をそれぞれ分類する(人力)

スクリプト2
分類した画像をラベル付けしてnpy形式で出力

スクリプト3
npyを読み込んでKerasでモデルを構築し学習
重みデータを出力

スクリプト4
学習済みモデルをロードしてOpenCV+Kerasで顔認識しつつフレーム切り出し

という処理になります。OpenCVでアニメの顔認識をする場合はlbpcascade_animefaceをカスケードファイルに用います。これはOpenCV付属のカスケードファイルではカバーできないアニメやイラストの顔を検知するためのファイルです。Python+OpenCVで顔認識をするやつはネット上にいくらでも転がってるので書きません。

ちなみに酔い乙女宵乙女の5人で顔認証しようとしたんですがナナさんがいなかったのでイヴで代用してます。ナナパイセン担当の人ごめんなさい

スクリプト1と2に関しては昔に書いたプログラムが消え失せてしまったので記憶の限りに書くと、顔を切り出す際、切り出す大きさを検知された範囲より1.4倍大きくしたはずです。顔以外の情報量が増えて認識しやすくなると思ったので。分類は、それぞれフォルダを作って手作業で分けた後、フォルダ内の全部の画像に対して同じラベルを付けて保存、みたいな方式を取りました。ラベルはOne-Hot式。そして、切り出した部分を64x64の大きさに成型してnpyに出力しました。

スクリプト3、4に関してはGoogleColaboratoryに移植したやつを乗っけておきます。GoogleColaboratoryで認証フェーズと想起フェーズを実行すれば望むものが得られます。学習フェーズは気になったら見てみてください。コメントの指示に従えば実行できるはずです。自分で自由にコードを編集して遊んでみるのもいいでしょう。変更はあなたのブラウザでしか適用されないので気にせずどうぞ

実行めんどくさい!という方は以下に動画置いときますね
画像認識でしゅがはだけを切り出す

ちなみに、顔認識をした結果を出力した奴を下に置いておきます
Predicted Video
なんか動画の速度がおかしいかもしれませんがそれは元動画が60fps(コマ抜け有)を間違えて約30fpsにしたからです
うちのスマホで3Dリッチ60fpsは厳しい

総評

最適化とかなんもしてないので精度はいまいちですがそれでもまぁまぁの精度は出てます

あと一番めんどくさいのは手作業での分類です
分類も自動でやってくれねぇかなぁと試行錯誤したけどぼくの技術力じゃ無理でした

自分でやりたい人、がんばれ

しゅがはかっこいい(Spin-off!みろ)

明日はryohaさんの記事です 楽しみ~

Fogrex icon
この記事を書いた人
Fogrex

シェーダーとVRやってます レイマーチ楽しい(゚∀。)

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2017年11月14日
IBIS2017参加報告
Keijan icon Keijan
ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】 feature image
2018年11月3日
ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】
Azon icon Azon
2021年5月19日
CPCTF2021を実現させたスコアサーバー
xxpoxx icon xxpoxx
2022年10月11日
アルゴリズム班にKaggle部を設立し、初心者向けデータ分析体験会を開催しました!
abap34 icon abap34
2021年12月8日
C++ with JUCEでステレオパンを作ってみた【AdC2021 26日目】
liquid1224 icon liquid1224
2019年4月22日
アセンブリを読んでみよう【新歓ブログリレー2019 45日目】
eiya icon eiya
記事一覧 タグ一覧 Google アナリティクスについて