Skip to content
/ Gemini Public

Stable Diffusion, Control Net 기반 AI로 나만의 캐릭터를 생성, TRPG를 즐길 수 있는 서비스 🏆 삼성 청년 SW 아카데미 8기 자율 우수 프로젝트🏆

Notifications You must be signed in to change notification settings

CessnaJ/Gemini

Repository files navigation

Gemini - 또다른 나와 만나는 시간

📢 프로젝트 소개

Group 555

✔️ 프로젝트 명

GEMINI


✔️ 프로젝트 일정

2023-4-10 ~ 2023-05-19 (6주)


✔️ 협업 툴

  • Git
  • Notion
  • JIRA
  • MatterMost
  • Webex

✔️ 기술


  1. Stable Diffusion과 Fast API를 사용하여 특정 그림체에 특화된 이미지 생성 기능 구현
  2. Socket.io와 Redis, MongoDB를 이용한 실시간 TRPG 구현
  3. Spring Security + OAuth2 + JWT 소셜 로그인 구현
  4. Jenkins를 이용한 CI/CD Pipeline 구축
  5. S3를 이용한 파일 업로드 구현

⭐ Gemini 기능


  1. 사용자가 적용할 수 있는 속성을 미리 보며 선택하여 이미지 생성 가능
  2. 사용자가 생성한 이미지를 이용하여 실시간 TRPG 플레이 가능
  3. 소셜 로그인 가능(구글 로그인)
  4. 일간, 주간 TOP 5 조회 가능
  5. 다른 사람이 공개한 이미지의 키워드를 복사하여 사용할 수 있음
  6. TRPG에서의 플레이어들과 인생네컷 생성 기능
  7. 일간, 주간 TOP 5 에 해당하는 이미지에 표정네컷 생성 기능
  8. 팔로우, 좋아요 기능
  9. 이미지 생성시 알림 기능
  10. 이미지 생성에 필요한 재화(별조각) 카카오페이 구매 기능
  11. TRPG에서 비밀방 생성 기능

📍 Gemini 생성 시연 GIF


imageGenerate

🔎TRPG 시연 GIF


trpg

🎨 화면 디자인


링크를 통해 더 자세히 보실 수 있습니다.

피그마 프로토타입

💥 기술 스택


[FE]
React
Redux toolkit
styled-components
socket.io
typescript

[BE]
Java
SpringBoot
JPA
JPQL
Node.js
Express.js

[DB]
MySQL
Redis
MongoDB

[ML]
Stable Diffusion

[IDE]
IntelliJ
VSCode

[DevOps]
Docker
Jenkins
nginx
AWS ec2

🔔 서비스 플로우

1684441992590

📙 [기능 명세]

링크를 통해 더 자세히 보실 수 있습니다.

1 2 3 4

💾 [ERD]

링크를 통해 더 자세히 보실 수 있습니다.

자율  Gemini_ 제미니, 나만의 페르소나 만들기 프로젝트

🎬 [API 명세]

링크를 통해 더 자세히 보실 수 있습니다.

apidocs

apidocs2

apidocs3

apidocs4

apidocs5

🚢 팀원 소개

김성중 [팀장]

강환석

김원웅

유예지

이석훈

황다솔

💎 주요기능 구현내역

- 김성중

FE

  • 로그인, 회원가입, 마이페이지, 메인 컴포넌트 전반 작성
  • 전역상태관리 환경 구축

BE

  • Spring Security, JWT, OAUTH2.0을 이용한 인증서버 구축
  • USER-SERVICE 회원 상호작용, GALLERY REST API 구축

- 강환석

  • Stable Diffusion을 통한 이미지 생성
  • Check point 병합 및 Safetensor로 인코딩하여 안정성 증대
  • VAE 학습 및 병합 하여 기존 모델을 강화 (색감 개선)
  • Control Net을 접목시켜 이미지의 포즈 반영
  • Seed 와 연동하여 디 노이징 과정에서 기존의 이미지에서 포징만 바뀌게 적용
  • Control Net의 이미지 생성 부분에서 Clip을 활용하여 이미지 정합성 개선
  • Sampler 효율화를 통해 생성 시간 75% 단축
  • Prompt 및 Steps 조절을 통한 생성 효율화 달성 (결과적으로 1/20 으로 시간 단축)
  • FASTAPI 이용 AI 서버 구축

