阿里雲產品-影象搜尋快速測評

2023-02-08 06:01:14

背景知識

什麼是雲端計算

對於純新人,首先我們需要了解下什麼是雲端計算。所謂雲端計算,就是指通過網際網路,以按需服務的形式提供計算資源。這樣企業就無需自行採購、設定或管理資源,而且只需要為實際使用的資源付費。

通俗來講,就是將實體物理計算機提供的各種服務搬到了線上,這樣即使我們沒有實體電腦也能體驗和使用一些計算資源,比如:雲伺服器、雲資料庫、人工智慧相關服務等。

阿里雲產品

阿里雲端計算提供的熱門產品包括以下幾類:

  • 計算:如雲伺服器 ECS ,可能最為暢銷
  • 儲存:如檔案儲存 NAS
  • 網路:如負載均衡 SLB、彈性公網 IP
  • 安全:如 WEB 應用防火牆
  • 容器與中介軟體:如分散式容器服務平臺
  • 資料庫:如關係型資料庫、資料倉儲
  • 巨量資料計算:如雲原生巨量資料計算服務 MaxCompute
  • 人工智慧與機器學習:提供人工智慧產品等 API 呼叫功能,一般按呼叫次數計費,本文測評等產品-影象檢索屬於此類。
  • CDN 與雲通訊:CDN
  • 企業服務與媒體服務:如視訊點播服務
  • 物聯網:如 AliOS Things 物聯網作業系統。
  • 開發工具:如程式碼管理與流水線
  • 運維管理:如紀錄檔服務(SLS)。

一,影象檢索原理

1.1,影象檢索概述

在大型影象資料庫上,CBIR(Content-Based Image Retrieval,基於內容的影象檢索) 技術用於檢索在視覺上具相似性的影象。它是計算機視覺中的一項基本任務,因為它與各種實際應用直接相關。CBIR是通過分析視覺內容(顏色、紋理、形狀、物體等),在相簿中搜尋相關影象的問題。

影象檢索的通俗定義:從一堆圖片中找到與待匹配的影象相似的圖片,即以圖搜圖,影象檢索的一個子問題是以人搜人,也稱為行人重識別。

本文對 CBIR 和影象檢索、影象檢索的定義不做嚴格區分,都指代影象檢索技術。

1.2,影象檢索任務分類

通常,CBIR 方法可以分為兩個不同的任務:

  1. 類別級影象檢索(CIR),也叫相同類別物體檢索。

    對給定的查詢圖片,相似影象檢索的目標是從影象庫中查詢出那些與給定查詢影象屬於同一類別(例如,狗,汽車)的影象。

  2. 範例級影象檢索(IIR),也叫相同物體影象檢索。

    相同物體影象檢索是指對查詢影象中的某一物體,從影象庫中找出包含有該物體的影象。一個特定範例(例如,埃菲爾鐵塔,我的鄰居的狗)的查詢影象可以在不同的條件下被捕獲,如不同的成像距離、視角、背景、光照和天氣條件(重新識別同一範例的範例)。

關於臉部辨識問題和影象檢索問題的關係,我個人理解是臉部辨識可以看作是一種更嚴格的相同物體影象檢索問題。

影象檢索任務另外一種分類劃分:

  1. 追求所謂的相似性,即從影象資料庫中找到相似或相同的圖片。

    常見的臉部辨識,行人重識別(reid),購物商品檢索,草圖檢索,都是屬於這個範疇,目前的深度學習方法,更多的就是追求如何獲得更好的 feature,在這些領域,特徵提取方法都是可以通用,即 backbone 是通用的。

  2. 傳統領域裡的 match 的問題。即如果某個建築在一張圖裡出現,假使其在另外一張圖裡只出現一半,或者在某個角落裡出現,能否再次找到。

    如果直接採用 cnn 特徵,很有可能找到的輪廓相似的建築物,而非相同的建築物。這種情況下,一般是切成 patch 再分別抽特徵,隨著目標檢測模型的進步,可以直接在最後的 feautre map 上直接劃分。也可以對 feature map 的特徵做 vlad(Vector of Local Aggregated Descriptors)或者 fv(Fisher Vector)的編碼再檢索。一般論文裡的標題都是 CBIR,instance retrieval 這種。

FV(Fisher Vector)10 本質上是用似然函數的梯度向量表示一幅影象。梯度向量的物理意義就是描述能夠使模型更好地適應資料的引數變化方向,也就是資料擬閤中引數調優的過程。

1.2,影象檢索技術發展歷程

傳統影象處理中影象特徵分為:全域性特徵(顏色、紋理、形狀)和區域性特徵(SIFT和 SURF描述符)兩類。

