이것은 사진입니까 아니면 애니메이션입니까?
개시하다
게임(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.
최후
이번에는 각자의 판단기가 얼굴을 식별할 수 있는지의 여부일 뿐이다.개선을 하려면 각 판단기에서 미세한 판단 요소를 출력해 수치로 파라미터를 만들 필요가 있다.
이번에는 이미지 수정·가공에 대한 판단을 하고자 합니다(인스타그램에 공개된 이미지 가공 유무)
Reference
이 문제에 관하여(이것은 사진입니까 아니면 애니메이션입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dq_yosuke_takahashi/items/aaf5e86e1f283652a6b5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)