본문 바로가기

AI/Cartoonize

사진을 만화화하다 - 3

반응형

2022.08.10 - [AI/Cartoonize] - 사진을 만화화하다 - 2

2022.08.08 - [AI/Cartoonize] - 사진을 만화화하다 - 1

사진을 만화화하다는 주제로 관련 정보를 정리 중에 있습니다.

이번 포스팅에서는 2번째 포스팅에서 분석한 데모 소스를 바탕으로 프로그램을 만든 내용을 적어보겠습니다.

https://github.com/bryandlee/animegan2-pytorch

 

GitHub - bryandlee/animegan2-pytorch: PyTorch implementation of AnimeGANv2

PyTorch implementation of AnimeGANv2. Contribute to bryandlee/animegan2-pytorch development by creating an account on GitHub.

github.com

데모 프로그램은 아래와 같은 절차를 따릅니다.

1. 이미지 로딩

2. 얼굴 검출

3. 얼굴 정렬 및 짜르기

4. 이미지 저장

제가 원하는 거는 전체 이미지를 만화화하는 것인데... 얼굴만 만화화하는 것으로 끝났습니다.

그래서 저는 데모에다가 추가로 배경 이미지 + 카툰화 얼굴 합성까지 해보고자 합니다.

그 절차는 아래와 같습니다.

1. 이미지 로딩

2. 얼굴 검출

3. 얼굴 정렬 ( transform ) 및 짜르기

4. 얼굴 inverse transform

5. 원본 배경 이미지와 합성

원본 이미지
전체 카툰화
얼굴 검출 및 정렬 그리고 짜르기

원본과 비교해보시면 얼굴이 반시계반향으로 회전이 되어있음을 알 수 있습니다.

눈 크기도 조금 달라진것 같네요.

해당 모델에서 잘 변환할 수 있도록 ( 아마 학습 데이터도 이와 같은 방법으로 전처리가 되지 않았을까 합니다. )

얼굴 카툰화
배경과 합성

정면으로 변환한 얼굴 이미지를 원래대로 변환(Inverse) 해주고 이걸 배경과 합성해줍니다.

배경과 합성할때는 cv2.seamlessClone합수를 사용했습니다. ( Normal type )

이미지를 확대해서 보면 그냥 합성해서 그런지 블록화 현상이 뚜렷이 관찰됩니다.

보기 않좋습니다. 

반응형

v1 모델 사용
v2 모델 사용

전체 이미지를 그냥했을때랑 얼굴을 때서 다시 합성했을 때랑 차이점이 보입니다.

이 방법은 샘플처럼 배경에 비해 얼굴이 작을때 그 차이가 많이 날 것으로 예상됩니다.

얼굴이 작을 수록 이 방법으로 하지 않으면 안예쁩니다.

(실험해보니 얼굴이 대부분을 차지하는, 증명사진 같은 비율의 사진은 별 차이가 안느껴집니다.)

다음 포스팅에서는 위에서 언급한 합성시 조금 부드럽게 해보는 실험에 대해서 쓸까합니다.

그럼 이만 마치겠습니다.

반응형

'AI > Cartoonize' 카테고리의 다른 글

사진을 만화화하다 - 2  (0) 2022.08.10
사진을 만화화하다 - 1  (0) 2022.08.08