- 김원웅

  • CI/CD
  • AI 서버 스케일 아웃

- 유예지

FE

  • AI 이미지 생성 페이지 일부 기능 구현
  • 표정 네컷, 404 페이지 등등 프론트 세부 기능 구현알림 기능 구현

BE

  • 카카오 페이 기능 구현
  • 알림 기능 구현

- 이석훈

  • Socket.io를 통한 TRPG 게임 기능 구현
  • WebGL과 P5.js 를 이용한 3D모델링 구현

- 황다솔

  • UX UI 구성
  • 이미지 생성페이지 프론트 구현
  • 프롬프트 활용한 에셋 작업

🥽 프로젝트 소감

- 김성중

  • SSAFY를 통해 처음 소프트웨어에 입문한 저에게 팀장 자리를 믿고 맡겨주신 팀원분들께 너무 감사합니다.
  • 1학기때부터 잘 알던분들이었지만 같이 협업하는건 처음이었기에, 어떤 팀장이 되어야할지 고민이 많았습니다.
  • 우리 팀의 목표였던 새로운 경험쌓기와 프로젝트의 완성도 두마리 토끼를 다 잡을 수 있도록 처음 계획 짤 때부터 마음속에 플랜B, 플랜C를 만들어서 변수에 대처할 수 있도록한게 좋은 결과로 이어져서 다행입니다.
  • 프로젝트 내내 매주 110시간 이상 할애하면서 밥먹고 잠자는 시간 빼고 프로젝트"만"을 위해 살아주신 팀원분들 덕분에 MSA 아키텍쳐를 제대로 구현해볼 수 있었고, 겉보기에만 잘 되는게 아닌, 완성도 높은 API설계, 효율성 있는 DB설계를 할 수 있었습니다.
  • 최적화 할 부분이 몇가지 보이는데, 이후에 진행해보고 싶습니다.
  • 무엇보다 NGINX 설정을 곁들여서 서버간 통신과 데이터 흐름에 대한 이해가 깊어진게 이번 프로젝트에서 기술적으로 가장 큰 성과라고 생각합니다.
  • 환석님, 원웅님, 예지님, 석훈님, 다솔님 모두 감사합니다. 몸은 가장 힘들었지만, 마음은 가장 편한 프로젝트였습니다.

- 강환석

  • 재미있었습니다... 저번에 CNN을 빡구현 해본 경험이 있었기에 이미지 노이즈화에 대한 이해도가 생겼었는데, 이 부분을 활용해서 Stable Diffusion을 활용해볼 수 있었어서 너무 좋았습니다.
  • 고도화를 해보려고 욕심을 부리느라 자바 백엔드 부분을 케어하지 못했는데, 팀원 분들의 지원과 백업으로 무사히 연결을 완료 할 수 있어서 너무나 감사했습니다.
  • 팀 프로젝트의 아웃풋이라는 것이 혼자서는 절대 불가능한 영역이라는 것을 매번 매번 느꼈지만, 이번 팀원들 만큼은 진짜 각자의 필드에서 너무나 대단한 인재들이었기 때문에 너무나 감사했고, 도움을 받았습니다.
  • 기술 스택에 대한 이해도를 높일 수 있었고 SD, Clip, Control Net, VAE, Uvicorn 등 다양한 기술 스택을 써보고 EC2 G4DN 4Xlarge를 활용하는 실 경험을 쌓을 수 있었어서 너무 좋았습니다.
  • 모든 팀원분들께 감사의 말씀 드리고, 특히나 고생하셨던 팀장 갓성중님과. 베스트 엔지니어 원웅님께 특별한 감사의 말씀 올립니다.

