각 이미지의 내용을 설명하는 메타데이터 없이 수십만에서 수백만 개의 이미지 데이터 컬렉션이 있다고 상상해 보세요. 사용자의 검색어에 가장 잘 대답하는 이미지의 하위 집합을 찾을 수 있는 시스템을 어떻게 구축할 수 있습니까?
기본적으로 우리에게 필요한 것은 이미지 결과가 자연 언어나 다른 쿼리 이미지로 표현될 수 있는 검색 쿼리와 얼마나 잘 일치하는지에 따라 이미지 결과의 순위를 매길 수 있는 검색 엔진입니다.
이 게시물에서 문제를 해결하는 방법은 입력 이미지와 텍스트의 고정 길이 표현(또는 임베딩)을 학습하고 텍스트 쌍이 다음과 같은 경우 해당 표현이 유클리드 공간에서 가깝도록 만드는 심층 신경 모델을 훈련하는 것입니다. 이미지 또는 이미지-이미지는 "유사"합니다.
충분히 큰 검색 결과 순위 데이터 세트를 찾을 수 없었지만 전자 상거래 항목 이미지를 해당 항목에 연결하는 http://jmcauley.ucsd.edu/data/amazon/ 데이터 세트를 얻을 수 있었습니다. 제목과 설명. 이 메타데이터를 감독 소스로 사용하여 의미 있는 결합된 텍스트-이미지 표현을 학습합니다. 실험은 계산 및 저장 비용 관리를 위해 패션(의류, 신발, 보석) 항목과 500,000개의 이미지로 제한되었습니다.
우리가 가지고 있는 데이터 세트는 각 이미지를 자연어로 작성된 설명과 연결합니다. 따라서 우리는 각 이미지 표현이 해당 설명 표현에 가깝도록 이미지와 텍스트에 대한 결합된 고정 길이 표현을 학습하려는 작업을 정의합니다.
모델은 3가지 입력을 사용합니다. 이미지(앵커), 이미지 제목+설명(긍정적 예), 세 번째 입력은 무작위로 샘플링된 텍스트(부정적 예)입니다.
그런 다음 두 가지 하위 모델을 정의합니다.
이미지 하위 모델은 앵커 **E_a **에 대한 임베딩을 생성하고 텍스트 하위 모델은 긍정적인 제목+설명 E_p 에 대한 임베딩과 부정적인 텍스트 E_n 에 대한 임베딩을 출력합니다.
그런 다음 다음 삼중 손실을 최적화하여 훈련합니다.
L = 최대(d(E_a, E_p)-d(E_a, E_n)+알파, 0)
여기서 d는 유클리드 거리이고 알파는 이 실험에서 0.4에 해당하는 초매개변수입니다.
기본적으로 이 손실이 허용하는 것은 **d(E_a, E_p)를 작게 만들고 d(E_a, E_n) **를 크게 만드는 것 입니다. 따라서 각 이미지 임베딩은 설명 임베딩에 가깝고 이미지 임베딩과는 거리가 멀습니다. 임의의 텍스트.
이미지 임베딩 모델과 텍스트 임베딩 모델을 학습한 후에는 tsne(https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html)을 사용하여 2차원으로 투영하여 시각화할 수 있습니다.
테스트 이미지와 해당 텍스트 설명은 녹색 선으로 연결됩니다.
일반적으로 임베딩 공간에서 이미지와 해당 설명이 가깝다는 것을 플롯에서 볼 수 있습니다. 이는 사용된 훈련 손실을 고려하여 우리가 예상할 수 있는 것입니다.
여기서는 70,000개의 이미지 집합에서 가장 일치하는 항목을 검색하기 위해 텍스트 쿼리의 몇 가지 예를 사용합니다. 쿼리에 대한 텍스트 임베딩을 계산한 다음 컬렉션의 각 이미지에 대한 임베딩을 계산합니다. 마지막으로 임베딩 공간에서 쿼리에 가장 가까운 상위 9개의 이미지를 선택합니다.
이러한 예는 임베딩 모델이 이미지의 유용한 표현과 간단한 단어 구성의 임베딩을 학습할 수 있음을 보여줍니다.
여기서는 이미지를 쿼리로 사용한 다음 70,000개의 이미지 데이터베이스에서 가장 유사한 예를 검색합니다. 순위는 유클리드 거리를 사용하여 각 이미지 쌍이 임베딩 공간에서 얼마나 가까운지에 따라 결정됩니다.
결과는 생성된 임베딩이 방향, 조명 또는 사소한 로컬 세부 사항에 과도하게 영향을 받지 않고 표현된 개체의 가장 중요한 특성을 캡처하는 높은 수준의 이미지 표현임을 보여줍니다.
이 프로젝트에서 우리는 이미지 모음에 적용되는 키워드와 이미지 기반 검색 엔진을 구축할 수 있는 기계 학습 블록에 대해 작업했습니다. 기본 아이디어는 텍스트와 이미지에 대한 의미 있고 결합된 임베딩 기능을 학습한 다음 임베딩 공간의 항목 간 거리를 사용하여 검색 결과의 순위를 지정하는 것입니다.
참고자료 :