SeungVictor / final-project-level3-cv-12

final-project-level3-cv-12 created by GitHub Classroom

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sketch2Idol: 나만의 여자 아이돌 만들기

Introduction

본 프로젝트는 GAN를 이용해 손으로 그린 스케치를 아이돌 이미지로 변환하는 Image To Image Translation을 다룹니다.

project_pipeline

Dataset

Data 데이터 수 Train 데이터 수 Val 데이터 수 세부사항
1 2449 2429 20 web crawling, 여자 아이돌
2 1669 1669 0 aihub, 일반인

학습에는 크롤링으로 모은 2449장의 여자 아이돌 이미지와 AIHub 한국인 감정인식을 위한 복합 영상 데이터셋의 1669장의 이미지를 활용했습니다.

각 이미지는 resize, super resolution를 거쳐 (512, 512) 해상도로 변환한 뒤, OpenCV, Learning to Simplify 코드를 이용해 스케치로 변환됩니다. 이후 이미지-스케치 pair는 google API를 이용해 눈, 입의 좌표를 정규화하는 face alignment를 적용해 저장됩니다.

데이터 중 정면에서 고개가 10도 이상 돌아간 사진, 마이크, 손 등으로 얼굴 일부를 가린 사진, 얼굴에 그림자가 있거나 조명이 너무 강한 사진은 제거했습니다.

Model

project_pipeline

전체적인 파이프라인은 1)AutoEncoder를 이용해 512*512 크기의 스케치를 512차원의 feature vector로 encoding한 뒤 2)데이터셋의 스케치들의 feature vector와 가중 평균을 낸 뒤 decoding해서 실제 사진과 유사한 스케치를 얻고, 3)이렇게 얻은 스케치를 Pix2Pix를 이용해 실제 사진으로 변환하는 구조로 이루어져있습니다.

Folder Structure

Sketch2Idol/
│
├── CycleGAN
├── UGATIT-pytorch
├── frontend
├── backend - Pix2Pix
├── backendU - U-GAT-IT
│
├── data/ - Data Preprocessing
│   ├── airflow
│   ├── dockers
│   ├── image_files
│   └── upload_server
│
├── data_loader/
│   └── dataset.py
│
├── manifold/ - KNN, weighted average
│   └── manifold.py
│
├── module_fold/ - AutoEncoder, Pix2Pix
│   ├── Block.py
│   ├── CEModule.py
│   ├── ISModule.py
│   └── utils.py
│
├── train_stage_1.py
├── train_stage_2.py
└── inference.py

Requirements

pillow
numpy
google-api-python-client
oauth2client
pyGenericPath
piexif
opencv-python
basicsr
facexlib
gfpgan
gunicorn 
uvicorn
apache-airflow
tqdm
pydantic
pytorch
torchvision
fastapi

Authors

박진한 유형진 이양재 임채영 최태종 한재현
Github Github Github Github Github Github

reference

About

final-project-level3-cv-12 created by GitHub Classroom


Languages

Language:CSS 94.5%Language:Python 5.0%Language:TypeScript 0.4%Language:Shell 0.0%Language:HTML 0.0%Language:Dockerfile 0.0%Language:JavaScript 0.0%