2022.08.08 - [AI/Cartoonize] - 사진을 만화화하다-1
사진을 만화화하다는 주제로 관련 정보를 정리 중에 있습니다.
첫번째 시간에서는 아래를 참고하여 몇가지 샘플(이미지)을 만화화 해보았습니다.
정면, 인물 중심, 단독 사진은 잘 변경되지만, 여러명, 풍경 중심 사진은 결과물이 좋지 못했습니다.
https://github.com/bryandlee/animegan2-pytorch
이번 시간에는 위 Github의 demo 파일을 분석해보겠습니다.
https://github.com/bryandlee/animegan2-pytorch/blob/main/demo.ipynb
import requests
img = Image.open(requests.get("https://upload.wikimedia.org/wikipedia/commons/8/85/Elon_Musk_Royal_Society_%28crop1%29.jpg", stream=True).raw).convert("RGB")
# img = Image.open("/content/sample.jpg").convert("RGB")
face_detector = get_dlib_face_detector()
landmarks = face_detector(img)
display_facial_landmarks(img, landmarks, fig_size=[5, 5])
for landmark in landmarks:
face = align_and_crop_face(img, landmark, expand=1.3)
display(face2paint(model=model, img=face, size=512))
1. 만화화할 Image를 불러옵니다(img).
2. 얼굴을 인식할 모듈(dlib)을 불러옵니다.(face_detector)
3. face_detector을 이용해서 만화화할 img에 포함되있는 얼굴을 인식합니다.(landmarks)
pred_types = {
'face': pred_type(slice(0, 17), (0.682, 0.780, 0.909, 0.5)),
'eyebrow1': pred_type(slice(17, 22), (1.0, 0.498, 0.055, 0.4)),
'eyebrow2': pred_type(slice(22, 27), (1.0, 0.498, 0.055, 0.4)),
'nose': pred_type(slice(27, 31), (0.345, 0.239, 0.443, 0.4)),
'nostril': pred_type(slice(31, 36), (0.345, 0.239, 0.443, 0.4)),
'eye1': pred_type(slice(36, 42), (0.596, 0.875, 0.541, 0.3)),
'eye2': pred_type(slice(42, 48), (0.596, 0.875, 0.541, 0.3)),
'lips': pred_type(slice(48, 60), (0.596, 0.875, 0.541, 0.3)),
'teeth': pred_type(slice(60, 68), (0.596, 0.875, 0.541, 0.4))
}
landmarks의 데이터 포멧은 소스 코드 중에 위 부분을 보면 유추해 볼수 있습니다.
예로 0~16까지 포인트는 전체 얼굴 윤곽을 나타냅니다.
4. 원본 이미지(img)에 landmarks에 저장된 포인트에 점을 찍습니다.
5. 루프문을 돌면서(landmarks가 2개 존재하면 검출된 얼굴은 두개입니다.) landmark를 바탕으로 얼굴을 align하고 crop 합니다.(align_and_crop_face)
6. 짜른 얼굴(face)을 해당 사이트에서 제공하는 딥러닝 모델을 통과 시킵니다.(face2paint)
제가 보기에는 퀄리티가 매우 좋습니다.
dlib의 face detector의 landmark를 이용하여 얼굴을 정렬하고 짜르는 align_and_crop_face 함수가 제일 복잡한 함수라 이부분만 이해한다면 그렇게 어렵지 않은 데모 코드였습니다. ( AI 데모 코드의 공통점인 것 같습니다. )
하지만 저는 관련 지식이 부족해서 좋은 공부였습니다^^
이번 포스팅은 여기서 마치고 다음 포스팅에서 해당 데모 코드를 이용해서 전체 이미지와 합성해보겠습니다.
'AI > Cartoonize' 카테고리의 다른 글
사진을 만화화하다 - 3 (1) | 2022.08.11 |
---|---|
사진을 만화화하다 - 1 (0) | 2022.08.08 |