【將門創投】圖像搜索的前世此生,讓你買買買停不下來的淘寶是如何作到所拍即所得的?

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

 

分享嘉賓:阿里雲研究員華先勝博士算法

 

自我介紹數據庫

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

 

兩年後我轉到微軟雷德蒙研究院,作圖像識別方面的研究。又作了兩年多後,漸漸發覺須要更多的資源來實現本身的想法,因而我又選擇回到了國內並加入了阿里巴巴的搜索事業部,開始作電商的圖像搜索研究。網絡

 

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

 

今天我主要會爲你們介紹圖像的搜索過去、如今和將來,以電商爲背景,包括其中的一些困難和機會在哪裏,最後怎麼樣才能把電商的圖像搜索作到比較好的效果機器學習

 

熱鬧非凡的視覺識別和搜索分佈式

這些年計算機視覺識別和搜索這個領域很是熱鬧,出現了不少的創業公司,大公司在這方面也花了不少力氣在作。你們能夠從下面的這張圖裏看到的一些例子。工具

 

 

亞馬遜出品的Firefly當時引發了很大的轟動,雖然這個產品也很難說是否是成功,可是當時確實是很大膽的一個舉動。百度也有圖像搜索和圖像識別,微軟也有。Google很早也有了Google Goggles這個產品,雖然技術跟如今有很大的差異。Pinterest在去年也有這樣的功能問世,就是在它本身的分享照片上,能夠去搜類似的照片或者是類似的產品。固然這個搜索是用網上的圖片去搜網上的圖片,和咱們今天要分享的仍是有一點區別。阿里巴巴的一個圖片搜索——拍立淘強調的是用本身手機去拍照片去搜索網上相同或者類似的商品。這二者聽起來差很少,可是實際上在難度上是有很大的差異。性能

 

 

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

 

熱圖像搜索的定義和分類

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

  • 以文本搜索做爲搜索的入口。

  • 以圖像樣例做爲搜索的入口。

  • 文本、圖像的組合搜索。

 

文本搜索又能夠細分爲三種:

 

第一種,用人來對文本作標記

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

 

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

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

 

第三種,自動標註

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

 

  • Predefined categories。好比預先定好只分一千類,而後就去訓練一個分類器,把這個圖片標好。

  • 不限定標籤的範圍,或者說標籤的範圍很是大,而後去學習圖片和標籤的一個共同的描述方式,從而能夠實現近似於free text的文本標註。

  • Implicit tagging,即隱式的自動標註。搜索引擎在運行的過程當中,用戶在搜索時會點擊搜索結果,這個時候搜索的詞和搜索的結果就經過被點擊這個動做創建起了一個關聯,這種方式也能夠認爲是一種標註。雖然它有一些噪聲,可是實際上也是很是有效的,而且也能夠用一些方法下降其噪聲,甚至在類似圖像之間傳遞標籤,從而擴大標籤的覆蓋率。這種標註對基於網頁的圖像搜索引擎對搜索質量的提高起到了很是關鍵的做用。

     

 

固然文本的搜索不是咱們今天介紹的重點,咱們今天的重點講的是基於圖像的搜索。這個其實也能夠分紅兩類,一類是圖像自己做爲查詢輸入(example-based),這也是咱們今天重點要去看的。另一個是sketch的畫圖方法,包括畫形狀、畫線、畫顏色分佈等。

 

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

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

 

 

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

 

 

因此這個方向到了2000年以後,咱們有時候開玩笑把它叫作Sunset Project,也就是像落日同樣沒有太大的但願了。這種基於樣例的檢索其實在以前也常常被人質疑:

 

  • 樣例從哪裏來?若是我有了這個樣例爲何還要搜索呢?固然這個問題從今天來看已經不是問題了,由於在上個世紀九十年代的時候,獲取一個圖像的樣本還不是那麼容易。在手機相機那麼普及的今天,獲取一個圖像是易如反掌的,因此今天通常沒有人會問這個問題。

  • 只有像落日這樣的顏色分佈很是鮮豔且明確的圖,搜索結果纔會很是好,所以在不少時候咱們的搜索結果不是很好。

 

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

 

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

 

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

 

 

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

 

  • Partition tree:是用各類各樣tree的方法,把數據進行分割、分塊,使得查找起來比較方便。

  • Hashing:關於圖像搜索的Paper基本上都是在作Hashing。

  • Neighborhood Graph:用鄰接圖的方法來建索引的方法。

  • Invert Index:把全部的圖像特徵轉化成視覺詞,而後用倒排的方法來作。

 

這幾個方法之間基本上都是能夠互相轉化的,固然轉化時有時是有信息損失的。若是作大規模的、數據量很是大的圖像搜索,我我的認爲用倒排的方法來作比較合適。

 

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

 

深度學習的威力

如上所說,還有一個問題是當時沒有解決的,就是什麼樣的特徵纔是有效的,便可以讓咱們「認爲的」類似的圖像在特徵上也是類似的,特徵上類似的也是咱們認爲類似的,這樣一個問題。

 

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

 

實際上搜索跟識別是密不可分的,尤爲是在作大規模圖像搜索時,識別、檢測必不可少。識別有時也是要經過搜索來完成的,例如,若是你類別很是多的時候,每每要經過搜索的方法來實現,而不是經過模型的方法來作識別。因此搜索和識別在大數據時代的界限變得愈來愈模糊了,它們之間互相須要,互相利用。

 

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

 

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

 

  • 在索引創建的過程,首先咱們要到互聯網上去找到這些圖,發現它之後還要選擇它。看起來簡單的兩個詞——發現和選擇,裏面包含的文章卻不少。由於互聯網上的圖不少,不可能把全部的圖都放在索引裏面去,這時候就涉及到應該把什麼圖放進去才能知足用戶的搜索需求。這個要求是說選擇出來的圖片應該能知足當前時間點上大部分人搜索的需求就能夠了,這實際上會轉換成爲一個機器學習的問題來解決。

  • 選擇好後就要進行理解和索引:要知道這個圖片裏有什麼內容。若是基於網頁,就要從網頁上抽信息;若是是徹底基於圖像,就要抽取圖像的特徵進行理解並建索引。創建索引之後,再把這些索引推到搜索服務的機器上去,好比一個互聯網圖片搜索引擎,這個時候可能要幾千臺機器才能hold住這個圖片庫的索引。

 

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

 

 

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

 

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

 

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

 

