AWS 기술 블로그
Clothbox의 Amazon Bedrock을 활용한 AI 패션 스캐너 구현 사례
Clothbox는 패션과 기술의 융합을 통해 사용자의 라이프스타일에 새로운 변화를 이끌어가는 패션테크 스타트업입니다. Clothbox는 누구나 자신의 스타일을 더 쉽게 관리하고 즐길 수 있도록 돕는 것을 목표로 하며, 패션을 일상에서 더 간편하고 직관적으로 즐길 수 있는 솔루션을 제공하는 데 집중하고 있습니다. 이번 AI 패션 스캐너는 이러한 비전을 구체화하는 첫걸음으로, 사용자의 패션 관리에 새로운 가능성을 제시하였습니다.
패션은 개인의 일상과 스타일을 표현하는 중요한 요소이지만, 바쁜 현대 사회에서 자신의 패션을 체계적으로 관리하고 기록하는 것은 쉽지 않습니다. 이를 해결하기 위해 클로즈박스는 사용자가 사진 한 장만으로 자신의 패션을 효율적으로 관리하고 기록할 수 있는 AI 패션 스캐너를 개발했습니다.
이 블로그에서는 AI 패션 스캐너가 어떻게 사용자의 패션을 관리하고 기록하는지, Amazon Bedrock과 AWS Step Functions 같은 AWS 서비스를 활용해 이 솔루션을 구현한 이유와 그리고 그 상세한 구현 과정을 공유합니다.
AI 패션 스캐너 소개
AI 패션 스캐너는 사용자가 원하는 패션 아이템을 효율적으로 관리할 수 있는 생성형 AI 기반의 솔루션입니다. 사용자가 일상에서 찍은 패션 사진을 업로드하면, AI는 사진 속 모든 의류 아이템들을 자동으로 인식하고 색상, 소재, 스타일 등의 세부 정보를 추출합니다. 이 정보를 바탕으로 AI는 각 아이템을 체계적으로 관리할 수 있도록 돕고, 더 나아가 그날의 스타일을 분석해 자동으로 스타일 노트를 작성해줍니다.
현재 클로즈박스의 많은 사용자가 패션 스캐너를 통해 사진 한 장으로 자신의 패션 스타일을 기록하고, 보유하고 있는 패션 아이템들을 업데이트 하여 더욱 효율적이고 체계적으로 자신의 패션을 관리하고 있습니다.
솔루션 및 구현 내용
AI 패션 스캐너는 Amazon Bedrock을 기반으로, Anthropic Claude 3.5 Sonnet 모델과 Amazon Titan Image Generator G1 모델을 사용하여 구현되었습니다. 사용자가 업로드한 패션 사진을 Claude 3.5 Sonnet을 통해 분석하여 의류 아이템의 색상, 소재, 스타일 등의 세부 정보를 추출하고, 이를 바탕으로 Amazon Titan Image Generator 모델이 3D 아이콘을 생성합니다. 또한 Claude 모델에 업로드된 이미지를 분석해 그날의 스타일 노트를 자동으로 작성합니다. 모든 데이터는 Amazon S3에 안전하게 저장이 되며, 사용자는 애플리케이션을 통해 이 모든 정보를 손쉽게 확인하고 관리할 수 있습니다.
솔루션 아키텍처
AI 패션 스캐너의 아키텍처 다이어그램이며, 이 아키텍처는 서비스 구성의 전반적인 흐름을 나타냅니다. 대표적인 두 가지의 플로우에 대해서 설명드리겠습니다.
1. 이미지 업로드 및 워크플로우 실행 플로우
단계 1: 사용자는 애플리케이션을 통해 OOTD (Outfit Of The Day) 이미지를 업로드 합니다.
단계 2: 업로드한 이미지는 Amazon S3에 저장됩니다.
단계 3: Amazon EventBridge를 통해 AWS Step Function Fashion Scanner 워크플로우를 실행합니다.
2. AI Fashion Scanner 워크플로우
단계 1: S3에 저장된 이미지를 AWS Lambda와 Amazon Bedrock – Claude 3.5 Sonnet 모델을 활용하여 분석하고, 각 의류 아이템을 분류하고 설명하는 텍스트 프롬프트 및 스타일 노트를 생성합니다.
단계 2: 아이템을 분류한 텍스트 프롬프트 목록을 AWS Step Functions의 MapState를 활용하여 다수 의류 아이템에 대한 처리를 시작합니다.
단계 3: 전달된 텍스트 프롬프트를 바탕으로 Amazon Bedrock – Titan Image Generator G1 모델을 통해 사진 속 의류 아이템을 대체하는 3D 아이콘이 생성됩니다. 이 아이콘은 Amazon S3에 저장됩니다.
단계 4: 전달된 텍스트 프롬프트를 바탕으로 의류의 색상, 소재, 스타일 등 세부 정보를 추출합니다.
단계 5: S3에 저장된 이미지 경로와 속성 정보를 Amazon DynamoDB에 저장합니다.
단계 6: 최종적으로 분석된 정보와 생성된 이미지, 그리고 스타일 노트는 애플리케이션을 통해 사용자에게 제공됩니다.
워크플로우 및 구현 상세
구현 상세 1: 이미지 분석, 프롬프트 생성, 스타일 노트 자동 생성
AI 패션 스캐너의 핵심 기능 중 하나는 이미지 분석입니다. 우리는 Amazon Bedrock과 Anthropic Claude 3.5 Sonnet을 활용하여, 사용자가 업로드한 이미지에서 의류 아이템을 인식하고, 이를 텍스트 프롬프트로 변환하는 과정을 자동화했습니다. 예를 들어, “파란색 카디건”과 같은 프롬프트가 생성됩니다.
그리고, 업로드된 사진의 배경 및 스타일을 총체적으로 분석하여, 그날의 패션 스타일과 장소에 대한 스타일 노트를 자동으로 작성합니다. 예를 들어, “이 스타일은 도심의 캐주얼한 분위기에 어울리며, 편안한 일상 복장으로 적합합니다.”와 같은 노트를 생성합니다.
[프롬프트]
You will be give a outfit photo of a person, You have to rewrite <prompt> by replacing <clothes description> of the <prompt>, like below example. Focus only on items and not the person. Think step by step. 1. First find all fashion items. 2. For each items, try to find all the <details> following. Fabric, Color, Pattern, Style, Fit, Man or Women or Kids, Cut, Neckline, Sleeve Length, overall length, Closure, Details, Trim, Collar, Hem, Lining, Embellishments, Functionality, Brand Logo/Label. Gender and other things. </details> Fit is important. 3. With the <details> above rewrite the <clothes description> for each items. Be as descriptive as explaning to a person who haven't seen this item, but so detailed that they can draw the item exactly like the real thing. Add more details if not enough. 4. Keep the total length of the <clothes description> under 355 chars. 5. Write a comprehensive fashion diary entry in Korean that includes item descriptions, mood, and impressions, in a style that sounds like it was written by the user. Include relevant emojis to enhance the mood and expressions. Keep it about 3 lines long. Add 3 keywords in the form of hashtags at the end. Use the example as a reference. 6. Provide the output as a JSON object with two keys: "prompts" and "diary". The "prompts" key should contain an array of the detailed item descriptions. The "diary" key should contain the fashion diary entry. Give me only JSON with no commentary <prompt> 3d Icon of a <clothes description> normal length, round neck neckline, long sleeve, normal silhouette, knit textile, plain print, casual style, light blue color, cardigan <clothes description> Only front side. Flat color and lighting. Full shot. Center. Digital, white background, design asset </prompt> <reference> 오늘은 상쾌한 봄 공기를 느끼며 시크하면서도 편안한 차림을 선택했어. 아이보리 트위드 재킷이 캐주얼한 스키니진에 우아함을 더해주었고, 밝은 노란색 플랫 슈즈가 발랄한 포인트를 더해줬어.💛 넉넉한 화이트와 블랙 토트백은 도시를 탐험하면서 필수품을 모두 담기에 완벽했어. 이 옷차림 덕분에 하루 종일 정돈된 기분을 느끼고 어떤 일도 준비된 느낌이었어! #봄시크 #캐주얼우아함 #노란포인트 </reference>
[결과물]
{ "prompts": [ "3d Icon of a low-top, lace-up sneaker with a round toe, canvas upper in off-white color, thick rubber sole in white with a gum bottom, casual style shoe. Only front side. Flat color and lighting. Full shot. Center. Digital, white background, design asset", ... ], "diary": "오늘은 도시 속 자연을 느끼며 편안하면서도 세련된 룩을 선택했어. 넉넉한 그레이 스웨트셔츠가 편안함을 주는 동시에 블랙 미디 스커트로 단정함을 더했지. 화이트 스니커즈는 활동성을 높여주면서 전체적인 룩의 밸런스를 잡아줬어. 🌿 이런 차림으로 도시 숲길을 걸으니 마음까지 상쾌해지는 기분이야! 🍃 #도시숲패션 #편안한세련미 #그레이앤블랙" }
구현 상세 2: 3D 아이콘 생성
3D 아이콘 생성은 텍스트 프롬프트를 기반으로 AWS Lambda를 통해 Amazon Bedorck의 Amazon Titan Image Generator G1 모델에 전달되어 수행이 됩니다. 이 과정에서 생성된 이미지는 S3 버킷에 저장됩니다.
[프롬프트]
"3d Icon of a low-top, lace-up sneaker with a round toe, canvas upper in off-white color, thick rubber sole in white with a gum bottom, casual style shoe. Only front side. Flat color and lighting. Full shot. Center. Digital, white background, design asset"
[결과물]
구현 상세 3: 의류 속성 정보 추출
의류 속성 정보는 텍스트 프롬프트를 기반으로 새로운 프롬프트를 구성합니다. 그리고, Lambda 함수에서 AWS Bedrock의 Claude 3.5 Sonnet 을 활용하여 의류의 색상, 소재, 스타일 등 세부 정보가 자동으로 추출됩니다. 이 과정에서 추출된 속성정보는 Amazon DynamoDB를 통해 항상 확인할 수 있습니다.
[프롬프트]
<role>You are an expert in fashion. You will be given <explanation> of a clothings. Your task is to categorize each clothing by selecting category, subcategory, and attribute information in a structured JSON format, using only the <categories> and <attributes> described below. If there are no options that match exactly, replace with closest one. </role> Give the description, please categorize the category, subcategory, and attributes of each clothing item in JSON format, following these guidelines and options below. To do this, follow this step. <explanation>{prompt}</explanation> 1. Extract the subcategory, then extract the corresponding category. In the <categories>, it is wrtten in Category and its corresponding subcategories format. 2. Extract attributes accordingly, matching with the options below, If you match with options, leave blank. 3. The categories and subcategories must follow the provided structure and options give in <attributes> only. 4. The <attributes> consist of attribute groups and their respective values, where multiple values can be selected, and If there are no options that match exactly, replace with closest one. 5. attributes must follow the provided structure and options only. 5. attributes must follow the provided structure and options only. <categories> {...} </categories> <attributes> {...} </attributes>
[추출된 JSON 정보]
{ "category": "SHOES", "subcategory": "SNEAKERS", "attributes": { "Textile": "Cotton", "Style": "Casual", "Color": "White", "Season": ["Spring", "Summer", "Fall"], ... } }
[결과물]
AI 패션 스캐너는 사용자가 업로드한 사진을 분석하여 각 의류 아이템의 세부 정보를 추출하고, 이를 바탕으로 3D 아이콘과 스타일 노트를 자동으로 생성합니다. 최종적으로, 이러한 분석 결과와 생성된 콘텐츠는 어플리케이션을 통해 사용자에게 제공되어, 사용자는 자신의 패션을 손쉽게 기록하고 관리할 수 있습니다.
Clothbox팀이 AWS의 생성형 AI 기술을 선택한 이유
1. Amazon Bedrock
Amazon Bedrock을 선택한 이유는 스타트업의 입장에서 효율성과 협업 측면에서 매우 유리하기 때문입니다. 스타트업은 다양한 Large Language Model (LLM) API 서비스를 개별적으로 가입하고 테스트하는 데 있어 시간적 부담이 큽니다. 하지만 Amazon Bedrock은 업계 최고 수준의 다양한 LLM들과 바로 연결할 수 있으며, 이를 구현하는 데 필요한 코드 작성도 매우 간단합니다. 이러한 이유로, 개발 리소스를 최소화하면서도 최고 성능의 모델들을 활용할 수 있습니다.
또한, Amazon Bedrock은 내부 비개발자 멤버들이 쉽게 접근할 수 있도록 직관적인 플레이그라운드를 제공합니다. 이를 통해 팀원들이 모델을 직접 테스트하고 피드백을 주는 과정이 원활하게 이루어져, 협업 환경에서 매우 큰 장점을 제공합니다. 결과적으로, Bedrock을 활용한 모델 선택은 팀 전체의 생산성을 높이고, 기술적인 장벽을 낮추어 주는 최적의 선택이었습니다.
2. Anthropic Claude 3.5 Sonnet
Claude 3.5 Sonnet 모델을 선택한 이유는 전반적인 성능이 가장 중요했기 때문입니다. Amazon Bedrock을 통해 다양한 LLM 모델을 손쉽게 테스트해 볼 수 있었고, 내부에서 설정한 평가 기준에 따라 가장 우수한 성능을 보여준 모델이 바로 Claude 3.5 Sonnet이었습니다. 이 모델은 이미지내의 정보 추출 및 텍스트 생성의 정확성과 일관성에서 뛰어난 성과를 보였으며, 특히 한국어 처리에 있어서도 강점을 나타냈습니다. 따라서, 이 모델을 선택함으로써 서비스의 질을 높이고, 사용자에게 보다 풍부하고 자연스러운 경험을 제공할 수 있었습니다.
3. AWS Step Functions
AWS Step Functions을 선택한 이유는, 현재 제공중인 클로즈박스 서비스의 아키텍처 전환 필요성에 대응하기 위해서입니다. 현재 서비스는 다양한 도메인의 기능들이 하나의 서버 프로젝트로 구성되어 있습니다. 하지만 기능 규모가 점차 증가하면서, 마이크로서비스 아키텍처(Microservices Architecture, MSA)로의 전환이 필요하다는 판단을 하게 되었습니다.
이 과정에서 작은 단위의 기능들을 위해 별도의 인프라를 구축하는 것은 스타트업에게 큰 부담이 될 수 있습니다. 이 때문에, 서버리스 아키텍처 (Serverless Architecture)를 도입하려 했고, 그 중 AWS Step Functions은 매우 적합한 선택이었습니다. Step Functions은 ASL(Amazon States Language)과 GUI를 활용해 워크플로우를 시각적으로 구성하고 디버깅할 수 있어 관리가 용이합니다. 또한, Standard와 Express 두 가지 유형을 제공함으로써 상황에 맞게 유연하게 선택할 수 있어, 다양한 요구사항을 충족시킬 수 있는 최적의 솔루션이었습니다.
이와 같은 이유들로, AWS Step Functions은 클로즈박스 서비스의 MSA 전환 과정에서 중요한 역할을 담당하게 되었습니다.
결론
AI 패션 스캐너는 AWS의 강력한 인프라와 도구들을 활용하여 구현된 혁신적인 솔루션입니다. 이 솔루션은 사용자가 자신의 패션 스타일을 보다 효율적으로 관리할 수 있도록 돕고 있으며, 매일의 스타일 노트를 자동으로 작성하여 패션 기록을 쉽게 할 수 있게 합니다. AWS를 통한 AI 솔루션 개발에 관심 있는 분들에게 유익한 참고 자료가 되기를 바라며, AI 패션 스캐너는 Clothbox 앱을 설치해서 바로 사용 해보실 수 있습니다.