올리브영 테크블로그 포스팅 AWS Bedrock과 Claude 3.5 Sonnet을 활용한 자동 상품 이미지 검수 시스템 구축기
AI

AWS Bedrock과 Claude 3.5 Sonnet을 활용한 자동 상품 이미지 검수 시스템 구축기

이상한 나라의 앨리스가 된 것만 같았던 올리브영의 이미지 품질 관리 프로젝트 이야기

2024.09.11

안녕하세요! 올리브영 카탈로그 서비스개발팀에서 AI와 씨름 중인 루시🐰입니다.

"이미지 검수에 AI를 적용한다고요? 그게 가능해요?" 🤔

이런 질문에 "네, 가능합니다!"라고 자신 있게 대답할 수 있게 된 지 얼마 안 됐어요. 사실 저도 얼마 전까지만 해도 AI라고 하면 '알파고'나 'GPT' 정도만 떠올리던 평범한(?) 개발자였거든요.

그런데 이번에 운 좋게 "AI 이미지 검수 시스템" 프로젝트에 참여하게 되면서, AI의 세계에 첫발을 내딛게 됐습니다. 마치 이상한 나라의 앨리스처럼 말이죠! 🕳️🐇

이상한나라 시작부분
AI로 만든 이상한 나라의 엘리스의 시작부분 이미지

하지만, 이 여정이 항상 장밋빛은😅 아니었어요.

AI가 가끔 엉뚱한 답변을 내놓을 때면 '이게 정말 인공지능이 맞나?' 하는 의문이 들기도 했고, 프롬프트 엔지니어링이라는 새로운 기술을 익히느라 머리🤯를 싸매기도 했죠.

그래도 이 과정에서 AI의 현실적인 모습, 그리고 그 잠재력을 직접 경험할 수 있었습니다. 오늘은 우리 팀이 최근에 시작한 이 신기한(그리고 때로는 좌절한) 프로젝트에 대해 여러분께 들려드리려고 합니다.

AI가 어떻게 올리브영 이미지를 검수하는지, 그 과정에서 우리 팀이 어떤 재미있는(때론 머리 아픈) 경험을 했는지 함께 들여다볼까요?

자, 이제 올리브영의 AI 도전기를 시작해 볼게요. 흥미진진한 이 여정에 여러분을 초대합니다! 🚀

🕳️ 토끼굴로 들어가기: 프로젝트 배경


다양한 상품 이미지가 화면에 표시된 모니터 앞에서 고민하는 올리브영 여성 개발자를 AI가 만듦
AI로 만든 올리브영 개발자 - 이미지 품질 관리의 고민

올리브영은 오프라인 매장, 자사 온라인몰, 그리고 여러 외부 플랫폼을 통해 고객과 만나고 있습니다. 이 과정에서 각 플랫폼의 상품 이미지 기준을 충족해야 하는 과제가 생겼죠. 특히 네이버 쇼핑, 구글과 같은 외부 플랫폼은 각자의 이미지 가이드라인이 있고, 이를 준수해야만 올리브영 제품을 정상적으로 노출하여 판매할 수 있기에, 이 문제가 중요한 이슈로 대두되었습니다.

저는 카탈로그 서비스개발팀에서 올리브영 상품을 온라인에 등록하고 관리하는 시스템을 개발하고 있습니다. 우리 팀은 다양한 플랫폼에 올리브영 상품을 효과적으로 올리고 관리하는 일을 담당하고 있죠. 그래서 각 플랫폼의 이미지 기준에 맞추는 것이 우리의 중요한 과제가 되었습니다.

이상한 나라의 AI: 해결책 모색 💡


우리 팀은 수동 이미지 검수 과정에서 큰 어려움을 겪었습니다. 상품 이미지를 등록하는 담당자들이 많다 보니, 각자 등록 매뉴얼을 다르게 해석하고 적용하는 문제가 발생했죠. 게다가 처리해야 할 이미지의 양도 방대해서, 일관성 있고 효율적인 검수가 힘들었습니다.

이러한 한계를 극복하고자 우리 팀은 AI를 활용한 자동 이미지 검수 시스템 도입을 검토했습니다. 여러 옵션을 비교한 끝에, AWS Bedrock과 Claude 3.5 Sonnet 모델을 선택하게 되었습니다.

🎩 미치광이 모자 장수의 티 파티: AI 모델 비교 및 선택


우리는 AWS Bedrock의 Claude와 Azure의 ChatGPT를 비교 분석했습니다. 주요 비교 포인트는 다음과 같습니다.

  1. 🎯 정확도: 동일한 프롬프트와 조건을 적용하여 이미지 분류 정확도를 평가

    • Claude 3.5 Sonnet: 대부분의 케이스에서 분류 목표 달성
    • Claude 3 Haiku: 일부 케이스에서 분류 목표 미달성
    • GPT-4: 대부분의 케이스에서 분류 목표 달성, 일부 복잡한 사례에서 오류 발생
    • GPT-3.5 Turbo: 이미지 분석 기능 미지원
  2. 💰 비용 (1,000 토큰 당):

    • Claude 3.5 Sonnet: 입력 $0.003, 출력 $0.015
    • Claude 3 HAIku: 입력 $0.00025, 출력 $0.00125
    • GPT-4: 입력 $0.005, 출력 $0.015
    • GPT-3.5 Turbo: 입력 $0.0005, 출력 $0.0015
  3. 🔧 인프라 통합:

    • AWS Bedrock: 기존 AWS 자원과 SDK 사용이 용이
    • ChatGPT: 별도의 API 설정, 관리 및 모니터링 필요

