Google sử dụng thuật toán nào cho trang web Tìm kiếm bằng hình ảnh của mình?


45

Dự đoán tốt nhất của bạn về cách Google Image Search hoạt động là gì? Tôi có thể tải lên một bức ảnh và có thể tìm kiếm những hình ảnh tương tự. Thuật toán nào nó sử dụng để xác định hình ảnh tương tự?


Họ có thể lưu trữ biểu đồ của hình ảnh. Điều này hoạt động cho các tỷ lệ khác nhau của cùng một hình ảnh và sự khác biệt nhỏ do tạo tác nén hoặc bất cứ điều gì.
helium

1
Biểu đồ không nắm bắt thông tin không gian; bạn sẽ nhận được kết quả sai.
Emre

Câu trả lời:


29

Tôi không biết Google sử dụng thuật toán nào. Nhưng, vì bạn muốn có một phỏng đoán tốt nhất, hãy để tôi đưa ra một số ý tưởng về cách một hệ thống tương tự có thể được xây dựng .

Toàn bộ lĩnh vực liên quan đến tìm kiếm hình ảnh-cơ sở theo hình ảnh được gọi là Truy xuất hình ảnh dựa trên nội dung (CBIR) . Ý tưởng là, bằng cách nào đó, xây dựng một đại diện hình ảnh (không nhất thiết phải hiểu bởi con người) có chứa thông tin về nội dung hình ảnh .

Hai cách tiếp cận cơ bản tồn tại:

  • truy xuất bằng các tính năng cấp thấp (cục bộ): màu sắc, kết cấu, hình dạng tại các phần cụ thể của hình ảnh (hình ảnh là tập hợp các mô tả của các tính năng cục bộ )
  • phương pháp tiếp cận ngữ nghĩa trong đó một hình ảnh, theo một cách nào đó, được thể hiện như một tập hợp các đối tượng và quan hệ của chúng

Phương pháp địa phương cấp thấp được nghiên cứu rất tốt. Cách tiếp cận tốt nhất hiện nay trích xuất các tính năng cục bộ (có một sự lựa chọn thuật toán trích xuất tính năng liên quan ở đây) và sử dụng các mô tả cục bộ của chúng (một lần nữa, lựa chọn mô tả) để so sánh các hình ảnh.

Trong các tác phẩm mới hơn, các mô tả cục bộ được phân cụm trước và sau đó các cụm được coi là các từ trực quan - kỹ thuật này rất giống với tìm kiếm tài liệu của Google, nhưng sử dụng các từ trực quan thay vì các từ chữ.

Bạn có thể nghĩ các từ trực quan là tương đương với các từ gốc trong ngôn ngữ: ví dụ: các từ: làm việc, làm việc, làm việc đều thuộc về cùng một từ gốc.

Một trong những nhược điểm của các loại phương pháp này là chúng thường hoạt động kém trên các hình ảnh có kết cấu thấp.

Tôi đã đưa ra và thấy rất nhiều câu trả lời chi tiết các cách tiếp cận này, vì vậy tôi sẽ chỉ cung cấp liên kết đến những câu trả lời đó:

  • CBIR: 1 , 2
  • trích xuất / mô tả tính năng: 1 , 2 , 3 , 4

Các cách tiếp cận ngữ nghĩa thường dựa trên các biểu diễn phân cấp của toàn bộ hình ảnh. Những cách tiếp cận này vẫn chưa được hoàn thiện, đặc biệt là đối với các loại hình ảnh chung. Có một số thành công trong việc áp dụng các loại kỹ thuật này cho các miền hình ảnh cụ thể.

Vì hiện tại tôi đang ở giữa nghiên cứu các phương pháp này, tôi không thể đưa ra kết luận nào. Bây giờ, điều đó nói rằng, tôi đã giải thích một ý tưởng chung đằng sau những kỹ thuật này trong câu trả lời này .

