阿里研究員華先勝:圖像搜索的前世今生

摘要讓你買買買停不下來的淘寶是如何做到所拍即所得的?


4863f7050adcd29d1ae8507b618d53ac812a914d 


以下內容爲由4月27日由將門主辦的“計算機視覺”主題技術專家微信羣分享嘉賓實錄。

 

自我介紹

我在2001年北大數學系十年寒窗博士畢業以後加入了微軟亞洲研究院在之後9年半的時間在研究院一直從事圖像和視頻的分析工作。2010年底我突然變得有點迷盲雖然一直也在做產品但實際上還沒有真正地上過“戰場”所以當時就做了一個大家都不太看好的決定——我覺得應該真正地到“戰場上打仗”看看我們實際當中的圖像搜索的困難到底在哪裏用戶的需求和痛點到底在哪裏因此之後我去了微軟美國總部必應產品組做了兩年的圖像搜索也發現很多東西需要深入研究。當時微軟的圖像搜索在這兩年之內也發生了很大的變化從比Google差到很多地方都勝過了Google。

 

兩年後我轉到微軟雷德蒙研究院做圖像識別方面的研究。又做了兩年多後漸漸發覺需要更多的資源來實現自己的想法於是我又選擇回到了國內並加入了阿里巴巴的搜索事業部開始做電商的圖像搜索研究。

 

在我加入阿里的一年後電商圖像搜索取得了很大的進展。當時在阿里雲上有很多圖像視頻分析方面的需求但阿里雲沒有一個這樣的組能夠去處理這些大量地需求。所以我當時又做了一個很艱難的決定離開了搜索來到了阿里雲——也就是說我現在是在雲上做視頻圖像的分析、識別和搜索。

 

今天我主要會爲大家介紹圖像的搜索過去、現在和未來以電商爲背景包括其中的一些困難和機會在哪裏最後怎麼樣才能把電商的圖像搜索做到比較好的效果。

 

一、熱鬧非凡的視覺識別和搜索

這些年計算機視覺識別和搜索這個領域非常熱鬧出現了很多的創業公司大公司在這方面也花了很多力氣在做。大家可以從下面的這張圖裏看到的一些例子。

 

01315b06fda581064c3474f311e431fd4f9c5128


亞馬遜出品的Firefly當時引起了很大的轟動雖然這個產品也很難說是不是成功但是當時確實是很大膽的一個舉動。百度也有圖像搜索和圖像識別微軟也有。Google很早也有了Google Goggles這個產品雖然技術跟現在有很大的差別。Pinterest在去年也有這樣的功能問世就是在它自己的分享照片上可以去搜相似的照片或者是相似的產品。當然這個搜索是用網上的圖片去搜網上的圖片和我們今天要分享的還是有一點區別。阿里巴巴的一個圖片搜索——拍立淘強調的是用自己手機去拍照片去搜索網上相同或者相似的商品。這兩者聽起來差不多但是實際上在難度上是有很大的差別。

 

4e31de7f7246529cad7398ae8cd09f73b632b5fc


計算機視覺涉及到的領域有安防、廣告、娛樂方面等各行各業這些年尤其是在深度學習出現後在技術上也有了很大的發展。那麼是不是計算機視覺這個問題已經解決了是不是幾十年的圖像搜索研究真的在我們的日常生活中可以用起來了下面我們會來探討這些問題。

 

二、圖像搜索的定義和分類

 

圖像搜索的方法從Query角度可分爲三類

  1.       以文本搜索作爲搜索的入口。
  2.       以圖像樣例作爲搜索的入口。
  3.       文本、圖像的組合搜索。

 文本搜索又可以細分爲三種

 

第一種用人來對文本做標記

最早期上個世紀七八十年代時是很小的圖片集 是通過人來添加圖像的文本標籤然後通過文本來搜索就夠了。之後就發展到了2004年前後的社交媒體時代那個時候像Flicker上圖片的Tag雖然也是人加的但是通過草根人羣加的量就變得非常地大。通過這個也能做比較不錯的圖片搜索。再往後的標註就不是人給自己的圖片加標籤了而是通過設計一些標註的平臺——比較有名的是Google收購的Image Labeler——以遊戲的方式對圖片進行標註。這些標註當然可以用來做圖像的搜索這就是通過人工加文本標註的方式進行圖像的搜索。

 

第二種通過網頁的文本對圖片進行索引

目前的互聯網通用圖片搜索引擎基本上都是基於這一套技術。通過網頁的文本來對圖片進行索引當然這裏面也涉及到很多的細節包括怎樣從網頁上提取有效的文字以及2008年之後也有很多圖像分析的內容引進到基於網頁的圖片搜索裏來。也就是說雖然圖像是網頁中的圖片但是也會對其進行內容分析——不管是打標籤還是特徵抽取等——來改進文本搜索存在的一些缺陷提升搜索的精準性。

 