결과적으로, 정확도와 AWS 인프라와의 통합 용이성을 고려하여 Claude 3.5 Sonnet 모델을 선택했습니다. 🏆

거울 나라의 시스템: 구조 설계 🏗


간단한 시스템 아키텍처 다이어그램
AI 이미지 검수 시스템 아키텍처

우리의 시스템은 다음과 같이 구성되어 있습니다:

  • 🖼️ 이미지 업로드 서비스
  • 🔬 이미지 분석 서비스
  • 📊 결과 처리 서비스
  • 🗄️ 데이터 관리 서비스

🐰 토끼굴 더 깊이 들어가기: Claude 3.5 Sonnet 모델 구현


프롬프트 엔지니어링

우리는 다음과 같은 전략으로 프롬프트를 최적화했습니다:

  1. 명확한 지시 사항 작성
  2. 구체적인 예시 제공
  3. 검사 우선순위 설정
  4. 예외 상황 고려
  5. 일관된 JSON 응답 포맷 설정

이미지 분석 기준

기준 설명 예시 이미지
🚫 불필요한 엠블럼, 로고, 합성 이미지 배제 화장품 외에 엠블럼, 로고, 합성 이미지가 있는 경우 엠블럼,로고,합성 이미지 예시
🗨️ 원제품 패키지에 없는 텍스트 오버레이 금지 패키지에 없는 텍스트 오버레이가 있는 경우 텍스트 오버레이 예시
🖼️ 추가된 테두리나 프레임 금지 테두리나 프레임이 있는 경우 테두리/프레임 예시

통과 되어야 하는 이미지 예시

설명 이미지
상품의 주요 특징이 잘 드러난 이미지, 상품과 패키지 외에 다른 요소가 없는 이미지 통과 이미지 예시

😺 체셔 고양이의 미소: AI의 예측할 수 없는 결과를 프롬프트로 통제 하기


하지만 우리는 곧 체셔 고양이의 장난 같은 상황에 직면했죠. 😸

같은 이미지, 같은 프롬프트, 같은 설정... 그런데도 매번 다른 결과! 🎭

마치 사라졌다 나타나는 체셔 고양이처럼, AI의 결과도 예측할 수 없었습니다. 우리는 프롬프트를 이리저리 바꾸는 데 끝없는 시간을 소비했죠. 🕰️🔄

이상한나라 엘리스의 체셔 고양이
AI 만든 이상한 나라의 엘리스의 고양이가 연기 속으로 사라져서 엘리스의 등 뒤에서 나타나는 그림

그러나 결국 우리는 해결책을 찾아냈습니다! System Prompt의 세심한 조정과 Temperature 설정의 최적화를 통해, 체셔 고양이의 미소처럼 불안정했던 AI의 출력을 안정적으로 통제할 수 있게 되었습니다. 🎩✨

AI 모델의 성능을 최적화하기 위해 다양한 설정을 실험했습니다. 특히 System Prompt, Temperature, Top-p, Top-k 값의 조정이 중요했습니다.

모델 설정 비교

설정 설명 초기값 프로젝트 설정 값
📜 System Prompt AI의 역할과 태스크를 정의 사용하지 않음 "당신은 올리브영의 상품 이미지 검수 전문가입니다..."
🌡️ Temperature 출력의 무작위성 조절 (0-1) 1 0
🎲 Top-p (핵 샘플링) 확률 분포의 상위 p% 토큰만 고려 1 0.1
🔝 Top-k 가장 가능성 높은 k개의 토큰만 선택 설정하지 않음 1

System Prompt의 중요성

우리는 이미지를 분석하는 싱글턴 서비스를 개발했습니다. 초기에는 System Prompt 없이 AI와 대화를 시도했지만, 4번 중 1번꼴로 결과가 달라지는 문제가 있었습니다. AWS 지원팀의 조언으로 System Prompt를 도입한 후, AI의 응답이 훨씬 더 안정적이고 목적에 부합하게 되었습니다.

시스템 프롬프트는 AI에 다음과 같은 정보를 제공합니다.

  1. 역할 정의: AI에 '이미지 검수 전문가'라는 특정 역할을 부여합니다.
  2. 문맥 제공: 올리브영의 이미지 가이드라인과 같은 중요한 배경 정보를 AI에 제공합니다.
  3. 일관성 유지: 모든 대화에서 AI가 일관된 방식으로 응답하도록 합니다.
  4. 목적 집중: AI가 이미지 분석이라는 주요 태스크에 집중하도록 유도합니다.

