2020년 초, 전례없는 전염병 코로나19가 발병했습니다. 2023년 3월 실내 마스크 의무 해제가 있기 전까지 약 3년정도의 시간 동안 우리는 얼굴에 항상 마스크를 착용하고 생활했습니다. 일상 속에서 사진을 촬영할 때도 마찬가지 였죠. 여행을 가서도, 졸업식에서도, 일상 생활에서도 어쩔 수 없이 마스크를 쓰고 사진을 찍었습니다.
코로나19가 어느정도 잠잠해진 지금, 그때의 추억을 회상하기 위해 코로나19 시절 사진들을 보곤 합니다. 하지만 그때마다 사진첩에는 마스크를 쓰고 있는 사진들 뿐이라 아쉬울 때가 많습니다. 저희의 프로젝트는 ‘ 그때 당시의 사진에 마스크가 없다면 어떨까?’ 하는 생각에서 출발했습니다. 최종적으로 저희는 마스크를 쓴 사진이 주어지면 얼굴을 복원해서 마스크를 쓰지 않은 원래 사진을 만들 수 있는 파이프라인을 구축하였습니다.
프로젝트 Pipeline
저희 프로젝트의 파이프라인은 Object Detection → Super Resolution → Image Segmentation→ Image Generation 총 4단계로 나뉘어집니다.
첫 번째는 Object Detection입니다. 저희는 사진에서 마스크를 쓴 얼굴을 탐지하기 위해 Real-Time Object Detection 에서 가장 많이 사용되고 있는 YOLOv8 모델을 사용하였습니다. 두 번째는 Super Resolution입니다. 마스크를 씌운 얼굴 부분은 대부분 저화질입니다. 마스크 안 얼굴을 생생하게 생성하기 위해 Face Detection 한 부분을 Super Resolution을 통해 고화질로 바꿨습니다. 세 번째는 Image Segmentation입니다. 이전 단계에서 얻은 고화질의 마스크 쓴 얼굴 사진에서 마스크 부분을 제거하였습니다. 마지막으로, Image Generation 입니다. 이 과정에서는 마스크가 제거된 부분에 얼굴을 생성하기 위해 총 4가지의 모델을 결합하였습니다. 기본적인 Stable Diffusion Baseline 모델, 사실적인 이미지 생성을 위한 Realistic Vision 모델, 개인화된 트레이닝이 가능한 DreamBooth 모델과 마지막으로 이미지의 자연스러움을 위한 Soft Inpainting 기법을 결합했습니다.
Object Detection,Super Resolution,Image Segmentation은 Pre-trained 모델들을 사용했고, 마지막 Image Generation 과정에서는 Pre-trained 모델을 기반으로 Fine-tuning을 진행하였습니다.
각 과정에서 사용한 모델에 대해서 아래에서 구체적으로 알아보겠습니다.
먼저, Object Detection에서는 Object Detection의 한 형태인 ****Face Detection으로 사람 얼굴을 인식하였습니다. Face Detection은 디지털 이미지나 영상에서 사람 얼굴을 인식하는 기술로, 이 과정을 거치면 이후에 있을 이미지 생성 과정에서 높은 정확도를 확보할 수 있습니다.
Face Detection은 HOG, CNN, YOLO 등 다양한 방법을 사용해 수행할 수 있는데, 저희는 ****가장 대표적이고 최근에 나왔으며, 성능이 좋은 YOLOv8를 선택하여 진행했습니다.
저희는 다음 예시와 같이 마스크를 쓴 얼굴 부분만 탐지하기 위해 YOLOv8 모델을 사용하였습니다.