百度優化:一款用于改進圖片搜索效果的標注游戲 |
發布時間: 2012/9/5 11:10:21 |
圖片搜索由于在搜索目標上的特殊性,往往依賴于圖片所在網頁的文本來判斷圖片的內容(我們成為圖片周邊文本)。而周邊文本往往不能很好的表達圖片的內容,并且一張圖片往往在多個網頁中被引用,圖片周邊文本也不太一致,甚至于很多圖片并沒有周邊文本,因此給圖片搜索算法提出了更高挑戰。
通過“眾包”的方式(百度眾測平臺)為圖片進行信息標注,從而提高搜索引擎的準確性和召回率往往是一個比較有效的方法,并且標注的數據可以作為圖片機器學習的樣本數據,對于提高圖片機器學習的準確率也有很大的效果;但是在圖片標注的過程中也有很多問題需要解決,例如: (1)用戶作弊問題:在“眾包”平臺中,有因為興趣愛好參與標注的,也有因為平臺激勵機制而參與標注的,因此會存在部分用戶為了獲取獎勵而進行作弊的行為,這些作弊行為會給標注數據的準確率帶來很大的影響; (2)如何對用戶的標注進行引導,使得標注的信息更為準確,讓用戶的標注成本更低,標注過程更為有趣味性,從而提高標注的效率; 本文所提到的就是一種帶有防作弊功能的,能夠對用戶的標注信息進行細分引導,從而使得標注數據越來越精確的圖片標注方法。 在本文所描述的圖片標注游戲中,用戶被區分為兩種類型: (1)描述者:對系統展現的一張圖片用一段文字或者幾組關鍵字進行描述,表達出圖片的內容和特點; (2)判斷者:系統向其展現多張圖片(一般情況下為4張)以及一段描述文字,這段描述文字所對應的圖片也包含在所展現的圖片當中,判斷者根據“描述文字”挑選出對應的圖片; 用戶可以隨時在“描述者”和“判斷者”之間切換身份,但是不會出現用戶自己判斷自己所描述的圖片的情況。系統將“描述者”描述的圖片分配給“判斷者”的時候有一套算法確保不會分配給“原描述者”,并且也不會分配給距離“描述者”較近或者可能認識的“判斷者”。我們在文章后面會描述這個分配算法。 一、“描述者”描述圖片的過程 圖1: 圖片標注系統 如圖1,當用戶點擊“圖片標注系統”的“描述圖片”按鈕之后,系統會從圖片數據集(圖片URL集合)中隨機挑選出100個圖片URL,然后逐個給用戶展示圖片(如圖2和3)。 圖2:描述圖片(甲殼蟲昆蟲) 圖3:描述圖片(甲殼蟲汽車) 圖4:描述圖片(甲殼蟲樂隊) 二、“判斷者”判斷圖片的過程 圖5:判斷圖片 當用戶選擇“判斷圖片”的時候,系統也會選擇隨機選擇100個已經有標注(就是有用戶描述)的圖片,每次展示一段標注文字以及相應的4張圖片(可以是更多張,系統可以配置)。如圖5,最上面藍色框里面是已有用戶標注“甲殼蟲汽車”,中間是系統挑選出來的4張圖片,挑選的算法后面會有詳細介紹。挑選的圖片當中包含用戶標注對應的圖片,例如圖5中就是對應中間的紅色甲殼蟲汽車。 當用戶判斷出圖片之后,只要用鼠標點擊相應的圖片就會在圖片周邊有紅色的方框將圖片圈住,用戶點擊繼續判斷即可提交判斷結果并進入到下一個標注文字的判斷。 三、“判斷者”的選取方法 為了防止作弊,系統有一套“判斷者”選取方法,主要避免如下的作弊行為: (1)“描述者”判斷自己所標注的圖片; (2)“描述者”和“判斷者”之間協同作弊; 系統的處理方法如下: (1)“描述者”在標注圖片的時候,系統會記錄描述者的賬號和IP地址; (2)系統在挑選“判斷者”的時候會選擇不同的賬號,并且對IP地址進行位置轉換,選擇一個距離“描述者”較遠的“判斷者”; (3)系統會記錄“標注文字”的分配歷史記錄,不會將同一個“標注文字”重復分配給同一個“判斷者”,“描述者”和“判斷者”之間的持續作弊成本很高; 四、相關圖片的選取方法 系統在挑選“相關圖片”給“判斷者”的時候,需要解決如下問題: (1)不能出現極度相似甚至重復的圖片; (2)圖片之間要對標注文字有區分度和標注引導作用; 對于第1點不難理解,因為出現極度相似甚至重復圖片的時候,那么“判斷者”就沒法選擇圖片。對于第2點我們舉個例子說明一下,例如下面這張圖片(甲殼蟲汽車): 圖6:甲殼蟲汽車 “描述者”在一開始的時候很可能僅僅標注“甲殼蟲”,“甲殼蟲”這個信息雖然沒有錯,但是在應用到圖片檢索的時候會存在歧義,因為“甲殼蟲”可能對應“甲殼蟲汽車”、“甲殼蟲昆蟲”和“甲殼蟲樂隊”,為了引導“描述者”進一步標注出有區分度的標注信息,系統會根據“甲殼蟲”這個關鍵字選取出如下三張圖片: 圖7、標注信息無區分度 這時候“判斷者”根據“甲殼蟲”無法判斷“描述者”所描述的圖片是哪一張,從而雙方都獲取不同系統獎勵的積分,從而推動“描述者”進一步標注更為詳細和有區分度的信息,例如“描述者”可能會進一步描述為:“甲殼蟲汽車、紅色、大眾”,這時候“判斷者”就很容易判斷出圖片。 系統在選擇展現圖片的時候,會根據標注中的關鍵字從圖片庫中進行組合選取,例如標注文字中可以提取出關鍵字K1、K2和K3,系統會對關鍵字進行組合(K1,K2)、(K2、K3)和(K1,K2,K3)等從圖片庫中提取相關的圖片,這是一個根據關鍵字檢索圖片的過程。 選取出相關的候選圖片后,我們會用“感知哈希函數”對圖片進行相似度計算,我們選用基于DCT離散余弦變換的圖像感知哈希,計算出兩張圖片的漢明距離,并且設置閾值為26(可以調整),小于26的情況下我們認為兩張圖片極度相似,從而不選擇這張圖片,例如如下兩張圖片的計算結果: 圖8、Hamming Distance=24.000000 ( <26, 相似 ) 圖9、Hamming Distance=40.000000 ( >26,不相似 ) 通過漢明距離的計算,我們選用圖9中的黃色甲殼蟲,而不選用圖8中第2張紅色甲殼蟲,因為這張圖片和標注文字對應的圖片極度相似。 五、系統的數據通信流 如圖10,圖片標注系統劃分為三層結構:表現層、邏輯層和數據層,各層的功能如下: (1)表現層:圖片標注系統包括Web前端、Android前端和IOS前端等不同終端,用戶可以通過這些終端參與圖片標注; (2)邏輯層:邏輯層是整個系統比較復雜的部分,包括數據預處理、核心調度和標注管理三個不同模塊,后面我們會詳細介紹各個模塊的功能; (3)數據層:圖片標注系統對圖片URL集合等原始數據進行處理,最終產出帶有用戶標注信息的數據集,圖中的“用戶數據”就是用戶信息,而“IP地域數據”是用于判斷用戶所在物理位置用的詞典。 圖10、圖片標注系統結構 下面我們對系統最為復雜的“邏輯層”進行介紹,“邏輯層”包括“數據預處理”、“核心調度”和“標注管理”三部分,功能如下: (1)數據預處理: A、為了改善一些圖片所在服務器響應慢導致終端用戶等待時間過長的問題,數據預處理模塊會對原始圖片URL進行探測,檢測響應速度,篩選出響應時間慢的URL,并且對響應時間慢的圖片進行后臺抓取保存,當終端請求這些圖片的時候會向后臺請求,而不請求原URL地址; B、數據預處理模塊還會對原始數據中的圖片URL發送請求獲取圖片,然后計算其基于DCT的感知哈希值,哈希值用于后面核心調度模塊選擇圖片的時候對比圖片之間的漢明距離,從而決定選取哪些圖片給“判斷者”; (2)核心調度: A、核心調度模塊的第一個功能是為“描述者”選擇展示圖片,當一個用戶作為“描述者”加入系統之后,核心調度模塊會為其隨機挑選100張圖片; B、核心調度模塊的第二個功能是為“描述者”標注的圖片找到一個或者多個“判斷者”,“判斷者”是隨機選取的,和“描述者”之間互不認識,并且選取的“判斷者”的IP在物理距離上離“描述者”比較遠,并且會優先選擇之前未判斷過該圖片的“判斷者”; C、核心調度模塊的第三個功能是為“判斷者”提供標注文字、標注文字對應的圖片以及經過組合搜索和相似度計算之后挑選出來的另外幾張圖片,首先核心模塊會將標注文字進行切詞和關鍵字提取,然后對關鍵字進行一組隨機組合之后從系統中檢索出相關的候選圖片,根據這些圖片的感知哈希值挑選出和標注文字對應圖片的漢明距離超過閾值的圖片,避免出現極度相似甚至相同的圖片(圖片的感知哈希值是之前通過“數據預處理”計算得出的)。 (3)標注管理: 標注管理負責將用戶的標注數據更新到后臺標注數據集中,數據是以圖片的URL作為Key,一個圖片可以對應多段標注文字(如表1),每段標注文字可以被多個“判斷者”判斷,系統會記錄每個“判斷者”的判斷結果(如表2): 【說明】:表1和表2只列出關鍵的數據字段,實際系統中會包括標注時間、判斷時間、標注IP、判斷IP等等更多的信息,這些信息會用于系統防作弊; 【文章小結】: 通過本文所描述的標注游戲能夠快速地獲得大量較為準確的圖片標注信息,對于提高圖片搜索效果有很大的作用,體現在兩個方面: (1)圖片搜索準確率:由于引入精確度較高的標注數據,使得圖片的信息更為全面,搜索準確度更高; (2)圖片搜索召回率:對于沒有“周邊文本”的圖片,原來比較難在搜索引擎中被索引,通過標注系統標注之后能夠索引建庫,從而提高圖片的召回率。 游戲采用的標注方法具有如下特點: (1)防標注作弊功能:由于“描述者”和“判斷者”是通過系統的“核心調度”模塊按照一定的算法進行選取,使得用戶作弊的成本很高,從而避免了用戶作弊行為,使得最終的圖片標注數據準確度較高; (2)對用戶標注進行有效的引導,使得用戶標注出更為精細的,有區分度的標注信息,系統通過對標注文字進行切詞提取出關鍵字,并對關鍵字進行多組組合之后從圖片數據庫中提取出相關圖片,并且通過感知哈希函數計算漢明距離,從而消除相似度極高甚至一樣的圖片,使得提供給“判斷者”的圖片具有區分度,也能夠促使“描述者”進一步精確標注圖片。 本文出自:億恩科技【www.vbseamall.com】 |