Name | 유채란 | 류지연 | 안효민 |
---|---|---|---|
Role | DeepLearning / FE | DeepLearning / FE | DeepLearning / BE |
StyleTransfer 딥러닝 모델을 이용해 합성한 이미지를 생성 및 편집 가능한 서비스
- 기간: 2023.05.01 ~ 2023.09.18
- 개발 인원: 3명
- 개발 언어: Python 3.8
- 개발 환경: Django 4.2.5, Django REST Framework
- 데이터베이스: SQLite (이미지 URL 저장)
- 가상환경: venv
- ORM: Django ORM
- 인증 및 권한: Django Auth (admin)
- 프론트엔드: Django Templates
- 외부 API: Google Translation API, Kakaobrain/Karlo API
- 기타: Gmail SMTP 메일 발송
- 사용자는 Content Image와 Style Image를 업로드하여 딥러닝 스타일 전이 모델을 통해 새로운 이미지를 생성할 수 있다.
- 업로드는 로컬에서 진행되며, png, jpeg 형식만 지원된다.
- 생성된 이미지는 서버에 저장되며, 사용자는 페이지를 벗어나도 작업이 비동기로 수행된다.
- 작업 완료 후, 사용자는 생성된 이미지를 확인하고 로컬에 저장할 수 있다.
- Content 및 Style 이미지를 로딩하고 전처리한다.
- VGG19 모델의 학습된 가중치로 각 이미지의 특징을 추출한다.
- 입력 이미지를 정규화하여 모델이 훈련된 데이터의 분포와 일치시킨다.
- Content와 Style 레이어에서 손실 계산을 수행한다.
- LBFGS 최적화 알고리즘을 통해 손실을 최소화하고 스타일이 적용된 이미지를 출력한다.
- 사용자는 서비스 첫 페이지에서 제공된 16개의 Content Image 샘플과 16개의 Style Image 샘플 중 하나를 선택할 수 있다.
- 한쪽 이미지만 업로드하고, 다른 한쪽은 샘플 이미지로 선택하는 것 또한 가능하다.
- 이미지 생성 완료 후 사용자는 이메일 주소를 입력하여 생성된 이미지의 URL을 이메일로 전송받을 수 있다.
- 전송 성공 시 완료 팝업, 실패 시 오류 팝업이 표시된다.
- 사용자는 텍스트 프롬프트를 통해 이미지를 생성할 수 있다.
- Prompt: 원하는 이미지 내용을 입력
- Negative Prompt: 포함되지 않길 원하는 요소 입력
- 생성된 이미지는 로컬에 다운로드할 수 있으며, 이메일로 전송이 가능하다.
- 업로드한 이미지를 CSS의 Filter 속성으로 밝기, 채도, 명암 등을 편집할 수 있다.
- 적용된 필터는 초기화할 수 있으며, 최종 이미지를 로컬에 다운로드 가능하다.
- 사용자가 이미지를 편집한 후, 이메일로 생성된 이미지 URL을 받을 수 있으며, 전송 완료/오류 팝업이 표시된다.
- 모델 아키텍처: CNN 기반 StyleTransfer
- 프레임워크: PyTorch 1.12
- 이유: MPS 기능 사용 가능 여부 확인을 위해 PyTorch 1.12 버전 사용
- Epochs 설정: 9
- 8 이하에서는 학습이 충분하지 않아 스타일 변환이 제대로 반영되지 않음.
- 10 이상에서는 Overfitting 문제가 발생.
- Django SMTP를 사용하여 사용자가 입력한 이메일 주소로 이미지가 첨부파일로 전송된다.
- 메일 제목에는 이미지 파일명이 입력되어 전송된다.
- 이메일 전송 기능
- 비동기 이미지 생성 기능
- 이미지 업로드 및 저장 기능
- GPU 활용 문제: StyleTransfer를 이용한 빠른 이미지 생성을 위해 GPU가 필요했으나, 부재로 인해 비동기 처리를 도입해 이후 이미지를 출력하도록 구현했다. 향후 AWS EC2 인스턴스를 활용한 GPU 자원 사용 방안 고려
- 로그인/회원가입: 향후 이미지를 생성하고 다른 사용자와 공유하기 위한 게시판 기능을 확장할 때, 로그인과 회원가입 기능이 필요할 것
- 서버 리소스 관리: 사용자가 업로드하는 이미지 크기 제한이 없어 서버 리소스 과도 사용 가능성이 있어 향후 크기 제한 설정이 필요합하다.