2023년 한이음 ICT 멘토링 프로젝트 네잎클로버 팀입니다.
[시연영상] https://youtu.be/0JHX9DPPOrE
GAN알고리즘을 이용한 데이터 유통 플랫폼 'GANerate'
박정민 | 최필환 | 한종원 | 최연아 |
산업시스템공학전공 | 산업시스템공학전공 | 산업시스템공학전공 | 산업시스템공학전공 |
Frontend | Backend | AI | AI |
Language | Java 11(openjdk), Python 3.10 |
---|---|
OS | Amazon Linux 2023 |
Framework | SpringBoot, Flask |
Database | MySQL, Redis, AWS RDS, Spring Data JPA |
CI/CD | AWS EC2, AWS S3, CodeDeploy, Nginx, Github Actions |
ETC | Postman, Slack, Notion, Figma |
![Ganerate 아키텍쳐](https://private-user-images.githubusercontent.com/112103038/272437677-387b5075-a158-4309-900d-7121eb40da7e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjUzMjY2NTgsIm5iZiI6MTcyNTMyNjM1OCwicGF0aCI6Ii8xMTIxMDMwMzgvMjcyNDM3Njc3LTM4N2I1MDc1LWExNTgtNDMwOS05MDBkLTcxMjFlYjQwZGE3ZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkwM1QwMTE5MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hZmY4NzRiMTAwODk3NmIzOWVjYjgwMDM1ODM5ZTE0YWEyZGU4OTgzNDAxMTgwMTg2NWNhNzk5NWJhNjQxMzY3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.f0WJoLrdHWQBdq7wOmh_685cZoK5wB4ZVT7cj2iQzVo)
- 인터넷 상에는 많은 이미지가 존재.
- 하지만, 다량의 이미지를 획득할 수 있는 방법은 부재.
- 저작권, 라이선스로부터 자유로운 많은양의 이미지를 구하기가 어려움
- 사용자가 원하는 수량만큼 Input 이미지와 유사한 이미지를 생성해주는 플랫폼 구축.
- 사용자들간의 이미지 데이터를 거래할 수 있는 서비스 구현
- 팀장으로서 프로젝트 일정관리, 업무 분담, 발표, 프로세스 구성
- 백엔드 서비스 로직 개발
- 데이터베이스 구축 및 운용
- AI 모델의 결과를 서빙하여 사용자에게 제공
- Github actions를 활용한 CI/CD 파이프라인 구축
- 데이터 생성 메서드 비동기적 처리
- Server Sent Events 처리를 통한 사용성 증대
![GANerate_ERD](https://private-user-images.githubusercontent.com/112103038/272448667-5667f19b-29e3-46c4-8cc6-b929ea2acb7e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjUzMjY2NTgsIm5iZiI6MTcyNTMyNjM1OCwicGF0aCI6Ii8xMTIxMDMwMzgvMjcyNDQ4NjY3LTU2NjdmMTliLTI5ZTMtNDZjNC04Y2M2LWI5MjllYTJhY2I3ZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkwM1QwMTE5MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00ZDI5NTZhMTc4OWM5YmJkNTY0ODYyZjViMjg3YTU4MjkxNTE4NGM5ZGQxNWUwY2JiZTQ3ZDQxZjUyOTU0ZjQ0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.p35NY9Bdu3RoW8h6NnOYGJPf6DveXbaoWk9aOZG7h2k)
GANerate REST API 문서-pdf.pdf
![스크린샷 2023-10-04 오전 11 36 25](https://private-user-images.githubusercontent.com/112103038/272448864-6cd5ed60-0bde-4f78-911c-14ab4776ae4f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjUzMjY2NTgsIm5iZiI6MTcyNTMyNjM1OCwicGF0aCI6Ii8xMTIxMDMwMzgvMjcyNDQ4ODY0LTZjZDVlZDYwLTBiZGUtNGY3OC05MTFjLTE0YWI0Nzc2YWU0Zi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkwM1QwMTE5MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xYWZkYWQwZTdlMzlkYWZhMTdkNmM2MWVjZGQ5ZWE0ZmQwYjI2NGY0Yzc3NWM2NDcwN2FkNjU1MThjY2RlMWM3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.OJZeQRnPr9lPPbOCC-SQPOMnHSZUOK7TipAxh0jpHFc)
- JPA Specification을 이용하여 다중 조건 검색 구현
![스크린샷 2023-09-25 오후 6 30 30](https://private-user-images.githubusercontent.com/112103038/272448929-cf1d842a-94fc-4557-9c97-2ecaa34ba71e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjUzMjY2NTgsIm5iZiI6MTcyNTMyNjM1OCwicGF0aCI6Ii8xMTIxMDMwMzgvMjcyNDQ4OTI5LWNmMWQ4NDJhLTk0ZmMtNDU1Ny05Yzk3LTJlY2FhMzRiYTcxZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkwM1QwMTE5MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wZjBmYmU2ODNlN2NmMmNlNjdiOWQzNzlkYjUxNzRiNjIwNTMyZmYyMjZhYzI1MmFlZGYwNjFmMmY4Yjg3ZWMxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.Um0v8s0SkhOxIHK-Dg5lt8LR_sqOe9PqY7sUs_sPdAU)
- 데이터 생성 요청 폼에 수량, 이미지, 설명, 카테고리 등을 기입.
![스크린샷 2023-09-25 오후 6 27 55](https://private-user-images.githubusercontent.com/112103038/272449030-ec484cc1-fc97-48e7-876e-43841617babf.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjUzMjY2NTgsIm5iZiI6MTcyNTMyNjM1OCwicGF0aCI6Ii8xMTIxMDMwMzgvMjcyNDQ5MDMwLWVjNDg0Y2MxLWZjOTctNDhlNy04NzZlLTQzODQxNjE3YmFiZi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkwM1QwMTE5MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01ODY0MDJmZTg1ZjQ3NDAyNzE4YzkxOTQzMjQxZDA5N2E1OWY2OThlMzQ3NjcyOGM4NzJhYTNlODdhYjhiNGNjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.DtqEEIO7ciinMmlMo2CJcPiykDfwcIOdrwQ056zjFUo)
- 아임포트 API를 이용한 결제 및 검증
![스크린샷 2023-09-25 오후 6 32 49](https://private-user-images.githubusercontent.com/112103038/272449099-1fdd0103-66f6-44b1-83c4-533c6b3a65b3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjUzMjY2NTgsIm5iZiI6MTcyNTMyNjM1OCwicGF0aCI6Ii8xMTIxMDMwMzgvMjcyNDQ5MDk5LTFmZGQwMTAzLTY2ZjYtNDRiMS04M2M0LTUzM2M2YjNhNjViMy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkwM1QwMTE5MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kMjJkNTQxNGUyNWMyYjZhNDU0OGQ4NzRkZDU2NDA3MDg5ZTZiMjlhNGNhNGVkYThjZjk1ZGNjMzM4NDk0NDMyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.OZvAltt1rlKUZSdj2er5dhyur6-9AdDn2MvE4U_Q8jo)
- 데이터 생성 완료시 SSE를 통해 메세지 전송 및 이벤트 처리
![스크린샷 2023-09-25 오후 6 45 36](https://private-user-images.githubusercontent.com/112103038/272449167-2d3191bb-0900-4bd6-aade-461680abf00f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjUzMjY2NTgsIm5iZiI6MTcyNTMyNjM1OCwicGF0aCI6Ii8xMTIxMDMwMzgvMjcyNDQ5MTY3LTJkMzE5MWJiLTA5MDAtNGJkNi1hYWRlLTQ2MTY4MGFiZjAwZi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkwM1QwMTE5MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iMzJkODg5OGEyYzJkMTc2YjMwMjg3NzMxZWVkYmJmOGY4NTc3N2ExZGMyMTUzYWM4ODNkMWU0NWE0Y2NhMTY4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.BfW-OMEtGRdZAwBPNmDV1Iu7unlo420EC1_zvI9dIKI)
- 마이페이지를 통해 이미지 셋 다운로드 후 로컬에서 64*64의 Input과 유사한 생성이미지 확인.