이러한 작용으로 인해 AI의 응답 일관성이 크게 향상되어, 우리 서비스의 신뢰도와 효율성이 개선되었습니다.

👑 하트 여왕의 명령: 검수 결과 🛠️


테스트 결과

  • 타깃 대상 (44개 이미지):

    • 전체 정확도: 100%
    • 가이드 미준수 검출률: 100%
  • 전체 POC 대상 (109개 이미지):

    • 전체 정확도: 90%
    • 가이드 미준수 검출률: 97%

오류 분석 및 개선 방안

AI가 자주 범한 오류 중 하나는 상품 이미지와 엠블럼을 구분하지 못하는 것이었습니다. 엠블럼이란 상품 사진 위에 붙은 작은 배지 같은 이미지입니다. 보통 오른쪽 위에 있고 마케팅 관련 정보를 보여줍니다. AI는 가끔 이 엠블럼을 상품의 일부로 착각하거나, 반대로 상품 일부를 엠블럼으로 오해했습니다. 이를 개선하기 위해 다음과 같은 방안을 적용했습니다:

  1. 프롬프트 최적화: 엣지 케이스 처리 강화
  2. 인간-AI 협업 모델: 낮은 신뢰도 결과에 대한 수동 검토 프로세스 도입 🤝

최종 운영 대상 상품 검증 결과

  • 최종 운영 대상 상품 (2,523개 이미지):
    • 전체 정확도: 약 99.8% (약 2,518개 이미지)
    • 가이드 미준수 검출률: 약 99.8% (약 2,518개 이미지)
    • 검증 오류: 약 5개 이미지 (통과해야 하는데 미통과되거나, 미통과해야 하는데 통과된 경우)

시간은 멈추지 않는다: 확장성 및 최적화 🚀


비용 효율성

  1. 동일 이미지 재검증 방지
  2. 캐싱 전략을 통한 중복 이미지 분석 방지

처리 속도 최적화

⚡ 동일 이미지에 대한 빠른 응답 제공

🏰 하트 여왕의 성 지키기: 보안 및 규정 준수


  1. 🔐 IAM Task Role을 통한 세밀한 접근 제어
  2. 🛡️ 최소 권한 원칙 적용
  3. 👥 역할 기반 접근 제어(RBAC) 구현
  4. 🔒 민감정보 제거: 이미지 해시값과 온라인 상품 번호만 저장
  5. 🚧 프롬프트 인젝션 방지 (싱글턴)

트럼프 병사들의 감시: 모니터링 및 유지보수 🔍


  1. 📊 Data Dog을 활용한 중앙 집중식 로깅
  2. 🧪 A/B 검증을 통한 프롬프트 최적화
  3. 📝 사용자 피드백 수집 및 반영 프로세스

🌈 이상한 나라를 여행하며: 결론 및 향후 계획 🎉


프로젝트 성과

  • 📉 가이드라인 위반: 도입 이전 대비 감소
  • ⏱️ 처리 시간: 이미지 업로드부터 검수 완료까지 5초 이내
  • 🎯 정확도: 95% 이상의 정확한 가이드라인 준수 여부 판단
  • 💼 매출 영향: 플랫폼 제재로 인한 매출 손실 90% 이상 방지

향후 개선 계획

  • 🔧 Prompt 개선을 위한 검사 툴
  • 📈 지속적인 모델 성능 모니터링 및 최적화
  • 🖼️ 다양한 이미지 유형에 대한 대응력 강화:
    • 광고성 문구가 포함된 이미지 처리
    • 배경 요소와 제품 구분 능력

이번 프로젝트를 통해 AI 기술의 실제 비즈니스 적용 가능성을 확인했습니다. 마치 이상한 나라의 앨리스가 신기한 물건을 발견한 것처럼 놀랍고 흥미진진했죠! 🎩✨

앞으로도 올리브영은 고객에게 더 나은 서비스를 제공하기 위해 최신 기술을 열심히 연구하고 적용할 거예요. AI 기술은 하루가 다르게 발전하고 있지만, 우리 팀도 이 빠른 변화에 뒤처지지 않으려 노력하고 있답니다. 마치 시간에 쫓기는 토끼처럼 계속 배우고 적용하는 중이에요! 🐰⏱️

이 신나는 AI 여정에 함께하고 싶으신 분들! 우리와 함께 일하며 올리브영의 이상한 나라를 탐험하고 싶다면 언제든 연락해 주세요. 여러분의 아이디어로 우리의 모험이 더욱 흥미진진해질 거예요. 많은 관심 부탁드려요! 🌟

올리브영 지원하기

다음 포스팅에서는 AI 모델의 성능 개선 과정과 실제 적용 시 마주친 도전 과제들에 대해 더 자세히 다루도록 하겠습니다. 그때 뵙겠습니다! 🐰

AIImage ProcessingAWS Bedrock
올리브영 테크 블로그 작성 AWS Bedrock과 Claude 3.5 Sonnet을 활용한 자동 상품 이미지 검수 시스템 구축기
🐰
루시 |
Back-end Engineer
Let's get it done!