신발 탐지, 세그멘테이션 및 덧씌우기
신발 탐지, 세그멘테이션 및 덧씌우기
사용자의 구매결정을 돕기 위해 사진 속 사용자의 신발 위에 쇼핑몰 신발을 자동으로 덧씌우는 파이프라인. [GitHub 링크]
주요 성과
- YOLOv3 사용하여 신발을 탐지. 담당자: mutichung
- GrabCut과 SIFT feature를 사용하여 신발의 세그멘테이션 마스크를 추출. 담당자: tommykil123 & shuoqwang
- 신발 윤곽선을 기반으로 사용자 이미지 위에 쇼핑몰 신발을 덧씌우는 알고리즘을 독자적으로 고안 및 구현. 담당자: JunhwanK (본인)
목적
사용자 사진에서 신발을 자동으로 탐지하고 세그멘테이션을 추출한 후, 이를 사용하여 사용자의 신발 위에 쇼핑몰 신발을 자동으로 덧씌운다.
파이프라인 설계
파이프라인은 총 3개의 단계로 이루어져 있다.
신발 탐지
첫 단계에서는 YOLOv3를 사용하여 사용자 사진에서 신발의 바운딩 박스를 탐지한다 (, ).
세그멘테이션 추출
두번째 단계에서는 GrabCut 알고리즘을 사용하여 신발을 배경과 분리한다. 더욱 정확한 결과를 위해 SIFT 특징과 convex hull 알고리즘으로 신발이 있는 예상구역을 지정한다 ().
덧씌우기
마지막 세번째 단계에서는, 먼저 세그멘테이션 마스크의 주성분 고유벡터(principal eigenvector)를 사용하여 쇼핑몰 신발과 사용자의 신발의 방향을 정렬한다 ().
신발의 방향을 정렬시킨 뒤, 각 신발의 윤곽선을 수직과 수평 방향으로 잘라 샘플링한다 ().
샘플링된 점들을 기반으로 유사 변환(similarity transformation) 행렬을 계산한다.
단, 주성분 고유 벡터를 사용한 정렬만으로는 신발의 좌우 방향을 판별할 수 없기 때문에, 가능한 모든 좌우 조합을 시도한 후 가장 적절한 (가장 손실값이 작은) 매칭을 자동으로 선택한다 ().
마지막으로, 쇼핑몰 신발에 변환 행렬을 적용하여 사용자 신발 위에 덧씌운다 ().
결과
제한점 및 개선방안
- 신발 탐지와 세그멘테이션 추출 단계를 나누지 않고, 인공신경망을 통해 세그멘테이션 마스크를 한번에 추출하는 것이 성능이 더 좋을거라 생각된다. 하지만 이를 위해서는 인공신경망을 학습시킬 신발 세그멘테이션 데이터가 필요하다. 한 가지 해결방법은 사용자에게서 신발의 좌표점을 요구하고 Segment Anything Model을 사용하여 신발의 세그멘테이션을 추출하는 것이다.
- 이 파이프라인은 옷과 같이 윤곽/형체의 변형이 큰 물체는 다룰 수 없다. 형태의 변형이 큰 물체를 다룰려면 OutfitAnyone과 비슷하게 조건부 확산 모델(conditional diffusion model)을 사용해야 한다.