이미지 중복 제거 (Image Deduplication)
이 튜토리얼에서는 오픈소스 벡터 데이터베이스인 Milvus를 활용해 이미지 중복 제거 시스템을 만드는 방법을 살펴봐요.
사용되는 ML 모델과 서드파티 소프트웨어는 다음과 같아요.
- ResNet-50
- Towhee
최근 몇 년 사이 사용자 생성 콘텐츠는 기하급수적으로 늘었어요. 누구나 찍은 사진을 즉시 소셜 미디어에 올릴 수 있게 됐죠. 그런데 이미지 데이터가 이렇게 많아지면서 중복 콘텐츠도 그만큼 눈에 띄게 늘었어요. 사용자 경험을 개선하려면 이런 중복 이미지는 반드시 걸러내야 해요. 이미지 중복 제거 시스템은 데이터베이스에 있는 이미지를 하나하나 비교하며 중복을 찾아내는 수고를 덜어 줍니다. 완전히 똑같은 이미지를 골라내는 것 자체는 어려운 일이 아니에요. 하지만 사진이 확대되거나 잘리거나, 밝기나 명암이 조정되는 경우도 있죠. 이미지 중복 제거 시스템은 이런 유사한 이미지들도 구분해서 함께 제거할 수 있어야 해요.
이 튜토리얼에서는 이미지 중복 제거 시스템을 어떻게 만드는지 배워요. ResNet-50 모델로 이미지의 특징을 추출해 벡터로 변환하고, 이 이미지 벡터를 Milvus 벡터 데이터베이스에 저장한 다음 Milvus에서 벡터 유사도 검색도 수행해요.
출처: Milvus 문서
본문
작업 흐름 (Workflow)
이 튜토리얼은 다음 순서로 진행돼요.
- 이미지에서 특징을 추출합니다. ResNet-50 모델이 이미지의 시각적 특징을 벡터로 변환해 줘요.
- 추출한 벡터를 Milvus 컬렉션에 저장해요.
- 저장된 벡터와 새로 들어온 이미지 벡터 간의 유사도를 Milvus 벡터 검색으로 계산해요.
- 유사도가 임계값을 넘는 이미지를 중복으로 판단해 제거해요.
이렇게 하면 인위적으로 어느 정도 변형된 유사 이미지까지도 걸러낼 수 있어요.
구현
튜토리얼의 전체 구현은 노트북에서 확인할 수 있어요. 노트북을 단계별로 따라 하면 예제 코드가 이미지의 특징 벡터를 추출하고, Milvus와 상호작용하며 중복 이미지를 식별하는 흐름을 그대로 체험할 수 있어요.
더 알아보기 (Learn more)
- Milvus로 수행하는 이미지 유사도 검색 같은 다른 벡터 검색 예제도 함께 살펴보면 좋아요.
- Towhee를 이용하면 다양한 모델 기반 임베딩 파이프라인을 간단히 구성할 수 있어요.