전처리

  1. (GIF) 프레임 추출
    1. imageio 모듈을 사용해 프레임들을 불러왔을 때 배경과 색깔이 이상해지는 것을 확인. 이대로 투명 배경을 제거하기 위해 하얀 마스크를 적용하면 선이 흐려지는 문제가 있다. (맨 아래 트러블 슈팅 항목 참고)
gif = imageio.get_reader('test.gif')
  for frame in gif:
    plt.imshow(frame)
    plt.show()

 

PIL의 gif 객체로 받아왔을 때 깔끔하게 받아지는데, 이미지가 아닌 gif 객체여서 iteration으로 프레임마다 정보를 받아와야 하는 수고로움이 있다.

im = Image.open('test.gif')
print(im.n_frames)
im.seek(2)
plt.imshow(im)

 

 

  1. 얼굴 크롭
  • 구글 머신러닝 기반 미디어파이프 얼굴 및 동작 인식
    • 개요 : BlazeFace 모델 Face Detection. 6개 랜드마크 인식과 멀티 얼굴인식 지원.
    • 파라미터
      • model_selection : 0 혹은 1로 설정. 0은 2m 이내 오브젝트에, 5는 5m 이내 오브젝트에 잘 작동.
      • min_detection_confidence : 0~1 사이 값. 감지 성공 신뢰수준.
    • 파라미터에 따른 결과
      • min_detection_confidence=0.7 실패 1707 : 성공 1770

 

감지된 얼굴 박스의 크기가 이미지 사이즈 대비 0.2 이하일 때 제외하는 조건 추가 (0.2 이하일 때 실제 얼굴이 아닌 것을 감지한 경우가 많음)

 

  • OpenCV 머신러닝 기반 오브젝트 검출
    • 개요 : Haar Feature Selection + Creating Integral Images + Adaboost Training + Cascading Classifiers의 과정으로 이루어진 알고리즘. 적분 이미지(Integral Images)를 활용하여, 영역 내 합을 구하고 영역 간 차이를 구해 특징(feature) 계산 (음영). 모든 특징을 적용하는 대신 단계별로 특징을 적용하고, 모든 단계를 통과하는 영역을 얼굴로 판별.
    •  
      음영을 기준으로 판단해서인지 선으로 이루어진 캐릭터에 대해 성능이 떨어지는 듯. 미디어파이프로 진행하기로.
    • (미디어파이프로 실패한 이미지 대상으로 Haar 분류기 실시했을 때에도, 그닥 도움이 되지 않음)

 

 

복사했습니다!