이미지가 라벨과 일치하지 않을 때 — 파트 1: CLIP과 BLIP을 사용하여 제품 불일치 탐지하기
요약
이커머스 플랫폼에서 발생하는 제품 이미지와 텍스트 설명 간의 불일치 문제를 해결하기 위한 자동화 시스템 구축 방법을 다룹니다. CLIP과 BLIP 모델을 활용하여 브랜드, 사이즈, 변형 등의 불일치를 탐지하는 베이스라인 구축 과정을 소개합니다.
핵심 포인트
- 이커머스에서 이미지-설명 불일치는 반품률 상승과 고객 신뢰 저하의 주요 원인임
- 대규모 마켓플레이스에서는 수동 검토가 불가능하므로 자동화된 탐지 시스템이 필수적임
- CLIP 모델을 활용하여 이미지와 텍스트 간의 유사도를 측정하는 베이스라인 구축
- 브랜드, 사이즈, 제품 변형 등 미세한 차이를 잡아내는 것이 기술적 핵심임
이 글은 온라인 마켓플레이스를 위한 자동화된 제품 이미지-설명 불일치 탐지기를 구축하는 2부작 시리즈 중 파트 1입니다. 파트 1에서는 문제 상황, CLIP 베이스라인(baseline), 그리고 BLIP을 다룹니다. 파트 2에서는 이후 진행된 OCR + 시각적 질의응답 (Visual Question Answering) 파이프라인을 다룹니다.
너무 늦기 전까지는 아무도 알아차리지 못하는 문제
특정 브랜드의 우유를 온라인으로 쇼핑한다고 상상해 보세요. 이미지는 Prairie Farms 팩을 보여주는데, 설명에는 Organic Valley라고 적혀 있습니다. 또는 이미지는 일치하지만 크기가 틀릴 수도 있습니다. 당신은 망설이고, 스스로를 의심하며, 어쩌면 장바구니를 통째로 비워버릴지도 모릅니다.
Prairie Farms Whole Milk — 이 글 전반에 사용된 1쿼트(quart) 팩
이러한 작은 의구심의 순간은 예외적인 사례가 아닙니다. 이는 이커머스(e-commerce)에서 가장 흔한 페인 포인트 (pain point) 중 하나입니다. 제품 이미지와 텍스트 설명이 일치하지 않을 때 발생하는 비용은 실질적입니다. 구매자는 신뢰를 잃고, 반품률은 상승하며, 플랫폼은 평판에 타격을 입습니다.
주요 마켓플레이스 전반에 걸쳐, 이미지와 설명 사이의 불일치는 누락되거나 불분명한 제품 정보와 더불어 고객 불만족의 주요 원인 중 하나로 꼽힙니다 [1]. Amazon에서는 리스팅과 실제 모습이 다른 제품으로 인해 상당한 비율의 반품과 불만이 발생합니다 [2]. eBay에서는 도착한 물건과 일치하지 않는 이미지로 인해 발생하는 분쟁을 구매자들이 자주 보고합니다 [1]. Instacart에서는 식료품 리스팅에 때때로 오래되었거나 잘못된 이미지가 포함되어 고객이 잘못된 품목을 선택하게 만드는데, 이는 특히 제품들이 시각적으로 유사할 때 문제가 됩니다 [3].
핵심적인 문제는 규모(scale)입니다. 대규모 마켓플레이스는 수백만 개의 상품 목록을 보유하고 있으며, 그중 상당수는 품질 관리(quality control)가 일관되지 않은 제3자 판매자에 의해 업로드됩니다. 이러한 규모에서 수동 검토를 수행하는 것은 불가능합니다. 필요한 것은 고객이 마주하기 전에 불일치하는 상품 목록을 안정적으로 표시(flag)할 수 있는 자동화된 시스템입니다.
이것이 제가 이번 프로젝트에서 해결하고자 했던 문제입니다.
이것이 보기보다 어려운 이유
언뜻 보기에 이미지를 설명과 매칭하는 것은 간단해 보입니다. 하지만 실제 제품 데이터는 기만적일 정도로 까다롭습니다:
- 브랜드 불일치 (Brand mismatches): 두 우유 팩은 모양과 색상이 거의 동일해 보일 수 있지만, 서로 다른 브랜드에 속할 수 있습니다. 그 차이는 전적으로 라벨 텍스트, 즉 작은 글꼴의 몇 픽셀 안에 존재합니다.
- 사이즈 불일치 (Size mismatches): "8 oz" 대 "16 oz"는 시각적으로 동일한 패키징을 보여줄 수 있으며, 라벨 뒷면의 작은 글씨에서만 차이가 납니다.
- 변형 불일치 (Variant mismatches): "가염 버터 (Salted butter)" 대 "무염 버터 (unsalted butter)" — 동일한 제품이지만 서로 다른 SKU이며, 고객에게는 의미 있는 차이입니다.
- 명백한 불일치 (Obvious mismatches): 버터 설명과 함께 제시된 닭가슴살 이미지 — 인간에게는 쉽지만, 시스템은 여전히 대규모 환경에서 이를 안정적으로 잡아내야 합니다.
전통적인 이미지 분류 (image classification) 또는 키워드 매칭 (keyword matching)은 앞서 언급한 세 가지 범주에서 한계에 부딪힙니다. 필요한 것은 이미지와 텍스트를 통합된 방식으로 이해하는 모델입니다.
1단계: 제로샷 베이스라인으로서의 CLIP
OpenAI가 개발한 **CLIP (Contrastive Language–Image Pretraining)**은 자연스러운 시작점이었습니다. CLIP은 수억 개의 이미지-텍스트 쌍을 통해 학습되어 공유 임베딩 공간 (shared embedding space)을 학습합니다. 이는 의미론적으로 관련된 이미지와 텍스트는 서로 가까워지고, 관련 없는 것들은 서로 멀어지게 되는 수학적 표현 방식입니다.
실제로 적용하면:
- 우유 팩 이미지와 "whole milk"라는 텍스트는 높은 코사인 유사도 (cosine similarity) 점수를 가질 것입니다.
- 동일한 이미지를 "a cat playing with a ball"과 쌍으로 묶으면 매우 낮은 점수를 가질 것입니다.
- 브랜드 오류, 사이즈 오류와 같은 미세한 불일치는 그 중간 어디쯤에 위치하게 됩니다.
구현 방법 (How it is implemented)
from transformers import CLIPProcessor, CLIPModel
from src.config import Config
from src.utils import fetch_image_from_url
...
유사도 점수는 다음과 같이 라벨 (label)로 매핑됩니다:
| 점수 (Score) | 라벨 (Label) |
|---|---|
| > 0.30 | 일치할 가능성 높음 (Likely match) |
| ... |
CLIP이 잘하는 것 — 그리고 한계점
여러 가지 설명(description)을 사용하여 Prairie Farms의 whole milk 이미지와 테스트한 결과입니다:
| 설명 (Description) | 점수 (Score) | 라벨 (Label) |
|---|---|---|
| One quart of whole milk from Prairie Farms (정확함) | 0.31 | 일치할 가능성 높음 (Likely match) |
| ... |
CLIP은 명백한 불일치를 확신을 가지고 잡아냅니다. 하지만 잘못된 브랜드와 잘못된 사이즈 모두 "불확실 (Uncertain)" 범주에 속합니다. 즉, CLIP은 제품 유형은 정확하게 인식하지만 브랜드와 수량의 차이는 놓칩니다. 이는 알려진 한계점입니다. CLIP은 설명을 전체론적 (holistically)으로 인코딩하기 때문에, "half gallon"과 같은 수량 단어나 "Organic Valley"와 같은 브랜드 이름이 명확한 불일치 신호를 트리거할 만큼 임베딩 (embedding)을 충분히 변화시키지 못할 수 있습니다.
CLIP은 중대한 불일치를 잡아내는 데 유용한 제로샷 (zero-shot) 베이스라인이지만, 유사도 점수 산출만으로는 미세한 제품 수준의 구분을 해내는 데 여전히 어려움이 있습니다.
2단계: 더 풍부한 이미지 이해를 위한 BLIP
자연스러운 다음 단계는 **BLIP (Bootstrapping Language-Image Pre-training)**이었으며, 이는 두 가지 새로운 능력을 가져왔습니다:
2a. BLIP-2를 이용한 이미지 캡셔닝 (Image Captioning)
임베딩을 직접 비교하는 대신, 캡셔닝 (captioning) 모델은 이미지에서 무엇을 _보고 있는지_를 설명할 수 있습니다. 이는 모델의 인지 과정을 명시적이고 디버깅 가능하게 만듭니다.
기존의 blip-image-captioning-base 모델은 텍스트가 많은 제품 이미지에서 심각한 실패 모드(failure mode)를 보였습니다. 즉, 굵은 글씨의 제품 라벨을 마주할 때 `
| 설명 | ITM 점수 | 라벨 |
|---|---|---|
| 일치 (Prairie Farms 우유) | 0.9998 | 일치 가능성 높음 |
| ... |
ITM은 명백한 불일치를 잡아내는 데 탁월합니다. 하지만 잘못된 브랜드와 잘못된 사이즈 모두 매우 높은 점수를 기록합니다. 즉, 모델이 세밀한 제품 매칭 (fine-grained product matching)에 있어 너무 관대하다는 의미입니다. 잘못된 브랜드임에도 0.79의 ITM 점수를 받는데, 이는 마켓플레이스 맥락에서 '일치 가능성 높음'으로 통과될 수 있는 수치입니다.
이는 근본적인 한계를 드러냈습니다. CLIP과 BLIP 모두 설명을 하나의 통으로 취급합니다. 두 모델 모두 브랜드, 사이즈, 변형 (variant)과 같은 개별 제품 속성들을 독립적으로 체계적인 검증을 수행하지 않습니다.
1단계와 2단계에서의 교훈
CLIP과 BLIP은 강력한 범용 모델이지만, 마켓플레이스에 필요한 구체적인 질문에 답하도록 설계되지는 않았습니다. 즉, _"이미지의 브랜드가 설명의 브랜드와 일치하는가? 사이즈가 일치하는가?"_와 같은 질문 말입니다.
필요한 것은 단순한 유사도 점수 (similarity score)가 아니라, **구조화된 특징별 비교 (structured, per-feature comparison)**입니다. 이러한 통찰이 파트 2의 접근 방식을 이끌어냅니다.
이것이 중요한 이유
제품 콘텐츠 품질은 지엽적인 문제가 아닙니다. 연구에 따르면 이미지와 텍스트 사이의 불일치는 고객의 신뢰도 저하 및 구매 의도 감소와 지속적으로 연결됩니다 [4]. 자동화된 콘텐츠 품질 도구에 투자하는 플랫폼은 전환율 (conversion rates), 반품률 (return rates), 그리고 판매자 책임성 (seller accountability) 측면에서 측정 가능한 개선을 경험합니다.
자동화된 불일치 탐지 파이프라인 (mismatch detection pipeline)은 인간의 검토를 대체하는 것이 아니라, 이를 확장(scale)하는 것입니다. 오류 가능성이 가장 높은 리스팅을 우선적으로 노출함으로써, 수동 감사 (manual auditing) 비용의 극히 일부만으로도 인간의 주의력을 가장 중요한 곳으로 집중시킬 수 있습니다.
다음 단계
파트 2에서는 자유 형식의 유사도 점수 산출 방식을 특징 사전 (feature dictionary) 접근 방식으로 대체합니다:
- **OCR (Optical Character Recognition, 광학 문자 인식)**은 제품 라벨에서 브랜드 이름, 크기, 변형(variants)을 텍스트로 직접 읽어냅니다.
- **VQA (Visual Question Answering, 시각적 질의응답)**는 OCR이 읽을 수 없는 시각적 특징(용기 유형, 제품 카테고리)에 대한 타겟 질문에 답하며, OCR이 스타일화된 글꼴이나 로고를 놓쳤을 때 보완책(fallback) 역할을 합니다.
- 모든 특징에 대한 **강력한 거부권 (hard veto)**을 적용하여, 단 하나의 속성이라도 틀리면 해당 리스팅에 플래그를 지정합니다. 마켓플레이스에서는 잘못된 사이즈가 잘못된 제품만큼이나 치명적이기 때문입니다.
→ 파트 2: OCR + VQA로 계속하기
코드 및 실험
이 프로젝트를 위한 모든 코드와 Jupyter 노트북은 GitHub에서 확인할 수 있습니다:
github.com/ebiarian/product-image-description-alignment
참고 문헌
- Buzzin Content. 91.3% of E-Commerce Brands Failed to Address Real Customer Pain Points. https://www.buzzincontent.com/story/91-3-e-commerce-brands-failed-to-address-real-customer-pain-points-in-pdp-content-odn-report/
- Besedo. The Effects of Fraud and Poor Content Quality on Online Marketplaces. https://besedo.com/blog/report-the-effects-of-fraud-and-poor-content-quality-on-online-marketplaces/
- Perpetua Help. Missing or Incorrect Product Images. https://help.perpetua.io/en/articles/4626446-missing-or-incorrect-product-images
- ScienceDirect. Inconsistencies between images and text in online shopping.
ScienceDirect의 해당 링크는 논문 초록(abstract) 페이지로, 직접적인 텍스트 본문을 포함하고 있지 않습니다. 따라서 번역할 내용이 없습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기