- Deep learning을 활용한 Photomosaic 개발 (참여 기업체 : (주)빈즈 소프트)
컴퓨터학부 글로벌Sw융합전공 19학번 권수빈
컴퓨터학부 글로벌Sw융합전공 19학번 김민지
컴퓨터학부 글로벌Sw융합전공 19학번 김은하
- postgres docker
- minio docker
- minio-ui (optional : if you need admin dashboard page to check minio)
cd docker
docker-compose up -d
- you can access
minioui.localhost:9001
at admin dashboard - Please modify the
docker-compose.yaml
in docker directory for custom configuration
- You can develop front with flutter on
front
directory - Please use
front/deploy.sh
to deploy frontbash front/deploy.sh
go run main.go
- 최근 딥러닝 기술이 각광받게 되면서 딥러닝을 이용해 컴퓨터가 자동으로 Photomosaic를 생성하도록 하는 기술이 활성화 되었음
- 이를 통해 서울 관광 홍보 application과 같이 다양한 서비스도 탄생함
이러한 배경으로 빈즈소프트에서도 Photomosaic과 관련된 서비스를 제공하는 application을 기획하였고 저희에게 프로젝트 수행을 요청
- 포토모자이크 기술을 활용하여 이용자에게 다양한 서비스를 제공
- 공유 기능을 추가하여 바이럴 마케팅
- 기업의 홍보효과 및 배너 광고를 통한 수익 창출
- Flutter
- Firebase
- MINIO : Save image object
- PostgreSQL : image meta data
또한 Photomosaic model은 모듈화하여 Golang으로 실행
- 회원 관리를 위해 firebase 내의 auth 기능을 이용함
- 해당 사진은 firebase auth내에 회원의 계정이 어떻게 저장되는지 보여줌
- 앱을 처음 실행시켰을 때 splash 후 처음으로 등장하는 페이지에서 SNS 연동 로그인 및 이메일을 이용한 로그인, 회원가입 가능
- sns 연동 로그인을 하지 않고 이메일을 통한 로그인 및 회원가입을 원한다면 해당 페이지에서 진행 가능
- 로그인을 하게 되면 firebase auth에서 일정시간동안 token을 관리하게 되는데, 이를 이용하여 자동로그인을 구현함
- 사용자가 Photomosaic을 생성하는 페이지로 이동하면 Target 이미지를 업로드 함
- 그 다음으로 Target이미지를 구성하는 소스 이미지를 선택 가능. 이 때 소스 이미지는 사용자의 선호에 따라 서버에 업로드 되어있는 이미지 혹은 User의 앨범에 있는 개인 이미지를 선택할 수 있음
- 이 때 데이터베이스 내의 소스 이미지의 개수가 많아질 수록 타깃 이미지의 각 셀마다 가지고 있는 고유한 값을 표현하기 위한 비교 가능한 셋이 많아지기 때문에 처리 시간이 증가하는 문제 발견
따라서 (처리 시간과 사진의 완성도를 고려하여) 데이터 베이스 내의 최소한의 사진을 저장 한 후 향후 생성된 Photomosaic 이미지와 만들고자 했던 Target이미지를 오버랩하여 완성도와 효율을 최대한 확보함
- 이를 통해 서비스 제공 측면에서 앱 처리시간이 늘어나는 것을 방지
- 데이터 베이스 내의 사진은 Pixabay에서 크롤링 하여 구성
- Pixabay Developer API를 사용하였고 이는 각 사용자의 Api Key를 통해 HTTP통신으로 작동된다.
- 서버와 앱의 데이터 송수신 시 HTTP의 Get, Post 방식을 이용
- 사용자 이미지 데이터 저장을 위한 데이터 베이스는 Minio를 사용
- 이미지의 메타 데이터 저장을 위한 데이터 베이스는 PostgreSQL을 사용
이는 image 타입으로 일반적인 데이터베이스에 저장 가능하나 이미지 데이터가 고해상도, 고용량인 경우 데이터 조회시 DB부하 및 용량 증가로 로딩 속도가 증가 할 수 있다는 문제점을 감안하여 이와 같이 구성함
- 서버, 앱 간의 데이터를 즉시 반영하기 위해 Stream을 열어두어 사진 Post 기능 및 좋아요 댓글 달기 기능 구현
- 카카오톡 sns로 직접 공유할 수 있는 서비스를 제공
- 바이럴 마케팅, 배너 광고는 물론, 단일 코드 베이스인 flutter를 이용한다는 점에서 경제적 효과와 홍보효과를 기대함
https://www.youtube.com/watch?v=3KBc8UICEtQ&feature=youtu.be