Một lần nữa, một thời gian ngắn: ý tưởng chung là đại diện cho một hình ảnh với cấu trúc hình cây, trong đó các lá chứa các chi tiết hình ảnh và các đối tượng có thể được tìm thấy trong các nút gần gốc của những cây đó. Sau đó, bằng cách nào đó, bạn so sánh các cây con để xác định các đối tượng có trong các hình ảnh khác nhau.

Dưới đây là một số tài liệu tham khảo cho các đại diện cây khác nhau. Tôi đã không đọc tất cả trong số họ, và một số trong số họ sử dụng loại đại diện này để phân khúc thay vì CBIR, nhưng vẫn ở đây:


22

Ngoài câu trả lời của penelope, có hai cách tiếp cận, băm nhận thức và mô hình từ ngữ có chức năng cơ bản được thực hiện dễ dàng và có thể chơi hay học hỏi trước khi mạo hiểm vào lãnh thổ tiên tiến hơn.

Băm nhận thức

Các thuật toán băm tri giác nhằm mục đích xây dựng một hàm băm, không giống như băm mật mã, sẽ đưa ra các giá trị băm tương tự hoặc gần tương tự cho các hình ảnh giống hệt nhau, ví dụ như bị biến dạng hoặc nén JPEG. Chúng phục vụ một mục đích hữu ích trong việc phát hiện gần các bản sao trong bộ sưu tập hình ảnh.

Ở dạng cơ bản nhất, bạn có thể thực hiện điều này như sau:

  1. Chuyển đổi hình ảnh sang thang độ xám

  2. Làm cho hình ảnh của bạn bằng không

  3. Nghiền hình ảnh của bạn xuống kích thước hình thu nhỏ, nói [32x32]
  4. Chạy Biến đổi Cosine rời rạc hai chiều
  5. Giữ phía trên bên trái [8 x 8], hầu hết các thành phần tần số thấp đáng kể
  6. Binarize khối, dựa trên dấu hiệu của các thành phần

Kết quả là hàm băm 64 bit đàn hồi, vì nó dựa trên các thành phần tần số thấp của hình ảnh. Một biến thể của chủ đề này sẽ là chia mỗi hình ảnh thành 64 chuỗi con và so sánh giá trị trung bình của hình ảnh chung với giá trị trung bình của khối con cục bộ và viết ra 1 hoặc 0 tương ứng.

Băm tri giác được thực hiện ví dụ bằng phash

Mô hình túi từ

Mô hình bag-of-words nhằm mục đích xác định ngữ nghĩa một hình ảnh, ví dụ như tất cả các hình ảnh có con chó trong đó. Nó thực hiện điều này bằng cách sử dụng các bản vá hình ảnh nhất định theo cùng một tinh thần mà người ta sẽ phân loại một tài liệu văn bản dựa trên sự xuất hiện của một số từ nhất định. Người ta có thể phân loại các từ, nói "chó" và "chó" và lưu trữ chúng dưới dạng định danh trong một tệp đảo ngược trong đó phân loại "chó" hiện trỏ đến tất cả các tài liệu có chứa "chó" hoặc "chó".

Ở dạng đơn giản nhất, đơn giản nhất, người ta có thể làm điều này với hình ảnh như sau:

  1. Triển khai các tính năng được gọi là SIFT, ví dụ như sử dụng thư viện vlfeat tuyệt vời , sẽ phát hiện các điểm tính năng SIFT và mô tả SIFT cho mỗi điểm. Mô tả này về cơ bản là một mẫu được xây dựng thông minh của bản vá hình ảnh xung quanh điểm đặc trưng đó. Những mô tả là những từ thô của bạn.
  2. Tập hợp các mô tả SIFT cho tất cả các hình ảnh có liên quan

