OpenCVでイラスト認証できるのか??
OpenCVを用いると顔検知することができますよね?
結構制度が高いので、顔検知行いたいときには重宝しています。
最近使用していて、ふと思ったのです、、、
イラストやアニメは認証するのか??
と!!
少し調べてみるとこちらの記事を見つけました!!
OpenCVによる非ディープラーニングの顔認識でどこまでできるのか試してみた! – 株式会社ライトコード
イラストは検知できない的なことは書かれていましたが、、、
本当かな?と思い、さっそく調査してみることにしました!!
【目次】
・OpenCVによる顔検知の原理
顔検知の原理はこちらに記載されておりました。
どうやら画像内を切り取り、判定を行う。を複数回繰り替えてしているようです。
【入門者向け解説】openCV顔検出の仕組と実践(detectMultiScale) - Qiita
Haar Cascadesを使った顔検出 — OpenCV-Python Tutorials 1 documentation
・調査条件・実行環境
まず使用する写真の条件ですが、
①正面を向いていること
②顔全体が映っていること
③眼鏡や帽子などが身に付いていないこと
④1人であること
としました。
用いる画像数ですが、ジャンルごとに3枚抜粋し、
・0枚検知:×
・1~2枚検知:△
・3~5検知:〇
という判定条件としました。
実行環境は、
・Ubuntu18.04 (VirtualBox上)
・Python3.5.2
・OpenCV4.2.0
検証用に作成したソースコードはこちらになります。
import cv2 cascade_path = "haarcascade_frontalface_default.xml" fileNames = ['input1.jpg','input2.jpg','input3.jpg','input4.jpg','input5.jpg'] count = 1 detectOK = 0 for input_fileName in fileNames: img = cv2.imread(input_fileName) gry_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) cascade = cv2.CascadeClassifier(cascade_path) facerect = cascade.detectMultiScale(gry_img,scaleFactor=1.5,minNeighbors=2,minSize=(30,30)) rectange_color = (255,0,0) if len(facerect) > 0: comment = "input" + str(count) +" detect face" print(comment) detectOK += 1 for rect in facerect: cv2.rectangle(img,tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]),rectange_color,thickness=2) #img =cv2.cvtColor(img,cv2.COLOR_RGB2BGR) Output_FileName = 'Output' + str(count) + '.jpg' cv2.imwrite(Output_FileName,img) count += 1 print("detect count is " + str(detectOK))
※顔の位置で正しく検知行えていない可能性もあるため、目視での確認も行いました。
・実行結果
今回用いたジャンルと画像集はこちらになります
・JirkaVinse氏作成ディズニープリンセスイラスト
JirkaVinse氏の制作したディズニープリンセス達のイラストが素晴らしくリアルで美しい! – VIDEO FISH
・ジブリアニメーション
ジブリ総選挙!女性キャラクターで彼女にするなら・・・あなたの好みは? | 明日の話題に少しの彩り
・FF7 REMAKE
バレット・ウォーレス | CHARACTER | FINAL FANTASY VII REMAKE | SQUARE ENIXクラウド・ストライフ | CHARACTER | FINAL FANTASY VII REMAKE | SQUARE ENIX
・イラストエイト
案内をするサラリーマンと吹き出しのイラスト | 無料のフリー素材 イラストエイト
・ねこ画伯コハクちゃん-無料イラスト・フリー素材
ねこ画伯コハクちゃん-無料イラスト・フリー素材集
結果はこのようになりました。
無料イラスト画で検知できた画像がこちらになります。
一方で検知できなかった画像はこちら。
イラストやアニメでもできる場合があった!!
一応、イラスト・アニメ顔であってもリアルに似せたものであれば検知できそうです。
逆にアニメーションのようなかわいらしい見た目にしてしまうと検知が難しくなる傾向がありました。
PS4に出ているゲームのキャラクターはリアルに寄せている傾向があるため、顔検知も問題なくできそうです!!
次はゲーム動画でキャラクターが動いている時に顔検知ができるのか確認してみたいな!!