Google은 '이미지로 검색'사이트에 어떤 알고리즘을 사용합니까?


45

Google 이미지 검색의 작동 방식을 가장 잘 추측하는 것은 무엇입니까? 사진을 업로드하고 유사한 이미지를 검색 할 수 있습니다. 유사한 이미지를 식별하기 위해 어떤 알고리즘을 사용합니까?


이미지의 히스토그램을 저장할 수 있습니다. 압축 아티팩트 또는 기타로 인해 동일한 이미지의 다른 스케일과 작은 차이에 적용됩니다.
헬륨

1
히스토그램은 공간 정보를 캡처하지 않습니다. 당신은 틀린 일치를 얻을 것입니다.
Emre

답변:


29

Google이 사용하는 알고리즘을 모르겠습니다. 그러나 최고의 추측을 원했기 때문에 비슷한 시스템어떻게 구성 할 수 있는지대한 아이디어를 드리겠습니다 .

이미지 별 이미지 검색을 다루는 전체 필드를 CBIR (Content Based Image Retrieval)이라고 합니다. 아이디어는 어떻게 든 이미지 컨텐츠에 대한 정보포함 하는 이미지 표현 (사람이 반드시 이해할 수있는 것은 아님)을 구성하는 것 입니다.

두 가지 기본 접근 방식이 있습니다.

  • 저수준 (로컬) 기능을 사용하여 검색 : 이미지의 특정 부분에서 색상, 질감, 모양 (이미지는 로컬 기능 의 설명자 모음입니다 )
  • 이미지가 어떤 식 으로든 객체 모음과 그 관계로 표현되는 의미 론적 접근법

낮은 수준의 지역 접근 방식 은 매우 잘 연구되었습니다. 현재의 가장 좋은 접근 방식은 로컬 기능을 추출하고 (여기에 관련된 기능 추출 알고리즘 선택) 로컬 설명자를 사용하여 이미지를 비교합니다.

최신 작업에서는 로컬 설명자가 먼저 클러스터 된 다음 클러스터가 시각적 단어 로 취급됩니다. 이 기술은 Google 문서 검색과 매우 유사하지만 문자 단어 대신 시각적 단어를 사용합니다.

시각적 단어는 언어의 단어 뿌리와 동등한 것으로 생각할 수 있습니다. 예를 들어, 단어 work, working, working은 모두 동일한 단어 root에 속합니다.

이러한 종류의 방법의 단점 중 하나는 일반적으로 질감이 낮은 이미지에서 성능이 저하된다는 것입니다.

이미 이러한 접근 방식에 대해 자세히 설명하고 많은 답변을 보았으므로 해당 답변에 대한 링크를 제공합니다.

  • CBIR : 1 , 2
  • 특징 추출 / 설명 : 1 , 2 , 3 , 4

시맨틱 접근법 은 일반적으로 전체 이미지의 계층 적 표현을 기반으로합니다. 이러한 접근 방식은 특히 일반적인 이미지 유형에 대해서는 아직 완벽하지 않습니다. 이러한 종류의 기술을 특정 이미지 도메인에 적용하는 데 약간의 성공이 있습니다.

현재 이러한 접근법에 대한 연구가 진행 중이므로 결론을 내릴 수 없습니다. 이제이 답변 에서 이러한 기술의 기본 개념을 설명했습니다 .

다시 한 번 간단히 말하면, 일반적인 아이디어는 나무 모양의 구조를 가진 이미지를 나타내는 것입니다. 여기서 나뭇잎에는 이미지 세부 정보가 포함되어 있으며 그러한 나무의 뿌리에 가까운 노드에서 객체를 찾을 수 있습니다. 그런 다음 어떻게 든 하위 트리를 비교하여 다른 이미지에 포함 된 객체를 식별합니다.

다음은 다양한 트리 표현에 대한 참조입니다. 나는 그것들을 모두 읽지는 않았으며, 그들 중 일부는 CBIR 대신 세분화를 위해 이러한 종류의 표현을 사용하지만 여전히 여기에 있습니다.


22

페넬로페의 대답 외에도 지각 해싱과 기본 기능이 쉽게 구현되고 고급 영역에 들어가기 전에 배우거나 배우기 좋은 두 가지 접근 방식이 있습니다.

지각 해싱

지각 해싱 알고리즘은 암호화 해시와 달리 해시를 구성하는 것을 목표로합니다. 예를 들어 스케일링 또는 JPEG 압축에 의해 약간 왜곡 된 동일한 이미지에 대해 유사하거나 거의 유사한 해시 값을 제공합니다. 이미지 수집에서 거의 중복을 감지하는 데 유용한 목적을 제공합니다.

가장 기본적인 형태로 다음과 같이 구현할 수 있습니다.

  1. 이미지를 회색조로 변환

  2. 이미지를 제로로 만드십시오

  3. [32x32]와 같이 이미지를 미리보기 이미지 크기로 내립니다.
  4. 2 차원 이산 코사인 변환 실행
  5. 가장 왼쪽에있는 [8 x 8], 가장 중요한 저주파수 구성 요소 유지
  6. 구성 요소의 부호에 따라 블록을 이진화