Bây giờ bạn có một bộ sưu tập lớn các mô tả SIFT. Vấn đề là, ngay cả từ những hình ảnh gần giống nhau, sẽ có một số không khớp giữa các mô tả. Bạn muốn nhóm những từ giống hệt nhau ít nhiều giống như đối xử với một số từ, như "chó" và "chó" giống hệt nhau và bạn cần phải bù lỗi. Đây là nơi phân cụm đến để chơi.

  1. Lấy tất cả các mô tả SIFT và phân cụm chúng, ví dụ với một thuật toán như k-mean. Điều này sẽ tìm thấy một số cụm được xác định trước với trọng tâm trong dữ liệu mô tả của bạn. Những centroid là những từ trực quan mới của bạn.
  2. Bây giờ trên mỗi hình ảnh và các mô tả được tìm thấy ban đầu của nó, bạn có thể nhìn vào các cụm mà các mô tả này được gán cho. Từ điều này, bạn biết các nhân mã hoặc các từ trực quan 'thuộc về' hình ảnh của bạn. Các trọng tâm hoặc từ trực quan này trở thành mô tả ngữ nghĩa mới của hình ảnh của bạn có thể được lưu trữ trong một tệp đảo ngược.

Một truy vấn hình ảnh, ví dụ: tìm cho tôi hình ảnh tương tự với hình ảnh truy vấn, sau đó được giải quyết như sau:

  1. Tìm các điểm SIFT và mô tả của chúng trong hình ảnh truy vấn
  2. Chỉ định các mô tả truy vấn cho các trọng tâm mà bạn đã tìm thấy trước đó trong giai đoạn đăng ký. Bây giờ bạn có một tập hợp các tâm hoặc từ trực quan liên quan đến hình ảnh truy vấn của bạn
  3. Nối các từ trực quan truy vấn với các từ trực quan trong tệp đảo ngược của bạn và trả về các hình ảnh phù hợp

1
Cách tiếp cận từ ngữ của bạn về cơ bản là những gì liên kết của tôi đối với "cách tiếp cận cục bộ" dẫn đến :) Mặc dù về bản chất nó không thực sự là ngữ nghĩa: bạn sẽ không bao giờ đại diện cho một con chó với một tính năng, cũng không dễ nhận biết gia vị chó khác nhau như chó. Nhưng băm nhận thức là tốt, không biết về điều đó. Giải thích là tốt đẹp. Điều đó khiến tôi suy nghĩ ... bạn có gợi ý nào để áp dụng kỹ thuật đó vào một khu vực không phải hình chữ nhật không? Hoặc có thể cung cấp một số tài liệu tham khảo cho các bài viết, tôi có thể đọc lên một chút và nếu câu hỏi có ý nghĩa, hãy mở nó ra như một câu hỏi riêng biệt.
Penelope

1
@penelope Tôi thực sự đã đọc trong bài viết, nhiều năm trước, nơi các tác giả chia ra một hình ảnh trong các hình tam giác tùy ý. Và có biến đổi dấu vết cũng đã được sử dụng làm cơ sở cho hàm băm nhận thức. Tôi sẽ lấy lại cho bạn.
Maurits

Tất cả mọi thứ tôi muốn hỏi bạn về vấn đề này vượt quá phạm vi của câu hỏi này, vì vậy tôi đã mở một câu hỏi mới Bất kỳ thông tin / tài liệu tham khảo nào về kỹ thuật cơ bản vẫn sẽ rất tuyệt, trong câu trả lời này hoặc câu hỏi kia. Nhìn về phía trước :)
Penelope

2

Cách tiếp cận thú vị khác mà dường như bị bỏ qua trong các câu trả lời ở trên là Mạng nơ ron kết hợp sâu. Có vẻ như Google đang sử dụng nó ngay bây giờ cho công cụ tìm kiếm hình ảnhdịch vụ dịch thuật của mình . Các CNN cực kỳ mạnh mẽ trong các nhiệm vụ nhận thức như tìm kiếm sự tương đồng. Có vẻ như, CNN thực hiện một quy trình tương tự về Bag-of-world được nhúng qua các lớp mạng của nó. Nhược điểm của kỹ thuật này là không có khả năng học hỏi và yêu cầu bộ dữ liệu khổng lồ cho đào tạo và tất nhiên chi phí tính toán nặng nề trên sân khấu đào tạo.

Giấy đề nghị về vấn đề này:

và triển khai truy xuất hình ảnh học tập nguồn mở sâu (bài báo sau): https://github.com/paucarre/tiefvision

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.