第三種自動標註

大量的學術論文是這個方向上的一種叫concept detection或者叫tagging。規模上小到幾十個、幾百個大到上千個、上萬個的標籤。這一類嚴格來講又可細分爲幾類

1、Predefined categories。比如預先定好只分一千類然後就去訓練一個分類器把這個圖片標好。

 

2、不限定標籤的範圍或者說標籤的範圍非常大然後去學習圖片和標籤的一個共同的描述方式從而可以實現近似於free text的文本標註。

 

3、 Implicit tagging即隱式的自動標註。搜索引擎在運行的過程中用戶在搜索時會點擊搜索結果這個時候搜索的詞和搜索的結果就通過被點擊這個動作建立起了一個關聯這種方式也可以認爲是一種標註。雖然它有一些噪聲但是實際上也是非常有效的並且也可以用一些方法降低其噪聲甚至在相似圖像之間傳遞標籤從而擴大標籤的覆蓋率。這種標註對基於網頁的圖像搜索引擎對搜索質量的提升起到了非常關鍵的作用。

 

當然文本的搜索不是我們今天介紹的重點我們今天的重點講的是基於圖像的搜索。這個其實也可以分成兩類一類是圖像本身作爲查詢輸入example-based這也是我們今天重點要去看的。另外一個是sketch的畫圖方法包括畫形狀、畫線、畫顏色分佈等。

 

三、圖像搜索——從火熱到沒落再到興起

下面我們回到example-based的搜索主題這個方向在圖像搜索歷史上也經歷了不同的階段。


1bba65e8479c36a27688ecfc807155f40561e6f5


最早在二十世紀九十年代時那個時候叫做CBIR(Content-Based Image Retrieval)即基於內容的圖像檢索。但是那時基本上只能在幾千、幾萬幅圖上進行檢索而且檢索的效果很難保證。當時有一個一直流行到現在的詞叫做“語義鴻溝”這也是當時我們經常用來質疑基於圖像的搜索或CBIR到底靠不靠譜。因爲當時的特徵難以區分下圖所示的兩種Case。

 

60e549f0a62fcc943c9f98f515df5e717b8cd0e1 


所以這個方向到了2000年之後我們有時候開玩笑把它叫做Sunset Project也就是像落日一樣沒有太大的希望了。這種基於樣例的檢索其實在之前也經常被人質疑 

  1.           樣例從哪裏來如果我有了這個樣例爲什麼還要搜索呢當然這個問題從今天來看已經不是問題了因爲在上個世紀九十年代的時候獲取一個圖像的樣本還不是那麼容易。在手機相機那麼普及的今天獲取一個圖像是易如反掌的所以今天一般沒有人會問這個問題。 
  2.          只有像落日這樣的顏色分佈非常鮮豔且明確的圖搜索結果纔會非常好因此在很多時候我們的搜索結果不是很好。 

圖像搜索的沒落直到2008年左右纔有所起色當時出現了一家叫TinEye的公司提供這樣一種網絡服務你提交一個圖片後它可以幫你找互聯網上跟此圖非常相似的圖片。這在當時引起了非常多的討論也就是說它解決了當時那些技術無法解決的scalability的問題。

 

那麼這個scalability是個什麼意思呢做圖像的檢索當圖片的量非常大時是沒有辦法把Query圖像的特徵與數據庫裏面的圖像進行一一對比的。以現在的計算能力如果圖像只有幾千個甚至上萬個問題都不是很大的。但是當你的圖像再往大到千萬、億級甚至到十億、千億級別的時候就沒有辦法了。

 

所以此時就要把圖片進行索引。索引在文本搜索裏面是通過倒排的方法來做這個是非常容易實現的。但是圖像不一樣圖像的描述是它的特徵而這個特徵是一個向量。這個向量怎樣能夠有效地組織起來實現快速地檢索這是當時TinEye系統往前走了一步的問題。


9d82d2459537a81c43f88490d2b21a1202e2a814 


上面這張圖是盡我所知把當時和後來的Large Scale Image Indexing的方法分了四類也就是用高維的特徵怎樣去建索引的方法。這些方法都是在解決怎樣把高維空間的數據組織起來而方便查找的問題。 

  1.       Partition tree是用各種各樣tree的方法把數據進行分割、分塊使得查找起來比較方便。
  2.       Hashing關於圖像搜索的Paper基本上都是在做Hashing。
  3.       Neighborhood Graph用鄰接圖的方法來建索引的方法。
  4.       Invert Index把所有的圖像特徵轉化成視覺詞然後用倒排的方法來做。 