影象檢索(也叫以圖搜圖)技術等發展大致經歷了三個階段:

  1. 最初的影象檢索引擎是基於文字關鍵字檢索的。

    即利用影象的檔名和路徑名、影象周圍的文字,以及Alt標籤中的註釋索引和搜尋相關影象的。從本質上來說,這樣的影象檢索引擎其實還是基於文字搜尋引擎的,因為對比的是文字資訊而不是直接影象資訊。

  2. 1992年,T. Kato提出了基於內容的影象檢索(CBIR)概念,即人工提取影象特徵構建索引以實現影象檢索。

    首先基於傳統影象處理技術(如SIFT特徵提取運算元)進行特徵提取,然後將影象特徵資訊進行編碼,並將海量影象編碼做查詢表,最後進行相似度匹配運算。

  3. 基於計算機視覺技術的影象檢索技術。

​ 隨著人工智慧技術(深度學習)的發展,CNN 和 Transformer 技術在自動提取影象特徵方面已經做得非常優秀,因此極大地提高了影象表達和搜尋的準確性。目前主流搜尋引擎的影象檢索功能其實都引入了深度學習演演算法。

1.3,影象檢索的SOTA 模型

paperswithcode 可以看出影象檢索領域最新的 SOTA 模型-X-VLM 是在 2021 年發表的,後續沒有更好的論文。

1.4,影象檢索演演算法流程

影象檢索演演算法流程的 pipeline 如下所示:

注意,上述步驟中,圖片入庫是使用者看不到的。影象特徵相似度的度量標準一般有以下幾類:

  1. 歐氏距離
  2. 曼哈頓距離
  3. 海明距離
  4. 餘弦相似度
  5. 傑卡德相似度

二,阿里雲 ImageSearch 產品測評

2.1,ImageSearch 產品介紹

影象搜尋(Image Search)是一款用於圖片間相似性檢索的平臺型產品。影象搜尋以深度學習和機器視覺為核心,提取圖片內容特徵、建立影象搜尋引擎。使用者通過輸入圖片,用以圖搜圖的方式可快速在圖片庫中檢索到與輸入圖片相似的圖片集合。可廣泛應用於拍照購物、商品推薦、版權保護等場景。

ImageSearch 使用過程

阿里雲的影象搜尋(ImageSearch)產品主要用來實現搜尋相似圖片功能,其簡單使用過程總結如下:

  1. 建立範例
  2. 新增圖片
  3. 搜尋相似圖片。

2,第二步,在範例中新增等待搜尋的圖片

點選範例 ID 進入範例詳情頁面,選擇圖片搜尋,確定搜尋型別、上傳圖片並輸入相關設定後,點選確認即可得到 json 形式的字串返回結果。

3,第三步,解析字串形式的返回結果

參考教學-圖片查詢,理解各個引數的含義,從而得到易理解的圖片搜尋結果。這裡我輸入的是樹莓派3B的圖片,返回結果如下所示:

{
  "data": {
    "result": {
      "body": {
        "auctions": [],
        "code": 0,
        "head": {
          "docsFound": 0,
          "docsReturn": 0,
          "searchTime": 225
        },
        "picInfo": {
          "allCategories": [
            {
              "id": 0,
              "name": "Tops"
            },
            {
              "id": 1,
              "name": "Dress"
            },
            {
              "id": 2,
              "name": "Bottoms"
            },
            {
              "id": 3,
              "name": "Bag"
            },
            {
              "id": 4,
              "name": "Shoes"
            },
            {
              "id": 5,
              "name": "Accessories"
            },
            {
              "id": 6,
              "name": "Snack"
            },
            {
              "id": 7,
              "name": "Makeup"
            },
            {
              "id": 8,
              "name": "Bottle"
            },
            {
              "id": 9,
              "name": "Furniture"
            },
            {
              "id": 20,
              "name": "Toy"
            },
            {
              "id": 21,
              "name": "Underwear"
            },
            {
              "id": 22,
              "name": "Digital device"
            },
            {
              "id": 88888888,
              "name": "Other"
            }
          ],
          "categoryId": 22,
          "multiRegion": [
            {
              "region": "282,1973,180,1282"
            }
          ],
          "region": "282,1973,180,1282"
        },
        "requestId": "EAD5F8B7-2BAB-52F5-89D6-AE2F16569E2E",
        "success": true
      },
      "headers": {
        "access-control-allow-origin": "*",
        "date": "Tue, 07 Feb 2023 12:47:36 GMT",
        "content-length": "635",
        "x-acs-request-id": "EAD5F8B7-2BAB-52F5-89D6-AE2F16569E2E",
        "connection": "keep-alive",
        "content-type": "application/json;charset=utf-8",
        "x-acs-trace-id": "e52901da46aa5e61a2243a1109cf0a93"
      },
      "statusCode": 200
    }
  },
  "success": true
}

"categoryId": 22,參考類目參考頁面,可知 "categoryId": 22 表示屬於數碼硬體類別,識別正確!

2.3,總結

到這裡,關於影象搜尋產品的背景、原理和使用過程都已經敘述完畢了,個人感覺影象搜尋這款產品的識別準確率還不錯,但是返回結果的視覺化功能還有待提升,目前是純 json 形式的字串返回結果,不如直接圖片上新增文字和方框形式的返回結果直觀。

參考資料

  1. 自制AI影象搜尋引擎
  2. 影象檢索|經典方法|快速入門|發展評估
  3. 影象檢索:基於內容的影象檢索技術