[챗 GPT MS 애저톤] 내 체형과 날씨에 맞는 AI 코디 서비스, "패스트 코디"
https://aifactory.space/competition/2290/discussion/271
[서비스] AI 추천 코디 서비스
[HTTPS://CDN.AIFACTORY.SPACE/IMAGES/20230423213801_QIMJ.PNG] 바쁜 일상을 사는 사람들을 위한 “패스트 코디” >
aifactory.space
대회 결과
대회가 종료된 2023년 4월 이후, 너무 많은 시간이 흘러 어느덧 대회에서 작성한 프로젝트 과정과 코드가 내려가, 대회 관련 내용을 따로 첨부하게 되었습니다. 프로젝트 결과, 참여한 '생활 서비스' 부문에서는 'chat gpt를 활용하여 동화를 만들어주는 서비스' 가 대상을 수상하며 상을 받진 못했지만, 39개로 유저 최다 추천수를 기록, 지인 및 커뮤니티 의견을 적극 수용하여 피드백을 진행했고, 최종적으로 '커뮤니티 상' 을 수상하게 되었습니다.
개요 및 서비스 소개
패션에 관심이 생기신 분들, 또는 당장 입을 옷이 없어 구매해야 하는 분들. 어떻게 옷을 구매하고 계신가요?
매장을 방문하기에는 취향에 맞는 브랜드와 옷을 찾기 위해 시간과 체력을 모두 쏟아야 하고, 그렇다고 대형 쇼핑몰 인기 리스트에서 옷을 고르기엔 모델 핏에 속아 구매를 후회했던 적 없으신가요?
너무나 많은 선택지에도 불구하고 오히려 나에게 맞는 패션을 찾기가 더욱 힘들어지는 현대인들을 위해, ai가 나의 상황과 신체조건에 가장 맞는 옷을 추천해주는 “패스트 코디” 서비스를 기획하게 되었습니다.
저희 서비스는 사용자 ip를 활용하여 지역의 날씨와 기상조건, 사용자가 입력하는 신체정보와 체형, 원하는 스타일을 모두 조합하여 최적의 패션 조합을 이미지로 추천해 드립니다.
사용자는 ai가 제공하는 추천 패션 이미지를 계속해서 받아보며, 마음에 드는 패션이 등장하면 그대로 구매에 활용하시면 됩니다.
서비스 실사용은 약 10초 정도 소요되며, 무료입니다. 아래 링크에서 마음 편히 체험해보세요.
v1
chatGPT를 이용한 추천 시스템구현
sanghui48-yuja-kdt-v1-4s0rej.streamlit.app
서비스 구축 과정의 파이프라인
맡은 역할
팀원 : 5 명
역할 구성 : streamlit 을 통한 메인 프론트엔드 구성 1명(+ 팀원 협업), 프롬프트 엔지니어링 3명, API를 활용한 백엔드 구성 1인 (+ 팀원 협업)
전체적인 서비스 워크플로우 구상, 프롬프트 엔지니어링, 날씨 api를 통한 날씨정보 수집 파이프라인 구축 보조, 전체적인 개발 과정 정리 및 임무분배
개발시 고려 사항
docs 링크 (각 문제들에 대한 세부 계획 사항들이 더 자세하게 기록되어 있습니다)
프롬프트 코딩
- chat_gpt
1.출력 결과가 고정적 패턴으로 출력되도록 구성 (전처리 편의)
2.정보끼리의 간섭이 없도록 구성 (특정 조합으로 에러를 내지 않도록)
3.불필요한 정보는 제외하도록 구성 (특정 브랜드명, 사이즈 정보)
- You should recommend one item for each category(outer, top, bottom, shoes, accesories) and match well with each other. I am {150}cm, {45}kg, {15} years old {woman}. My body shape is {oval}. I like {streat} style.
It's cloudy and the temperature is between {21}°C~{39}°C. The probability of precipitation is {80}%. Recommend fashion with color without brand or size.
You should reply only to the items you recommend in 1 sentence without any special symbol or number, and not to reply otherwise.
- Stable_Deffusion
1.출력 이미지의 퀄리티 보장
2.전신사진, 인물의 이미지에 의상의 이미지가 좌우되지 않도록 모델 선정
3.토큰 길이 조절
- ultra detail, ultra realistic, 8K, 3D, natural light, photorealism::
===========================================================
남자 : handsome 추가
여자 : beautiful 추가
나이, 키, 몸무게, 성별, well-proportioned, 체형, fashion model, 스타일.
===========================================================
Chat GPT 추천정보
바디 타입 & 스타일 타입
수집된 타입 종류 중, 일반적으로 사용되는 5개의 타입 최종 선정
- '삼각형 체형' : 'triangle body type'
- '역삼각형 체형' : 'inverted triangle body type',
- '직사각형 체형' : 'rectangle body type',
- '타원형의 체형' : 'oval body type'
- '호리병 체형' : 'hour glass body type',
바디 타입은 좀 더 다양하고 세부적인 세팅이 가능하도록 선정. 이를 통해, 사용자가 각 상황적 목적에 맞게 다양한 스타일의 옷을 선택추천받을 수 있음.
- '아메리칸 케주얼': 'American casual',
- '케주얼': 'casual',
- '시크': 'chic',
- '댄디' : 'dandy',
- '포멀': 'formal' ,
- '걸리시': 'girlish',
- '골프': 'golf',
- '홈웨어': 'homeware',
- '레트로': 'retro',
- '로맨틱': 'romantic',
- '스포츠': 'sports',
- '스트릿': 'street',
- '고프코어': 'gorpcore',
날씨 정보 데이터
<고러사항>
1.사용자의 지역날씨 정보를 활용하여 추천.
- (추가 고민 필요 사항)-> 이걸 사용자가 직접적으로 알 수 있는 수단이 있을까?
2.사용자가 위치정보를 직접 입력하지 않더라도 가능하도록 함
- 사용자 IP 정보를 활용한 사용자 지역 추정
- 지역에 대한 위도, 경도 매핑
- 사용자 위치 기반 기상청 날씨예보 정보 수집
- 기상청 제공 데이터 중 실제 활용 가능한 데이터 선정
아웃라이어 처리
<고려사항>
1.예상 내의 에러
- <Null> 값에 의한 프롬프트
- 비정상적인 조건입력에 의한 추천불가
2.예상 외의 에러
- 예상 외의 상황에 의해 반복적으로 추천답변이 생성되지 않는 경우
- API 사용량 제한
Chat GPT 답변에 대한 사전 전처리
<고려사항>
1.chat gpt의 모든 답변 패턴에 대한 전처리 대응이 가능하도록 함
- 프롬프트 엔지니어링을 통한 답변 일관화
- 모든 대답 패턴 수집, 모든 대답 패턴에 대응되는 코드로 구성
2.Stable Diffusion 프롬프트에 바로 넣을 수 있도록 처리 필요
- Stable Diffusion 인풋 타입을 고려하여 ‘,’(콤마) 로 정보 연결
Stable Diffusion 프롬프트 구성
<고려사항>
1. INPUT 형식에 대한 고려
- 기존에 자주 사용되는 Stable Diffusion 키워드 정리 문서 참고
- 실제 사용자 정보와 함께 섞었을 때, 최적의 output을 생성하도록 키워드 조합 및 결과물 비교
- 최종 사용 키워드 선정, 사용자 정보 및 gpt 답변 서순 조합 고려
※ 참고사항 : 날씨 정보는 Stable Diffusion에 사용되지 않음
배포
EC2 나 개인서버와 같은 방안은 현실적으로 불가능 (구현의 복잡성, 추가 요금 부과)
github 와 streamlit 을 통한 간단한 배포방식 선정
<고려사항>
1.streamlit 의 제한으로 인한 1페이지 내의 화면 구성
- 메인 서비스를 중점적으로 제공
- 세부 서비스는 메인 서비스형식에서 크게 달라지지 않는 선에서 구성 (select box, input box)
2. api_key 보안
- streamlit 의 secret 기능 활용