這幾個方法之間基本上都是可以互相轉化的當然轉化時有時是有信息損失的。如果做大規模的、數據量非常大的圖像搜索我個人認爲用倒排的方法來做比較合適。

 

以上是關於索引這一部分。但是索引這件事情解決了之後是不是就解決了基於內容的圖像搜索問題很遺憾實際上是沒有的。因爲索引只是解決了scalability的問題而且這些方法在做有效性的評估的時候都是與brute-force的方法來比也就是和一個一個比距離的方法來比來判斷索引的方法和brute-force有多接近。但是圖像的表徵問題也就是怎麼樣有效描述這個圖像的問題還沒有很好地解決。只有描述得好才能夠比較兩幅圖像——基於內容的圖像搜索問題實際上就是兩個圖像比較的問題。當然一個真正的搜索系統其實比這個要複雜得多但它最核心的問題是兩幅圖像怎麼比較。

 

四、深度學習的威力

如上所說還有一個問題是當時沒有解決的就是什麼樣的特徵纔是有效的即可以讓我們“認爲的”相似的圖像在特徵上也是相似的特徵上相似的也是我們認爲相似的這樣一個問題。

 

這個問題真正取得進展確實是在深度學習出來之後它可以讓我們去按照自己所想要達到的目標去學習一個神經網絡通過這個神經網絡去抽取圖像的特徵。

 

實際上搜索跟識別是密不可分的尤其是在做大規模圖像搜索時識別、檢測必不可少。識別有時也是要通過搜索來完成的例如如果你類別非常多的時候往往要通過搜索的方法來實現而不是通過模型的方法來做識別。所以搜索和識別在大數據時代的界限變得越來越模糊了它們之間互相需要互相利用。

 

五、 圖像搜索系統的四個基本要求

 

 55bf2e788acac8f69126acaecae10bd755f46d2f


上圖是一個通用的視覺搜索或者圖像搜索的大致流程。一個視覺搜索引擎分成兩塊

  1.           在索引建立的過程首先我們要到互聯網上去找到這些圖發現它以後還要選擇它。看起來簡單的兩個詞——發現和選擇裏面包含的文章卻很多。因爲互聯網上的圖很多不可能把所有的圖都放在索引裏面去這時候就涉及到應該把什麼圖放進去才能滿足用戶的搜索需求。這個要求是說選擇出來的圖片應該能滿足當前時間點上大部分人搜索的需求就可以了這實際上會轉換成爲一個機器學習的問題來解決。 
  2.           選擇好後就要進行理解和索引要知道這個圖片裏有什麼內容。如果基於網頁就要從網頁上抽信息如果是完全基於圖像就要抽取圖像的特徵進行理解並建索引。建立索引以後再把這些索引推到搜索服務的機器上去比如一個互聯網圖片搜索引擎這個時候可能要幾千臺機器才能hold住這個圖片庫的索引。 

那麼這樣的圖像或者視覺搜索系統在宏觀上來看應該有一些什麼樣的要求呢我總結爲以下四個方面

 

2358ec3b8934ecbaadfdd53478cfc242a8a6a468 


首先是相關性這是一個最基本的要求。也就是說當給了一幅圖像進去出來的東西要跟給出的圖像要是相關的。如何定義“相關”一般對於圖片搜索而言基本上是認爲“跟它一樣”或者是“相像”。例如產品同款產品不管顏色是否一樣但它是相同的東西這就叫做相關性。相關性一般來說是做搜索的人最關心的一個問題在關於圖像搜索的學術論文裏面基本上我們大多隻關心這個問題。

 

第二個是覆蓋率這就跟產品非常相關。這裏面有好幾個因素最直接的一個就是我希望搜什麼都能給我結果。不是我只能搜衣服不能搜其他的商品或者我只能搜商品又不能搜別的東西。否則用戶的體驗就很不好。甚至是在電商的搜索引擎裏面如果用戶輸入了一個非商品我們該怎麼反饋給用戶這都是涉及到覆蓋率的問題。

 

伸縮性主要是兩方面的問題1是否能夠高效快速地處理大量的商品和商品的變化即是否能夠非常快速地將大量商品放到索引裏面去而且索引能夠很方便地更新。也就是對於商品建造索引過程而言的一個伸縮性。2能否響應大量用戶的搜索請求。即當有大量的用戶同時訪問搜索服務時要能夠快速地響應所有的請求。

 

用戶體驗比較偏交互式用戶界面設計方面因此在此處不做詳述。

 

