중복이미지 검출(Duplicate Image Detection)
모델 선정시 요구사항
- 현재 가지고 있는 이미지 데이터 규모
- 중복이미지 검출시 정확도
- Inference 시 실시간 여부
쓸 수 있는 기술
- FileName: File Naming Scheme에 대해서 통제가 가능해야
- FileHash: File이 Binary여야 하고, 조금만 변경이 발생해도 Hash값이 달라질 수 있음
- Perceptual Hash: File size나 Format이 달라도 Pixel에 기반해서 식별 가능하고 속도가 빠른 편, Hash간 Distance를 계산해서 중복 이미지 검출 뿐만 아니라, 비슷한 이미지도 검출 가능
- 하지만 이미지의 세부사항이나 Semantic Meaning을 고려하지 않기 때문에 False Positive가 많이 발생할 수 있음
- 즉 완전히 다른 컨텐츠가 있어도 유사하게 보일 수 있는 이미지가 중복으로 평가될 수 있음
- dHash(Difference Hash) 등이 있음
- Python 기준 imagehash Library
- Perceptual Hash를 활용해서 CSAM(Child Sexual Abuse Material)을 Detect하려고 한 게 Apple의 NeuralHash
- Hashing 처리를 한 다음 Index 생성 및Similarity Search를 효율적으로 하기 위해서는 faiss 등의 Library를고려할 필요 있음
- Embedding: Perceptual Hash가 놓치고 있는 이미지의 Semantic Meaning을 충분히 고려할 수 있음. 이미지 크기나 포멧에 대해 제한받는 것 없
- Interest Point: 이미지 전체를 사용하는 것대신 필요하다고 판단되는 일부만 활용해서 다른 이미지와 비교를 해서 구하는 방식.
- 필요하다고 판단되는 일부 지점 별로 모두 임베딩을 생성해서 비교하기 때문에 부하가 상당히 있어, Real-time Operation에는 비적합.
중복이미지 검출 이후 Action
실시간으로 이미지 검출시 해당 이미지 업로드 거부
먼저 올라온 이미지로 연결
기존 이미지와 새롭게 올라온 이미지를 통합
중복 이미지 삭제