이것은 사진입니까 아니면 애니메이션입니까?

7892 단어 놀음심배우다

개시하다


게임(Pytohon&기계학습 학습)에 인물의 초상화를 넣으면 애니메이션인지 사진인지
얼굴을 기준으로 한 것이기 때문에 실제 그림을 넣으면 사진으로 판단된다

차리다


python3.x
python 버전의 OpenCV(참조: https://www.sejuku.net/blog/54272
사진용 애니메이션용 레벨 분류기 (후술)

이루어지다

(フォルダ)img-画像置き場
(フォルダ)haarcascade-カスケード分類器置き場
(ファイル)auto_anime_classifier.py
동일한 디렉토리에 배치
서류철
- haarcascade_frontalface_alt.xml
- lbpcascade_animeface.xml
이 두 개
OpenCV의 기본 도입
후자는 https://github.com/nagadomi/lbpcascade_animeface
auto_anime_classifier.py
import cv2
import numpy as np

if __name__ == '__main__':

    CASCADE_PATH = 'haarcascade/'
    face_count = []

    print('Plz input filename')
    img_name = input('>> ')
    img = cv2.imread('img/'+str(img_name), cv2.IMREAD_COLOR)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    photo = cv2.CascadeClassifier(CASCADE_PATH + 'haarcascade_frontalface_alt.xml')
    anime = cv2.CascadeClassifier(CASCADE_PATH + 'lbpcascade_animeface.xml')

    face_count.append(len(photo.detectMultiScale(gray, 1.1, 3)))
    face_count.append(len(anime.detectMultiScale(gray, 1.1, 3)))

    if face_count[0] > face_count[1]:
        print('Maybe photo.')
    elif face_count[1] > face_count[0]:
        print('Maybe anime.')
        elif face_count[0] >= 1 and face_count[1] >= 1:
        print('Both attributes.')
    elif face_count[0] == 0 and face_count[1] == 0:
        print('Undeciable.')

해설


OpenCV에 관해서는 해설 블로그 등이 산적해 있기 때문에 사랑을 끊는다.
폴더 내의 이미지를 입력하고 imread()로 읽습니다.그리고 회색으로 가공하기
print('Plz input filename')
img_name = input('>> ')
img = cv2.imread('img/'+str(img_name), cv2.IMREAD_COLOR)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
사진, 애니메이션 각각의 등급별 분류 파일을 읽는 분류기 만들기
photo = cv2.CascadeClassifier(CASCADE_PATH + 'haarcascade_frontalface_alt.xml')
anime = cv2.CascadeClassifier(CASCADE_PATH + 'lbpcascade_animeface.xml')
face_count에 각 분류기가 읽는 수를 저장하고 유무는 판단 기준입니다
face_count.append(len(photo.detectMultiScale(gray, 1.1, 3)))
face_count.append(len(anime.detectMultiScale(gray, 1.1, 3)))
마지막으로 부분적으로 간단하게 식별되는지 비교 판단한다
if face_count[0] > face_count[1]:
   print('Maybe photo.')
elif face_count[1] > face_count[0]:
   print('Maybe anime.')
elif face_count[0] >= 1 and face_count[1] >= 1:
   print('Both attributes.')
elif face_count[0] == 0 and face_count[1] == 0:
   print('Undeciable.')
현실에 가깝다
메이비 포토(대충 실사판)→Both attributes(아무거나 가능)→메이비 애니메(대충 그렸음)→Undeciiable(몰라)

저는 King Of Pop Michael Jackson입니다.
Plz input filename
>> mj.jpeg
Maybe photo.

최후


이번에는 각자의 판단기가 얼굴을 식별할 수 있는지의 여부일 뿐이다.개선을 하려면 각 판단기에서 미세한 판단 요소를 출력해 수치로 파라미터를 만들 필요가 있다.
이번에는 이미지 수정·가공에 대한 판단을 하고자 합니다(인스타그램에 공개된 이미지 가공 유무)

좋은 웹페이지 즐겨찾기