六、圖像搜索的主要應用領域

圖片搜索經常被質疑的是到底什麼情況下會用到圖像搜索爲什麼要用圖像搜索這個問題從上個世紀到現在一直不斷的被提及。我總結一下圖像搜索主要可以在以下領域應用

1信息的獲取。例如這個圖片的對象是什麼、在哪裏這個人是誰或者這個花是什麼。2) 拍照購物。當看到一個商品我不知道怎麼用文字描述它能不能通過照片來搜索這個會在後面具體講述。3娛樂。例如一些視頻、電影、新聞、體育等也可能涉及一些搜索的問題。4) 監控監控裏面可能涉及到的搜索。5其他。我個人認爲目前端到端的應用電商拍照購物搜索是最solid的一個應用場景。

 

電商的圖片搜索跟一般的圖片搜索相比其實有更多的挑戰

   用戶對相關性的期望更高。因爲它的目的性非常明顯用戶搜索完了是要買東西的所以對相關性的期望也非常地高。

   對覆蓋率的期望也非常高。比如用戶在嘗試“衣服”可以搜到之後他可能就會繼續搜“鞋子”鞋子搜完以後可能又會搜花、插座等。

   用戶所查詢的圖像質量變化非常大。比如搜索一個玻璃杯它可能是透明的可能有反光、曝光不足、模糊甚至拍的東西是倒的等各種情況。

   對系統性能要求很高。用戶會希望馬上就獲得結果你如果在後臺算兩三分鐘纔給到結果肯定大家都跑掉了。

   有非常具體的衡量標準。如果做算法的話經常會有一些衡量標準但是這些標準是不是真的對之後的業務是合適的一個標準呢

 

實際上在做真正的產品應用時我經常講一個叫做“照妖鏡”的東西就是衡量這個東西到底做得有沒有道理。比如UV獨立的訪客量是多少、GMV成交的金額是多少、轉化率有多高這些都是照妖鏡。但照妖鏡也不是隻跟算法有關也會跟其他的產品設計有關——但最關鍵的還是系統的相關性和覆蓋性以及伸縮性。

 

當然我們的機會也是很多的因爲在電商這個領域除了基礎的技術分佈式計算的技術、深度學習的技術外首先商品的量非常多商品的圖片非常多第二個是用戶的量非常大這也讓這個事情有了更多的機會。

 

七、商品圖像搜索的關鍵技術

現在以電商的圖片搜索作爲背景具體闡述其關鍵技術的實現。

1、相關性

1a3837344d34928264509d7c3907dc2fbc6652c3 


首先要知道一個圖片的大致類型。例如如果是一個商品需要知道它到底是上衣——是男士的上衣還是女士的上衣還是鞋子等。這樣來避免搜索出的結果完全不靠譜這個我們一般把它叫做分類或識別。通過這個其實也可以看到識別在搜索裏面也是非常的關鍵第一步也是必不可少的。


91f7563e70c28017e50773cbc8f6654757a29c3a 


第二個問題是圖片中我感興趣的商品在哪裏如果我們不做商品檢測或者主體檢測通常商品不是很大且背景也比較複雜而電商圖片數據庫裏很多都是這種圖。其實複雜的背景對於電商的商品銷售量也是有影響的我們做過研究如果照片拍的背景比較好如街拍等其實是會促進商品的銷售的。

 

所以我們要做主體的檢測。主體的檢測方法在計算機視覺領域也有很多快速的方法基本上是先要找Proposal Window然後對其進行分類。這個場景通常要求速度非常快一個搜索請求進來後所有的操作——包括上述分類、主體檢測以及後面的一些步驟到最終的返回結果——都是要在幾百毫秒之內返回給用戶的。因此我們的Proposal Window就不能那麼多否則計算量就相當的大所以這就會涉及到後續Proposal Window的refinement這樣一個步驟。 


aa66fc6329c86bcc71a62a94b783945c0456a41a 


當已經知道這個商品在圖片中的位置後更關鍵的一條是到底用什麼特徵來描述商品呢如何能讓這個特徵反映出商品的特性呢這也就是前面講過的怎樣讓這個特徵可以去比較兩幅圖像——也就是兩個商品。

 

基本方法還是是利用深度學習這個工具force神經網絡收斂到一個地方使得特徵輸出能夠反映出這個商品的特性例如些種類、風格、圖案、顏色等。

 

綜上可以從三個角度在很大程度上解決相關性的問題也就是從分類、主體的檢測以及圖像特徵的角度讓相關性得到很大的改善。

 

2、覆蓋率