用戶體驗比較偏交互式用戶界面設計方面,所以在此處不作詳述。

 

圖像搜索的主要應用領域

圖片搜索常常被質疑的是,到底什麼狀況下會用到圖像搜索,爲何要用圖像搜索?這個問題從上個世紀到如今一直不斷的被說起。我總結一下,圖像搜索主要能夠在如下領域應用:

 

  • 信息的獲取。例如這個圖片的對象是什麼、在哪裏,這我的是誰,或者這個花是什麼。

  • 拍照購物。當看到一個商品,我不知道怎麼用文字描述它,能不能經過照片來搜索?這個會在後面具體講述。

  • 娛樂。例如一些視頻、電影、新聞、體育等也可能涉及一些搜索的問題。

  • 監控。監控裏面可能涉及到的搜索。

  • 其餘。我我的認爲,目前端到端的應用,電商拍照購物搜索是最solid的一個應用場景。

 

電商的圖片搜索跟通常的圖片搜索相比,其實有更多的挑戰:

  • 用戶對相關性的指望更高。由於它的目的性很是明顯,用戶搜索完了是要買東西的,因此對相關性的指望也很是地高。

  • 對覆蓋率的指望也很是高。好比用戶在嘗試「衣服」能夠搜到以後,他可能就會繼續搜「鞋子」,鞋子搜完之後可能又會搜花、插座等。

  • 用戶所查詢的圖像質量變化很是大。好比搜索一個玻璃杯,它多是透明的,可能有反光、曝光不足、模糊,甚至拍的東西是倒的等各類狀況。

  • 對系統性能要求很高。用戶會但願立刻就得到結果,你若是在後臺算兩三分鐘纔給到結果,確定你們都跑掉了。

  • 有很是具體的衡量標準。若是作算法的話,常常會有一些衡量標準,可是這些標準是否是真的對以後的業務是合適的一個標準呢?

     

 

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

 

固然咱們的機會也是不少的,由於在電商這個領域,除了基礎的技術(分佈式計算的技術、深度學習的技術)外,首先商品的量很是多,商品的圖片很是多;第二個是用戶的量很是大,這也讓這個事情有了更多的機會。

 

商品圖像搜索的關鍵技術

如今以電商的圖片搜索做爲背景,具體闡述其關鍵技術的實現。

 

1. 相關性

 

首先,要知道一個圖片的大體類型。例如,若是是一個商品,須要知道它究竟是上衣——是男士的上衣仍是女士的上衣,仍是鞋子等。這樣來避免搜索出的結果徹底不靠譜,這個咱們通常把它叫作分類或識別。經過這個其實也能夠看到,識別在搜索裏面也是很是的關鍵,第一步也是必不可少的。

 

 

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

 

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

 

 

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

 

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

 

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

 

2. 覆蓋率

覆蓋率對用戶的體驗有至關大的影響——若是隻能搜到這個而搜不到那個,或者原本應該搜到的商品可是沒有找到,這樣用戶體驗都會很是很差。

 

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

  • 索引的覆蓋率。這是咱們通常提到覆蓋率時所指的含義。簡單說就是索引裏多少貨(商品),固然是越多越好,種類越全越好,這個比較容易理解。

  • 特徵的覆蓋率。特徵的覆蓋率是指商品的描述可以覆蓋各個種類,不是隻能作鞋子或只能作服裝,而不能作別的東西,甚至非商品是否是能作。爲了描述的精準、描述能力的優化,實際上不一樣的類型通常用不一樣的特徵來描述。

  • 搜索的覆蓋率。這個覆蓋率是電商場景下所獨有的,由於電商只有商品圖像的索引,沒有別的索引,那麼用戶若是輸入的不是電商產品的圖片該怎麼辦?好比用戶在街上看到一條很可愛的狗並拍照後在平臺上搜索,該怎麼處理呢?——淘寶上可能沒有賣狗的吧!這個時候咱們能夠把狗識別出來,而後返回給用戶一些狗相關的產品,這是一種解決方案。若是是風景、食品的話,也能夠對風景進行識別,對食品裏面的熱量進行識別,而後把這些信息返回給用戶。

     

     



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

 

 

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

 

 

3. 伸縮性

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

 

 

  • 經過系統的方法,也就是經過大量的機器來實現。索引技術有了系統的方法來實現,所以對索引的要求其實沒有那麼高,有不少方法均可以徹底知足搜索系統的構建需求。正如講搜索引擎架構時所述,索引會分到不少機器上去,那麼只要作到每一臺機器上的數據搜索效率足夠高的話,那麼這個系統就能夠完成大規模的搜索任務。

  • 對於算法而言,就集中在一臺機器上怎麼樣作到高效。那麼一臺機器上怎麼作到高效,前面講到的圖像各類方法均可以用。

     

 

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

 

 

如下是「拍立淘」圖片搜索的一些例子。

 

 

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

 

 

圖像搜索的明天

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

 

 

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

 

 

若是有想加入到個人項目組的朋友,歡迎發送簡歷到 vcidst@list.alibaba-inc.com

 

-END-

相關文章
相關標籤/搜索