如何做一個「實用」的圖像數據集
目錄
引言
一、探究數據的「用途」
二、梳理專業的「知識」
三、數據與知識「迭代」
四、確定性能的「指標」
五、總結
鳴謝、文獻
編者序
大家都說這是一個大數據的年代,人工智慧的落地需要數據, 深度學習更需要海量數據。於是, 出現了一個流行的口號:「數據就是新的石油「(Data is the new oil)。這個比喻很形象,但容易把問題簡單化。首先,對於人工智慧的應用來說,數據頂多只是原油( crude oil),就是那種黑糊糊的液體, 要變成可以用的汽油, 還需要複雜的取捨和提煉過程。其次,汽油對各種汽車是通用的,而人工智慧的需求非常廣泛, 任務各異,往往根據不同任務,要精鍊不同的汽油。更複雜的是,對於一個行業或者產品來說, 它的任務定義往往是模糊的。那麼「數據」和「任務」需要一個長期的迭代過程,這個過程成本是相當高的。
本文作者賈夢雷是中科大畢業的,其帶領的阿里巴巴「圖像和美」團隊開發計算機視覺在時尚領域的應用,花了7年時間迭代數據與任務。非常感謝他與我們分享他們在第一線「煉油」的心路歷程, 以及各種洞見。
引言
近年來AI受到各界關注,公司、政府及民眾對於AI落地都充滿期待。在媒體的描述中,各種AI落地的場景呼之欲出。不過在我們看來,目前AI演算法在很多數據集上的成功多是學術意義上的,距離商業落地還有一段較長的路要走。如今眾多科研人員從學術界走向工業界,大量在校學生投入AI領域。當前正是時候和大家探討AI落地中的數據挑戰。本文的目的在於分享經驗與同行探討。
我們在阿里巴巴圖像和美團隊探索將AI用於時尚領域,已經有七個年頭。我們希望開發的AI產品對衣服的理解不只限於照片和文字,而是可以理解衣服本身,進而理解時尚穿搭之道、理解流行風向;我們希望這樣的理解可以作用在阿里巴巴數以億計的商品上,從而影響大眾、改變行業。
讓AI懂得時尚,且不說商業落地,僅從技術上聽起來,就有點天方夜譚:時尚是如此主觀,人都很難理解,何況機器?其實,做時尚AI的魅力也就在此——「如何客觀地看待主觀世界」——需要我們把嚴謹的科研態度和行業洞察力、想像力結合在一起,才能為機器打造一顆「時尚之心」。
讓機器理解衣服,核心是製作服飾圖像數據集。我們在本文分享「時尚之心」項目中最基礎也最有挑戰的部分:如何製作一個「實用」的圖像數據集?這裡的「實用」指的是能夠達到商業落地的程度。構建一個圖像數據集,即是在一定的「用途」目的下,將「知識」與「圖像」做關聯,並給出評價演算法的「指標」。
文章結構也是按照以上四個關鍵詞來組織的:文章第一部分是對「用途」的探討,第二、三、四部分圍繞著「知識」、「數據」和「指標」來展開,最後是總結。
一、探究數據的「用途」
十幾年前我讀研究生時,方向是機器人。有朋友問起:「你做的機器人是幹什麼用的?」我一時語塞,還有點氣憤。那時我做機器人,硬體從零做起,用於研究探路演算法、發表學術論文。零基礎、缺經費、加上學生的目標是純粹做研究,我壓根沒想過自己的機器人真能派什麼用。做學問嘛,怎麼能圖「有用」呢?
一方面覺得被拷問「用途」是受辱,一方面又覺得朋友問得對。後來我常拿「做什麼用」來問自己,提醒自己這個世界另有期待。畢業後我從事計算機視覺的工作。做圖像演算法比研究機器人探路更接近現實應用。要讓演算法走向實用,首先要讓數據集走向實用。圖像數據集在計算機視覺研究中的的作用,好比實驗對象在科研工作中的作用。實驗對象的採制是否嚴謹合理、距離實際有多遠,直接決定了科研成果是否可靠、是否能用於實際。可以說,實驗對象在相當程度上決定了科研活動的水平。
計算機視覺發展的時間還不長,人們像呵護孩子一樣,鼓勵新想法、包容不完美。過去學術界對圖像數據集的要求實際是比較低的,數據量大一些大家就滿意了。如果按一個成熟的科研方向來要求的話,過去二十年業界所出現的數據集,遠不能讓人滿意。絕大部分數據集,內在結構鬆散,外在用途不明,距離指導演算法落地還比較遠。
在過去的幾年,深度學習的興起使得計算機視覺的工具有了長足進步。隨著媒體熱炒、資本湧入、政府重視,人們對於AI落地有了熱切的期望。AI演算法要落地實用,首先是要數據集能達到落地實用。目前學術界的論文和競賽所依賴的數據集,距離其所宣稱的作用和意義相去甚遠。這點也是業界心照不宣的共識。
中國古代用「性、相、用」來分析一個事物,即通過「性質、顯現、用途」來認識一個事物。套用在數據集上:「性」是製作數據集的方法和原則,「相」是數據集的具體內容,「用」是數據集的用途。
在過去,論文往往著重介紹數據集的「性」和「相」,即製作方法和具體內容,而對數據集的「用」描述過於簡略。也難怪,過去的數據集基本用來驗證方法本身(如分類方法、檢測方法),是從學者的視角出發,而不是從實際問題出發。業界衡量一個數據集是否成功,往往只用被引用次數、影響力大小,而忽略數據集的內在邏輯結構和外在實用價值,有點像自說自話。
我們關心AI演算法的落地,就必須關心數據集的用途。圖像中的內容,可分為兩大類:「自然的」和「人造的」。自然的如風景、動物,人造的如汽車、文字。內容為自然事物的圖像,例如人臉照片,是證件照還是監控攝像頭拍照,差異巨大,這是由其使用場景——用途——直接決定的。而對於人造事物,「用途」的重要性更甚:事物的形態往往是其功能的體現,人們是通過「用途」去認識這類東西的。
2017年我去UCLA拜訪朱松純老師時,聊起當年蓮花山項目在圖像標註上遇到的困難。朱老師舉例說,比如標註「杯子」,杯子形態各異、難以窮舉,甚至聚攏手掌也可以是杯子:人是通過「盛水」這一功能去認識杯子的,而不是具體形象——「用途」先於「表相」;而同一個杯子,也可以有不同用途,在使用者眼中有不同的理解方式。 因此標註再多圖像,識別效果也未必好。稱「用途」,是從工具角度來看;從使用者的角度來看,則稱為「任務」。人總是在一定任務背景下去理解事物、操作工具。用途和任務,屬於人的認知領域,這啟發他,要解決視覺問題,先要去研究綜合各種感官、心理、記憶在一起的認知問題。
可見,強調「用」不僅是出於實用價值,也是加深對研究對象的理解的內在需要。在製作數據集的過程中,「用途」作為製作者做取捨的依據,其作用會體現在各個環節、不同層面上。接下來我們首先看到的,就是重視「用途」對於數據集中「知識」的影響。
二、梳理專業的「知識」
2.1忽視專業知識,無法做出有用的數據集
我們把一個特定場景下的經驗和規則,稱為專業知識。製作一個實用的圖像數據集,即是將特定場景下的知識與該場景下的圖像做關聯。如同製作一個工具,製作人員事先對於工具的典型使用場景必須有所了解,設計上有對該場景的考慮。如果缺乏特定場景的經驗,數據集就無法指導實踐。
例如,LFW Face Database[1]是一個知名的數據集,包括13000張標註好的人臉圖像。作者的目的是製作一個「非限制條件下」的數據集,用來評價模型的人臉識別能力。實際上,這批圖像主要是採集自網路的歐美名人的正面照片,與攝像頭監控、證件識別等實際場景中的照片相去甚遠。很多技術團隊在此數據集上做激烈的競爭,但這些數字指標對於揭示他們的模型是否能在實際場景中發揮作用,並無太大的參考價值。要評價模型在實際場景中的能力,需要使用特定場景的數據和知識。
有的製作者雖然使用了特定領域的數據,但缺乏專業人士的指導,只是沿用學術界慣有的方法,想當然的把一些專有名詞與圖像做了關聯。這樣製作出的數據集可能與實際情況有很大偏差。
例如,ChestX-ray8[2]是2017年發布的一個胸部X光數據集。製作者使用自然語言處理的一些手段對X光圖像的報告單進行了文本挖掘,得到一系列疾病標籤,把這些標籤和對應的圖像關聯起來。專業人士LukeOakden-Rayner醫生[3]指出:部分疾病標籤並非通過觀察醫療影像得出的,而是結合其他診斷信息綜合得出的……實際上(報告單的內容是),觀察影像的醫生在通過影像回答另一位醫生的問題,對同一張圖像的不同提問,可能有不同、甚至相反的回答。因此,疾病標籤和圖像的關聯很可能不符合實際情況。當然,數據集的製作者也充分認識到了這個局限性。他們基於900張報告單做了一個專家對比實驗,實驗表明文本挖掘得到的疾病標籤準確率遠未達到100%。
再舉一例。DeepFashion[4]是2016年發布的一個服飾圖像數據集,包括了超過80萬張時裝照片,被歸到50個類別里。這50個類別標籤來自製作者從兩個服飾網站的查詢詞中抽取的名詞,這些標籤被聲明是互斥的,但實際情況並非如此。例如毛衣(Sweater)和龜領(Turtleneck)這兩個標籤,毛衣屬於「材質」的範疇,而龜領屬於「領子設計」的範疇,兩個標籤在概念上並非平行對等,不能並列作為服飾的兩個類別。如圖1,「龜領」類別的衣服,同時也是「毛衣」。這類錯誤在DeepFashion數據集中並不少見。
圖1.DeepFashion中的「龜領」標籤下服裝
顯而易見,如果用於指導標註的知識沒有被很好的梳理,那麼數據集必然質量不佳,很難期望能產出好的模型;即使模型在評測中表現良好,在實際中使用也會很糟糕。
2.2 原有知識體系往往有局限
即使能獲取到專門的數據,有專業人士的幫助,數據集製作者在「知識構建」上仍需付出巨大的努力。這是因為,知識的「用途」發生了變化。
一個領域的專業知識,原本只在該領域的專業人士之間流通,是為了人和人的溝通的;而製作數據集的目的是把人的經驗傳遞給機器。直接把原有知識體系照搬到機器學習中來,往往行不通,主要問題就是「不完備」和「二義性」問題。
這裡的「完備」,指的是上層概念所覆蓋的範圍,要能被下層概念完全覆蓋。例如「中國人」可以被「南方人」和「北方人」覆蓋。如果無法完全覆蓋則稱為「不完備」。這裡的「二義性」,指的是同層級的兩個概念,覆蓋的範圍有一定的重合,例如會有一部分「中國人」歸屬到「南方人」或「北方人」都說得通,是模稜兩可的。專業知識往往來自於人的日常經驗,天然具有一定的不完備和二義性。例如醫療影像中的疾病種類,是無法完全枚舉的。
人去處理溝通中的「不完備」和「二義性」,問題不大,因為人既有生活常識、也經過一定的背景訓練,可以根據經驗來糾錯。而機器不行,機器就如同白紙一張的嬰幼兒,接收到的往往只有標註數據,告訴他什麼就是什麼,辨別能力或者說容錯能力非常低。當然我們可以像訓練嬰幼兒一樣,用多種數據訓練一個有一定推理糾錯能力的模型,這屬於探索性的嘗試,對於當下絕大部分的商業應用來說並不現實。因此,有必要對原有知識體系做出修正,減少不完備性和二義性,以適應機器當下的學習能力。
若觀察原有知識體系,可以看出它們多是從一個個實例出發、自底向上構建的,因此難以避免不完備和二義性的缺陷。如果換個方式,一開始就注意避免不完備和二義性,自頂向下構建知識體系,這可行嗎?答案是否定的。我們雖然可以從邏輯上規避二義性,但實際層面的二義性一點不少。例如,我們把「商品圖」分為「模特圖」和「非模特圖」,簡單理解,就是有人的圖,和沒有人只有商品的圖。這在邏輯上沒有二義性,但實際情況例如圖2,圖中是穿在腳上的一雙鞋,這算是模特圖還是非模特圖呢?
圖2.穿在腳上的一雙鞋
遇到這種情況,需要拆分概念,將「模特圖」拆分為「手模圖、腿模圖、假模圖、半身模特圖、全身模特圖」等等,如圖3所示,而拆分又必然導致不完備:這些分類能窮盡模特圖的所有情況嗎?顯然不能。但為了在實際中讓標註人員容易理解,又不得不拆分。我們只能根據實際情況,做一個權衡。
圖3. 依次為:平鋪圖、假模圖、手模圖、腿模圖、全身模特圖
對於「不完備」,還有一類普遍情況,值得重視。如圖4所示,我們要標註裙長,但圖中無法展現裙子的全長,這屬於「無法判別」的情況。
圖4. 裙子被截斷的圖片
學術界的通常做法是拋棄這類樣本,數據集里只保留可以清晰判別的樣本。這種減少二義性的措施可以理解,不過,在實用中,這種例子是不能拋棄的。因為在實際中模型必然會碰到這種不可判別情況,沒有人會為你擋駕,模型需要具備對這類情況「說不」的能力,準確的說,是打上「無法判別」標籤。因此,製作數據集時,我們要保留這部分數據、設立為「無法判別」的分類,這個措施也可看作是為了知識的「完備性」而做的努力。
以上還是專業知識來自單一人群的情況,如果是多類人群對於同一知識點有不同理解,就更複雜了,需要做跨角色的知識重建。
2.3跨越多種角色的知識重建
在實際中,「專業人士」可能並非單一的人群,而是在一件事的不同環節上的多種角色,他們視角不同,使用的知識體系也不同。
例如,服裝的「顏色」屬性,就有「計算機的顏色空間」、「潘通色卡」、「服裝營銷色彩」等不同知識體系。在計算機的顏色空間中,一個點可以代表一種顏色,如在「RGB空間」中,一個(R,G,B)三元組就對應一種顏色,這可被計算機理解,但無法用於日常溝通。「潘通色卡」是國際上通用的紡織、印刷、塑膠、繪圖等領域的色彩標準語言,其中國際紡織服裝的版本包括2310種顏色。這麼細的劃分,很難被消費者理解,服裝商通常會建立一套大眾可以理解的顏色標籤,即「服裝營銷色彩」,粗分有8到10種色系,細分有上百種顏色。以「紅色」為例,如圖5所示。要將演算法模型付諸實用,我們就要打通這三套顏色體系、做知識連接。
圖5. 紅色在不同顏色體系中的值
以上是簡單的例子,更複雜的例子是服飾的「風格」屬性。在電商服飾的生產流通中,有「生產商」、「電商平台」、「零售商」三個角色,三者各自有一套「女裝風格」體系:
生產商的風格體系,是設計師和服飾企劃人員用的,用的是工業設計語言,這個體系相對完備和穩定。
電商平台的風格體系,是平台運營人員用的,用的是運營語言,用於管理貨品、組織賣場,體系的穩定性介於生產商和零售商之間,是二者的橋樑。
零售商面對消費者,用的是營銷語言,風格體系要根據時尚趨勢和消費熱點而變化,特點是靈活發散,易於消費者理解和聯想。
我們可以通過圖6獲取三者的直觀印象。
圖6. 三種角色各自的風格體系
生產商的風格體系,有四個相對獨立的維度,每個維度用代表該維度兩極的辭彙來表示,例如「男性化,女性化」是其中一個維度,其他三個維度是「經典,前衛」、「民族,現代」、「活潑,優雅」,這構成一個四維的設計空間,在服裝企劃人員的眼裡,每件衣服都對應著這個空間中的一個位置。例如圖6中的連衣裙將落在「女性化、現代、前衛、活潑」這個象限里,服裝企劃人員會給出一個具體的位置。
而在電商平颱風格體系,是由「歐美」、「復古」等12種標籤組成的一個平鋪結構,我們依此訓練了模型,來給任意一件女裝打標。當一件衣服來的時候,模型會判斷衣服與這些標籤的匹配程度,按概率大小取前三名(一件衣服可能兼容多種風格)。例如圖6中的連衣裙被判為「甜美」的概率為79.38%,其次是「田園」和「歐美」。
零售商的風格體系是在日積月累中形成的,主要出於營銷目的。假設最近市場上流行「波西米亞」風,營銷人員就找一部分有相似理念的衣服,打上「波西米亞」的標籤;過一段「小清新」風盛行,就給相似理念的衣服打上「小清新」標籤。這是一種打補丁的標籤積累方式,不太注重標籤之間的內在邏輯。例如圖6中的連衣裙,按營銷知識體系會有「鄉村」、「日系」、「小清新」等標籤。
做一個實用的風格體系,意味著要能貫穿從生產到營銷的全過程,我們要建立一個「層次式」的知識體系,如圖7所示:以穩定的工業設計知識為基底、平台運營知識為橋樑、大眾營銷知識為上層,用技術將其打通,使得上層的任一概念可以在下層有投影。這樣的體系,對下連接到海量商品,對上承接消費者需求,把以前分散在各個環節的、主觀的、零散的行為,轉化為一件系統性的工作。這是理想化的結構,我們也在探索中。
圖7. 層次式的風格體系
綜上所述,要製作一個實用的數據集,需要製作者在專業人士的指導下做知識重建,這是一個需要製作者親力親為、勇於付出的過程,難以討巧、無法迴避。從更大的視角來看,AI落地的過程,實際是一個促使生產的各個環節加強溝通、重建知識體系的過程,是知識從各自的孤島走向整體的過程。這個過程需要所有環節的人一起努力,而當中AI從業者應肩負起主要責任。
三、數據與知識「迭代」
3.1 數據製作的流程
如上一章介紹,知識需要被重建,因為知識的用途發生了變化:從專業人士之間的溝通到人和機器的溝通。同時,知識的載體——數據——也發生了變化:從日常經驗的數據到有組織採集的大量數據。例如,以前服裝陳列師對風格的認識,是經年累月從門店、雜誌的商品中得來的,而今天演算法人員會通過搜索引擎定向收集成千上萬的相關圖片,這是服裝陳列師所沒見到過的。
將採集來的大量圖像與知識做關聯,就是圖像數據標註。知識和數據的關係是一體兩面:知識是數據的抽象,數據是知識的載體。這個關係反映在數據集製作過程中,就是:知識會指導數據的採集和標註,而在數據的採集和標註過程中,知識又會被修正,這是一個彼此影響、反覆迭代的過程。這個過程按次序可以大致分為四個步驟:
A. 演算法人員和專業人士探討學習,做知識的轉譯和重整。
B. 演算法人員根據知識點採集圖像。
C. 標註人員學習標註規則,對圖像做標註。
D. 將標註好的圖像輸入機器,做訓練和評測。
下面按順序介紹每個步驟中的挑戰和應對,我們將看到數據和知識是如何反覆迭代的。
3.2 第一步:知識的轉譯和重整
首先,演算法人員要消化專業知識,在專業人士指導下整理出可以標註的規則和圖例解釋。在這個階段,挑戰主要是:如何對知識點做取捨。
以「領型」為例,圓領的「頸線設計」分為四類,如圖8所示。
圖8. 四類領線設計
在專業人士眼中,這四類頸線區分很大,但是對演算法人員以及標註人員(有時這兩種角色是同一個人)來說,很難把握其間的差別。在實際圖片中,衣服頸線的圓弧形依照深度和寬度的不同有各種形態,我們看過大量圖片也很難選出符合標準定義的樣本。考慮到這四類頸線設計對於衣服的整體設計風格影響不大,我們合併這四類頸線為「圓領」。
又如女裝的「西裝領」,如圖9。
圖9. 西裝領的分類
「西裝領」的子類從視覺上難以區分,標註人員即使努力學習,標註準確率也達不到50%。同時9個子類也意味著,投給機器的訓練樣本量要增加9倍,一方面是標註成本會高很多,另一方面知識粒度過細還會導致採集不到足夠多的圖像樣本。由於女裝樣式豐富,視覺刺激點較多,「西裝領」子類的差別不太影響整體效果,我們取消子類的劃分,都歸到「西裝領」。
3.3 第二步:根據知識點來收集圖像
在上一步「確認知識點」的過程中,會先採集少量圖像;當知識點確認後,就進入大規模的圖像採集。由演算法人員採集到的大量圖像,將用於第三步的標註。標註好的圖像將用於模型訓練和評測。要讓模型達到識別效果,對每個標籤都需要一個最少的訓練樣本量,例如2000張,這個量同任務和數據都有關係,可以由經驗或實驗來確定。第二步圖像採集的主要挑戰是:樣本稀缺,即某個標籤下的圖像過少。
圖10是我們的採集流程。以「深V領」為例,我們用初始查詢詞「深V領」搜索圖片,再由人工篩選出符合標籤描述的圖像,即「深V領的衣服圖片」。如果經人工篩選後,樣本充足,就完成「深V領」的採樣。如果樣本不足,就使用同義詞、近義詞如「低V領」、「大V領」、「雞心領」,繼續搜索,直到樣本充足,或者始終仍無法獲取足夠多的樣本。
圖10. 數據採集流程
在無法獲取足夠多樣本的情況中,有一類是由於標籤用語過於專業,不會出現在在圖片的日常描述中,對這種情況我們使用「類似描述」來擴充查詢詞。例如「鼓肩袖」是一個專業術語,在圖片描述中很少見,我們會用「肩部摺疊」、「袖子褶皺」、「肩部褶皺」、「肩部蓬鬆」等來發起查詢。
如果始終采不到足夠多的樣本,可以考慮知識點合併或拋棄。例如,淘寶後台的風格標籤中曾有「宮廷風」一項,在實際中「宮廷風」的衣服極少;又如在設計師語言中,袖型有「鬱金香袖」一項,實際商品過少,對這些情況我們都做了拋棄。這即是對知識體系的略微修正。
如果某標籤很重要,但專家認為不能拋棄,比如某些前瞻性的設計要素,我們還可以為該標籤做「懸賞」:在眾包平台發布付費任務,由大眾來收集圖像。使用眾包平台來完成數據標註和採集任務,近年來發展迅速,已逐步進入實用。
當引入各種手段來獲取數據時,要警惕一種情況:結構化雜訊。
什麼是「結構化雜訊」呢?要從數據採集說起。數據採集都是「有組織」的獲取數據,從資訊理論來說,「有組織」意味著系統性的引入了新的信號,這種信號可能是雜訊。例如某些網站的每張圖片都有該網站的Logo,網站Logo對於數據集就是一種「結構化雜訊」——稱其為「雜訊」,是因為這類信號與想要的知識無關;稱其「結構化」,是因為雜訊信號是由採樣方式引入的,是一種帶有結構的系統化引入。將帶有結構化雜訊的數據投給機器,模型會學到錯誤的相關性,是我們要努力避免的。
例如,斯坦福大學的Novoa博士討論過一個「腫瘤」和「尺子」的例子[5],當皮膚科醫生在懷疑一種病變是腫瘤時,會藉助尺子來準確的測量大小,尺子會留在照片里,見圖11;模型會學習到「尺子」和「腫瘤」具有相關性,而這種相關性在實際情況中顯然是不存在的。
圖11. 包含有尺子的皮膚病變照片(圖片來自網路)
結構化雜訊的引入並非都顯而易見。例如,在購物引擎里搜索「圓領」的衣服,夏天搜到的可能多是T恤,而在冬天搜索得到的多是毛衣,不留意的話,「圓領」標籤下就都是同一季的衣服;又如,在使用眾包收集圖像時,貢獻者可能偏向某個特定的網站,該網站圖片的特定樣式就被帶進了資料庫。
因此每當引入一種採集數據的手段時,都要小心觀察所獲取的圖像的共性,分析這個共性部分與標籤的相關性。如果相關性很強,則不是雜訊,例如採集「翻領」時使用「外套」做擴展,因為翻領是在衣服的開襟上設計的,而開襟的衣服一般都是外套,「翻領」和「外套」有強相關性,所以不是雜訊。如果相關性很小,例如網站Logo,則顯然是雜訊,我們可以對圖像做處理,去掉Logo區域。如果實在無法去除,可以考慮放棄這種採集方式。
此外,我們還會在第四步建模環節利用模型來檢測結構化雜訊,將在下文介紹。
樣本稀缺還有一種典型的情況,例如文字識別領域的生僻字。全體漢字超過一萬個,常用字有3500個,其餘的稱為生僻字。生僻字在普通語料中極少出現,如果對語料做均勻採樣或隨機採樣,將出現樣本量越大、生僻字比例越低的情況,用來訓練模型,生僻字的識別能力反而下降。在這種情況下,「採集」的方式已經失效,需要用「生成」的方式:用機器製作生僻字的「人工合成」圖像。我們用「生成」方式來製作樣本始於三年多前,最初用規則式的生成,即把生僻字的各種形變寫成規則由機器來模擬;後來在一年多前開始嘗試「對抗生成」[6]。這個方向稱為「少樣本學習」或「小數據學習」,最近一兩年開始被普遍關注,這裡不展開討論。
3.4 第三步:採集好的圖像與知識點做關聯
在第三步,標註人員學習規則,對採集好的數據進行標註。如果資源有限,演算法人員也往往就是標註人員。對一些簡單任務,上一步中圖10里的「人工篩選」就已經完成了實質的標註工作。
這一步主要要考慮標註人員的學習成本和標註效率。通過標註人員的反饋,演算法人員一方面改進規則、補充圖例,對標註人員反覆出現疑問的地方,考慮知識修正;另一方面,改進標註工具,包括流程、交互、預處理等,以提高標註效率。
經過第一步和第二步,知識體系中不合理的地方已經大部分得到解決。如果在第三步中標註人員仍有困擾,往往困擾的地方可以引發我們深入思考、產生對數據更深的理解。
例如,我們需要判別圖12中這件毛衣是「七分袖」、「九分袖」還是「長袖」。僅看最左的平鋪圖的話,只能得出衣長和袖子的比例,無法判斷確切的袖長;而如果單看最右這張模特圖,袖子是擼起來的(這在針織衫中常見),我們也無法判斷袖長;直到看到中間這幅圖的上身效果,我們才能判斷是「長袖」。
圖12. 毛衣的三種照片
這啟發我們思考商家做如此拍攝的用意:拍攝平鋪圖是用來展示衣服的物理屬性,而拍攝模特圖是用來展示穿著方式和穿搭理念——這兩方面的知識對於理解衣服都是必要的,模型都要學習到。
我們再審視袖長的命名方式:「七分」、「九分」都是相對胳膊說的,人體是天然的尺子,在人體上才能得到準確測量。我們要給出成對模特圖和平鋪圖,標註人員才能做準確標註。回想上一節中「結構化雜訊」的例子,活檢照片中的尺子,在那裡是雜訊,而在這裡是合理的:因為衣服是為人服務的。
再舉一個例子,見圖13,我們要標註這件衣服的「下擺左右端點」和「衣長」。可這是「一件棕色針織衫內搭一件白色襯衣」呢,還是「一件有白色襯衣下擺的棕色針織衫」?
圖13. 一件「假兩件」的上衣
這種「假兩件」衣服並不少見,一度是標註人員的困擾。如上文所述,我們認識到衣服展示有「物理屬性」和「穿搭理念」的差別,就「假兩件」來說,經過仔細討論,我們認為這類圖片意在表現穿搭理念,應從整體視覺效果考慮,把「假兩件」判為一件,衣服下擺的左右點在白色部分,而衣長是「正常」。
經過第三步,我們對知識和數據的理解更深了。
3.5 第四步:利用模型做迭代
好消息是終於走到了最後一步,壞消息是還要走回頭路。
在第四步,演算法人員把標註好的數據投給機器,做模型的訓練和評測。假設演算法人員的建模調參的手藝沒問題,那模型就該在一定程度上反映數據集的質量好壞、哪裡有缺陷,如同一面能隱約成像的鏡子。以模型為
鑒,就可以迭代改進數據集。如下圖所示。
圖14.四個步驟的迭代示意圖
(1)從D到C的迭代,關鍵詞是「校驗」,校驗的是標註人員的標註質量。通常我們不會把所有數據都標註完才投給機器去訓練,而是分批次標註。假設有10000個樣本,我們會分2000、3000、5000三個批次。前一個批次的樣本投入訓練,如果模型的訓練準確率達到滿意,說明標註質量合格,才進行下一個批次的標註;否則要總結經驗、重新標註。這樣可以減少標註的試錯成本。
(2)如果標註質量始終不過關,要檢查數據採集中的問題。實際上,我們正是利用從D到C再到B的迭代,來應對數據採集中的「樣本稀缺」和「結構化雜訊」問題。如下圖所示。
圖15. 利用建模來採集稀缺樣本的流程圖
我們會模擬真實使用場景,進行隨機採樣,這樣得到的樣本於環節A和B無關,我們稱之為「真實場景採樣」。我們把「真實場景採樣」放到訓練好的模型中去運行一遍,這個過程稱為「預測」。預測結果經過人工審核後,如果效果達到滿意,就說明模型被訓練得不錯(即訓練數據不錯),數據集的「結構化雜訊」得到了較好的抑制;如果預測效果不佳,說明數據集中欠缺某方面的訓練樣本,那把錯例補充回數據集,繼續訓練,並更新真實採樣後再做預測,直到效果滿意為止。
這個過程既是克服「結構化雜訊」的過程,實際上也是一種補充稀缺樣本的方法,已成為我們採集數據的常規手段之一。
(3)如果需要回溯到環節A,說明知識體系中的問題跨過了第二步「採集」和第三步「標註」,直到第四步「建模」才暴露出來,這即是人的隱藏很深的認知缺陷,由機器映照出來。這種例子很少,我們在女裝「風格」數據集的建設中遇到過。
「風格」是最重要的女裝屬性維度之一。如上一章介紹,生產商、電商平台、零售商各有其風格體系。我們最初拿到的是平台運營的風格體系,當時就認識到這套體系有諸多不合理、受主觀因素和個人影響很大。
這體現在標註過程中,一位服飾專家在第一天標註1000張圖,第二天再標註同樣的1000張圖,結果就差異很大:同一件衣服第一天標「歐美風」,第二天就標「高貴風」。即使身為專家,她也從來沒有集中式看過這麼大規模有組織的數據;而前後結果的差異表明,當在數據的標註過程中,人的印象被重塑了。
但也沒人能告訴我們,合理的風格體系應該長什麼樣子,只有以這套充滿問題的風格體系為起點,採集、標註、建模,通過模型暴露問題,再反饋到專業人士,思考討論、加深理解,修正體系甚至推倒重建。
從環節D回溯到環節A,這個過程很長,要幾個月時間。我們經過了三次大的迭代,花了一年半的時間,才得到一個勉強可用的風格體系。而建設第二章中理想化的層次式風格體系,是大得多的挑戰,我們才剛剛開始。
我們的體會是:知識並非生來嚴謹,而是從混亂中走來。人的認知缺陷,可以通過機器映照出來、加以改正,人和機器在彼此學習,這是AI時代之前不曾見到過的。
四. 確定性能的「指標」
數據集是用來訓練和評測模型的。數據集標註好之後,還應有一套用來評測模型的方法,就是「指標」。知識、數據、加上指標,才是一個完整的數據集。好的指標也體現了對於「實用」數據集的追求。
最基礎的指標是準確率(P)和召回率(R),常用在搜索和分類任務中。假設模型找回的8個結果中有4個是正例,而數據集里總共有10個正例,則準確率P=4/8=50%,召回率R=4/10=40%。P和R是一對相互制約的指標,共同刻畫模型的能力。
一對(P,R)值對應是模型在固定一組參數時的表現。通過調整模型參數,可以得到一系列的點,就連成一條「P-R曲線」,該曲線可以更全面的體現模型能力,人們用一個值「AveP」來表徵,可以把AveP簡單理解為「在一個縱軸為P,橫軸為R的坐標系裡,P-R曲線下方的面積」,面積越大越好。目標檢測比賽VOC從2010年後採用的指標就是AveP。
在搜索和分類任務中,識別結果就是一個實例,正例就是識別的標籤與標註的標籤一致。在有些任務中,如目標檢測,識別對象是一個區域,這時要多一個指標IoU。IoU描繪了識別區域與標註區域的面積重合情況,數值上就是二者交集與並集的面積比。IoU高於一個閾值則是正例。業界通常選取IoU>0.5,例如ImageNet比賽[7]就使用IoU>0.5。在我們的一個商用的圖像搜索系統中,選擇的是IoU>0.7。
當識別對象是一個序列時,如字元串,由於次序本身也是信息的一部分,就需要更精巧的指標。在文字識別和語音識別中,普遍採用「編輯距離」作為指標,即一個字元串經過多少次「增」、「刪」、「改」的操作可以變化為另一個字元串。例如,「aboc」和「obac」之間差距為2次「改」,編輯距離為2;「真圖像和美」和「圖像與美好棒」差距1次「刪」、1次「改」、2次「增」,編輯距離為4。如果簡單統計字元出現次數的話,「aboc」和「obac」的準確率和召回率都是100%,顯然和實際不符。
評測指標還有很多,例如搜索中的R@N,這裡不贅述。另一方面還要根據情況劃分難度,例如目標檢測中按照圖像背景複雜度分檔,文字識別按照拍照質量分檔等。業界在評測方法上有很多經驗,也在尋求越來越貼近實際情況的做法。在最近的比賽COCO[8]中,一方面會考察模型取不同IoU閾值時獲得的AveP值,另一方面也會根據檢測物體大小的不同而區別對待。這些做法使數據集被更合理的結構化了,也可視為數據集建設的一部分。
這裡補充一些我們的經驗。有的服飾屬性維度如「領型」,包括「圓領」、「方領」等標籤,識別結果的對和錯,就是1和0的關係;而有的屬性維度如「袖長」,從短到長有7個標籤,加上前文提過的「不可判別」,一共8個標籤:「不可見,杯袖,短袖,五分袖,七分袖,九分袖,長袖,超長袖」,如圖16所示。我們對
「袖長」的評測方法做了兩步細化。
圖16.袖長的標註標準示意圖
首先,在「是(Y)」和「否(N)」之外,還設立了「模糊(M)」。如果一件衣服出現在圖16中黑點的位置,那麼對應上面的8個標籤,標註結果會是(N,N,N,N,N,N,Y,M)。這使得對邊界點的判別更加合理。
進一步觀察,把「九分袖」錯判為「七分袖」,和錯判為「短袖」,錯誤程度是不同的,應區別對待,我們就引入了標籤距離,把標註結果細化為(0,0,0,3,5,7,10,8),這樣更貼近實際情況。
可以看出,指標體系的豐富和細化,其實是知識的一層更精細的表達,數據集要走向實用,要重視這些細節。
五、總結
綜上所述,我們介紹了如何做一個「實用」的圖像數據集。
我們首先強調了「用途」的重要性:用途是看待事物的視角,是取捨的依據。
其次,我們討論了數據集建設的三個方面:
知識:專業知識的引入是必要的;知識的用途發生了變化,製作者要和專業人士一起來重建知識。
數據:從知識到數據,是反覆迭代的過程;知識重建貫穿到了採集、標註、建模等所有環節;機器參與到知識重建的過程中來,這是前所未有的新情況。
指標:指標可以承載知識的一些更精細的層面,好的指標應在細節上更貼近實際。
製作實用的數據集,不僅是為了AI走向落地,也是計算機視覺自身發展的需要。以我曾接觸過的圖像技術領域,人們在很多有潛力的議題上淺嘗輒止,這其中有工具不得力的原因,另一大原因是研究的基礎——數據集——製作不嚴謹,基礎不牢靠,讓後來者難以為繼。也難怪,倒回去十年,從事計算機視覺的人,吃飯都困難,學生畢業後往往要轉行,何談做一個實用的數據集。
今天情況已經不同,工具發展了,資源豐富了,計算機視覺在走向一門成熟的學科。科研無外乎兩件事:1. 製備實驗對象、做觀測;2. 分析總結、抽象出理論。計算機科學從誕生始,不被視為「科學」,而是「工程」。今天計算機視覺火了,而工程的味道比過去更濃,因為現在正處於工具——深度學習——大發展的時代。長遠來看,學科要發展,製作數據集上必然走向更嚴謹,AI從業者應更有勇氣、承擔責任,才不負時代的期望。
作者介紹
賈夢雷,1998年至2005年就讀於中國科學技術大學,取得本科及碩士學位。畢業後曾任職於微軟亞洲研究院和搜狗。於2008年加入淘寶,創立了阿里巴巴最早的圖像技術團隊,構建了阿里集團內部應用廣泛的圖像技術基礎設施,外部知曉的產品有圖片保護產品「八載」、文字識別產品「讀光」、以及時尚與AI結合的 「時尚之心」(FashionAI)。
本文談及的經驗基本都來自 「時尚之心」。大家在年內可以在手機淘寶上用到「時尚之心」支持的應用,並可以去線下體驗FashionAI門店。FashionAI全球挑戰賽也在如火如荼的舉行中,大家可以從以下網址獲取FashionAI數據集:
鳴謝
感謝阿里巴巴「圖像和美」團隊的全體成員,尤其是「時尚之心」項目的同學,包括段曼妮、孔祥衡、曹陽、石克陽、王從德、王永攀等,都參與了寫作。此外,感謝香港理工大學的黃偉強教授及鄒星星同學,在時尚專業知識方面對項目及本文多有貢獻。
文獻
[1] LFW人臉數據集:http://vis-www.cs.umass.edu/lfw/
[2] ChestX-ray8醫療影像數據集:https://arxiv.org/abs/1705.02315
[3] Luke Oakden-Rayner的博客:https://lukeoakdenrayner.wordpress.com/2017/12/18/the-chestxray14-dataset-problems/
[4] DeepFashion數據集:http://mmlab.ie.cuhk.edu.hk/projects/DeepFashion.html
[5] 「腫瘤」和「尺子」的例子:https://amp.thedailybeast.com/why-doctors-arent-afraid-of-better-more-efficient-ai-diagnosing-cancer
[6] 對抗生成學習:https://arxiv.org/abs/1511.06434
[7] ImageNet數據集:http://www.image-net.org/
[8] MS COCO數據集:http://cocodataset.org/
TAG:視覺求索 |