覆蓋率對用戶的體驗有相當大的影響——如果只能搜到這個而搜不到那個或者本來應該搜到的商品但是沒有找到這樣用戶體驗都會非常不好。

 

我把覆蓋率分爲三個角度來講——

  1.          索引的覆蓋率。這是我們一般提到覆蓋率時所指的含義。簡單說就是索引裏多少貨商品當然是越多越好種類越全越好這個比較容易理解。
  2.          特徵的覆蓋率。特徵的覆蓋率是指商品的描述能夠覆蓋各個種類不是隻能做鞋子或只能做服裝而不能做別的東西甚至非商品是不是能做。爲了描述的精準、描述能力的優化實際上不同的類型一般用不同的特徵來描述。
  3.         搜索的覆蓋率。這個覆蓋率是電商場景下所獨有的因爲電商只有商品圖像的索引沒有別的索引那麼用戶如果輸入的不是電商產品的圖片該怎麼辦比如用戶在街上看到一條很可愛的狗並拍照後在平臺上搜索該怎麼處理呢——淘寶上可能沒有賣狗的吧這個時候我們可以把狗識別出來然後返回給用戶一些狗相關的產品這是一種解決方案。如果是風景、食品的話也可以對風景進行識別對食品裏面的熱量進行識別然後把這些信息返回給用戶。

 

 0244cc2fa4e8705ebfc2e95666cf6257f5e942a9


如果一定要返回電商商品的話比如用戶拍了一朵花也可以force搜索引擎還是到fashion這個領域去搜那麼搜出來的衣服、飾品就會跟用戶輸入的圖像有一點關係看上去在某個方面很類似如下圖。

4c8fa7582987e423a33caf37e157cdb49320b20c 


下圖的例子很有意思照片上是一個晚上的橋通過它搜出來的東西很有意思是格子樣式很像這個橋的線條的上衣。

 


b828d0a03730cfd6964a208d904f3b57ade069b3


3、伸縮性

伸縮性的實現方式主要有兩種

788389e8b2b4c5fd9c62cd31bc9b1c9c66b8ef7e 


  1.          通過系統的方法也就是通過大量的機器來實現。索引技術有了系統的方法來實現因此對索引的要求其實沒有那麼高有很多方法都可以完全滿足搜索系統的構建需求。正如講搜索引擎架構時所述索引會分到很多機器上去那麼只要做到每一臺機器上的數據搜索效率足夠高的話那麼這個系統就可以完成大規模的搜索任務。 
  2.          對於算法而言就集中在一臺機器上怎麼樣做到高效。那麼一臺機器上怎麼做到高效前面講到的圖像各種方法都可以用。 

以上是關於電商圖片搜索的內容最後再給大家分享一些電商搜索產品的例子。下面這個產品叫做“拍立淘”在手機淘寶搜索框的右邊有一個小的攝象頭圖標點這個圖標就能進入“拍立淘”的界面。

 

17632ec8ab3a5b75b6a5f7fe4fc4f6793f4df33f 


以下是“拍立淘”圖片搜索的一些例子。


 f41cf4ee2f17f3a0604244f972037df4cf202eeb


總結而言對於一個真正的應用產品來講視覺搜索和圖像識別確實仍有很多的挑戰但同時也有很多的機會。尤其是現在這個時代技術方面有深度學習的技術、大數據分析處理的技術包括分佈式計算這樣一些平臺。數據的獲取也非常容易人人都有手機每個手機又都有相機就有了大量的圖形數據和大量活躍的用戶使得有機會讓圖像搜索的問題得到本質上的改善。雖然目前這個問題還沒有完全解決但是實際上在拍立淘裏你也可以看到很多實際的例子真的邁出了很大一步。

 

3071802f722a31a127c1ceb5bf4bc37382979041 


八、圖像搜索的明天

展望圖像搜索和識別技術的未來我個人認爲這可能不是某一個算法能解決的也不是僅憑深度學習就可以解決的也不是說一個搜索系統、識別系統就可以解決的。我認爲是四個方面結合起來數據、用戶、模型和系統。這四個方面放在一起可能不斷地縮小語義鴻溝使得我們的搜索“所想”就能夠得到“所得”。

 

8f8571a20e384331bedd80e363cc9bbb0c05632b 


如果大家有興趣的話我現在阿里雲帶領視覺計算組雲上也涉及到一些視頻搜索的任務更多的還是識別、還有很多視頻處理、視頻分析、視頻識別等這些方面的一些需求包括教育、醫療方面、娛樂方面、體育方面可能都會有。


43ffce1425656b87141b2c231bd1c07868b3d9ba 

    

如果有想加入到我的項目組的朋友歡迎發送簡歷到[email protected]

 

END. 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章