Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

OpenCVでイラスト認証できるのか??

OpenCVを用いると顔検知することができますよね?
結構制度が高いので、顔検知行いたいときには重宝しています。
f:id:Elsammit:20200621151152j:plain

最近使用していて、ふと思ったのです、、、
イラストやアニメは認証するのか??
と!!

少し調べてみるとこちらの記事を見つけました!!
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
 
 ・ジブリアニメーション
ジブリ総選挙!女性キャラクターで彼女にするなら・・・あなたの好みは? | 明日の話題に少しの彩り

 ・ドラゴンクエスト11
  DQネクスト!|VジャンプWEB

 ・FF7 REMAKE
  バレット・ウォーレス | CHARACTER | FINAL FANTASY VII REMAKE | SQUARE ENIXクラウド・ストライフ | CHARACTER | FINAL FANTASY VII REMAKE | SQUARE ENIX

 ・イラストエイト
  案内をするサラリーマンと吹き出しのイラスト | 無料のフリー素材 イラストエイト

 ・ねこ画伯コハクちゃん-無料イラスト・フリー素材
  ねこ画伯コハクちゃん-無料イラスト・フリー素材集


結果はこのようになりました。
f:id:Elsammit:20200621150958p:plain


無料イラスト画で検知できた画像がこちらになります。
f:id:Elsammit:20200621150925j:plain


一方で検知できなかった画像はこちら。
f:id:Elsammit:20200621150941j:plain


イラストやアニメでもできる場合があった!!
一応、イラスト・アニメ顔であってもリアルに似せたものであれば検知できそうです。
逆にアニメーションのようなかわいらしい見た目にしてしまうと検知が難しくなる傾向がありました。

PS4に出ているゲームのキャラクターはリアルに寄せている傾向があるため、顔検知も問題なくできそうです!!
次はゲーム動画でキャラクターが動いている時に顔検知ができるのか確認してみたいな!!