- 김원웅

  • 서버 배포를 처음으로 담당해봤는데, 학습으로 인해 상대적으로 느렸던 최초 배포를 기다려준 팀원들에게 감사합니다
  • 공통 프로젝트에서 socket.io를 배포하지 못했었는데, 이번에 직접 배포를 담당하면서, 시행착오를 통해 결국 배포에 성공해 기분이 좋습니다.
  • 지나왔던 프로젝트들에서, 자동배포시에 변경사항 없는 서버들도 항상 모두 빌드를 하게되어서 배포에 변경사항 적용까지 시간이 오래걸렸던게 불만이었는데, 이번에 직접 해보면서 변경사항이 적용된 서버들만 빌드를 하게끔 병렬처리를 구현해내, 빠른속도로 빌드 후 배포를 완료할 수 있게 되어 좋았습니다.
  • ai 그림 생성 서버에서 gpu 자원을 끌어와야했는데, 도커에 대한 이해가 부족해 가상환경이 아닌, 호스트 서버에서 직접 실행하는 식으로 배포하게 된 점이 아쉽습니다. 기회가 된다면, 컨테이너 배포로 리팩토링을 도전해보고싶습니다.
  • 쿠버네티스를 적용한 팀이 많았는데, 아무래도 첫 배포다 보니, 기본적인 배포와 자동화에 그쳤습니다. 기회가 된다면, 이부분도 적용해보고싶습니다.

- 유예지

  • JAVA spring 백엔드 구현이 처음이었는데 팀원들 도움을 많이 받아서 마무리 할 수 있었습니다.
  • 당장 리팩토링 해야 할 부분들이 많이 보이지만,
  • DB 구조를 어떻게 짜고, 리팩토링 해야 할 지 알 수 있어서 좋은 프로젝트였습니다.
  • 기능이 많이 연결되어 있었기 때문에 프론트 적으로도 구조를 연구하고 구현할 수 있어서 좋았습니다.
  • 6주동안 한마음으로 달려와준 팀원분들께 감사합니다.

- 이석훈

  • 직접 socket.io를 이용하여 Node.js와 React를 이용해 게임 개발을 해 보았습니다. Redis 와 MongoDB를 이용하여 어떤 방식으로 유저들의 정보를 저장할지에 대한 고민을 통해 백앤드에 대한 이해를 높일 수 있었고, 비교적 유연하게 스키마를 작성할 수 있는 MongoDB 덕분에 아직 미숙하여 수정사항이 많아지는 경우에도 쉽게 수정할 수 있어서 너무 좋았습니다.

  • TRPG라는 생소한 게임 유형을 어떤 방식으로 보여줘야 할 지에 대한 고민을 정말로 많이 했습니다. 디자인적으로 잘 보여지지 못하는 것에 대해 고민을 하였고, 에셋을 보다 시각적으로 잘 보일 수 있도록 수정하였습니다.

  • 개발이 한창 진행될 때는 하루에 약 300커밋을 찍으며, 배포와 개발간의 괴리를 없애기 위해 노력했습니다.

- 황다솔

  • 이미지 생성AI 기술에 대한 이해를 할 수 있어서 정말 좋았던 것 같습니다. 팀원들이 모두 각자의 역할을잘해 주었기 때문에 프로젝트를 마무리할 수 있었다고 생각합니다.

  • 당초 백엔드 구축을 하기 위해 학업을 진행했지만 능력과 시간 부족으로 이번엔 타입스크립트를 활용하여 프론트를 구축하는 것에 그쳐서 아쉬움이 많이 남습니다.

  • 프로젝트 이후에도 백엔드 공부를 통해 서비스 전반적인 이해를 높혀서 개발을 하고싶다고 느꼈습니다.

About

Stable Diffusion, Control Net 기반 AI로 나만의 캐릭터를 생성, TRPG를 즐길 수 있는 서비스 🏆 삼성 청년 SW 아카데미 8기 자율 우수 프로젝트🏆

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published