결과는 이미지의 저주파 구성 요소를 기반으로하기 때문에 탄력적 인 64 비트 해시입니다. 이 테마의 변형은 각 이미지를 64 개의 서브 블록으로 나누고 글로벌 이미지 평균을 로컬 서브 블록 평균과 비교하고 그에 따라 1 또는 0을 작성하는 것입니다.

지각 해싱은 예를 들어 phash에 의해 구현됩니다.

단어 가방 모델

bag-of-words 모델은 이미지, 예를 들어 개가있는 모든 이미지를 의미 적으로 식별하는 것을 목표로합니다. 특정 단어의 발생에 따라 텍스트 문서를 분류하는 것과 동일한 방식으로 특정 이미지 패치를 사용하여이를 수행합니다. "dog"과 "dogs"라고 단어를 분류하여 "dog"범주가 "dog"또는 "dogs"를 포함하는 모든 문서를 가리키는 역 파일에 식별자로 저장할 수 있습니다.

가장 간단한 형태로 이미지와 함께 다음과 같이 할 수 있습니다.

  1. SIFT 기능 포인트 및 포인트 당 SIFT 디스크립터를 감지하는 우수한 vlfeat 라이브러리 를 사용하여 소위 SIFT 기능을 배치하십시오 . 이 설명자는 기본적으로 해당 기능 지점을 둘러싼 이미지 패치의 스마트하게 구성된 템플릿입니다. 이 설명자는 당신의 원어입니다.
  2. 모든 관련 이미지에 대한 SIFT 디스크립터 수집

이제 방대한 SIFT 디스크립터 모음이 있습니다. 문제는 거의 동일한 이미지에서도 디스크립터 사이에 약간의 불일치가 있다는 것입니다. 동일한 단어를 "개"와 "개"를 동일하게 취급하는 것과 같은 단어를 다소 비슷하게 그룹화하고 오류를 보상해야합니다. 여기서 클러스터링이 시작됩니다.

  1. 예를 들어 k- 평균과 같은 알고리즘을 사용하여 모든 SIFT 디스크립터를 가져와 클러스터하십시오. 디스크립터 데이터에 중심이있는 미리 결정된 수의 클러스터가 있습니다. 이 중심은 새로운 시각적 단어입니다.
  2. 이제 이미지와 원래 발견 된 디스크립터마다이 디스크립터가 지정된 클러스터를 볼 수 있습니다. 이것으로부터, 당신은 이미지에 '중심'이나 시각적 단어를 알고 있습니다. 이 중심 또는 시각적 단어는 이미지의 새로운 의미 설명자가되어 반전 된 파일에 저장할 수 있습니다.

이미지 쿼리 (예 : 쿼리 이미지와 유사한 이미지 찾기)는 다음과 같이 해결됩니다.

  1. 쿼리 이미지에서 SIFT 포인트 및 해당 설명자를 찾습니다.
  2. 이전에 등록 단계에서 찾은 중심에 쿼리 설명자를 할당하십시오. 이제 쿼리 이미지와 관련된 중심 또는 시각적 단어 세트가 있습니다.
  3. 검색어 시각적 단어를 반전 된 파일의 시각적 단어와 일치시키고 일치하는 이미지를 반환

1
가방 - 중 - 단어 접근 방식은 기본적으로 무엇 : "로컬 접근"리드 내 링크는 아니지만 정말 자연의 의미 : 당신은 하나 개의 기능을 하나의 개를 표현하지 않을 것 않으며 식별이 쉬운 것 개로 다른 개 향신료. 그러나 지각 해싱은 훌륭하지만 그에 대해서는 몰랐습니다. 설명이 좋습니다. 어떤 생각을하게 되었습니까?이 기술을 직사각형이 아닌 영역에 적용하는 방법에 대한 제안이 있으십니까? 또는 기사에 대한 참조를 제공하거나 조금 읽을 수 있으며 질문이 의미가 있으면 별도의 질문으로여십시오.
penelope

1
@penelope 필자는 실제로 몇 년 전에 기사에서 임의의 삼각형으로 이미지를 분할 한 기사를 읽었습니다. 또한 지각 해시의 기초로 사용되는 추적 변환이 있습니다. 너에게 다시 돌아갈 게.
Maurits

내가 당신에게 물어보고 싶은 모든 것은이 질문의 범위를 넘어서서 새로운 것을 열었습니다 . 기본 기술에 대한 더 많은 정보 / 참조는 여전히이 답변이나 그 어느 것에서도 좋습니다. : :
penelope

2

위의 답변에서 무시 된 것처럼 보이는 다른 흥미로운 접근법은 Deep Convolutional Neural Networks입니다. 구글이 이미지 검색 엔진번역 서비스를 위해 지금 사용하고있는 것 같다 . CNN은 유사성 찾기와 같은인지 작업에서 매우 강력하며, CNN은 네트워크 계층을 통해 내장 된 Bag-of-worlds와 유사한 절차를 수행합니다. 이 기술의 단점은 훈련을위한 거대한 데이터 세트를 학습 할 수없고 훈련 단계에서 계산 비용이 많이 든다는 것입니다.

이와 관련하여 제안 된 논문 :

오픈 소스 딥 러닝 이미지 검색 구현 (후반부) : https://github.com/paucarre/tiefvision

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.