細粒度視覺分類(FGCV,Fine-Grained Visual Categorization)即識別細分類別的任務,通常它須要同時使用全局圖像信息與局部特徵信息精確識別圖像子類別。細粒度分類是計算機視覺社區最爲有趣且有用的開放問題之一,目前還有不少難題期待解決。算法
2011 年,谷歌開始贊助舉辦第一屆 FGVC Workshop,以後每兩年舉辦一次,到 2017 年已經舉辦了第四屆。而因爲近年來計算機視覺的快速發展,FGVC 活動影響力也愈來愈大,從去年開始由兩年一次改成了一年一次。網絡
從 2017 年開始,FGVC 開始運做兩大挑戰賽 iNaturalist 與 iMaterialist。今年的 iMaterialist 挑戰賽是由國內創業公司碼隆科技聯合 Google Research、美國知名電商 Wish、Kaggle 舉辦。值得一提的是,從今年開始 FGVC 開始運行一系列子競賽:iWildCamp、iFood 等。架構
在 CVPR 2018 尾聲的 FGVC Workshop 上,Google Research 資深工程師兼 FGVC5 聯合主席張曉對 iMaterialist 2018 挑戰賽與比賽解決方案進行了介紹。性能
iMaterialist 2018 挑戰賽學習
如何讓機器識別達到趨近乃至超過人眼斷定的精準度?這是許多計算機視覺科學家們一直致力解決的問題。業內也有許多知名的挑戰賽,如 ImageNet、COCO 等。但與 ImageNet 這樣的的粗粒度分類競賽相比,細粒度圖像分類技術變得極具挑戰性。網站
以 iMaterialist 2018 挑戰賽爲例,因爲細粒度屬性的產品看起來很是類似,且商品在不一樣光線、角度和背景下拍攝,其識別精度也會受到影響。與此同時,不一樣商品的類似特徵,也爲機器識別增長了必定的難度:好比傢俱中的球椅和蛋椅,從某些特定角度來看十分類似;再好比服飾的寶藍色和鬆綠色,在不一樣的光線條件下也存在必定的類似性。編碼
所以,細粒度識別相比於通常的圖像分類不只須要使用圖像的總體信息,同時它應該注意到子類別所獨有的局部特徵。例如從總總體上肯定球椅和蛋椅都從屬於椅子,而後再根據局部細節肯定具體是哪種椅子。spa
「可是相關技術具備更大的實際應用意義」碼隆科技表示,「它能夠直接轉化爲工業界的應用,提升效率、減小成本」。設計
在此挑戰賽中,碼隆科技與美國知名電商平臺 Wish 提供了所需的服裝和傢俱圖像數據,並會在以後向學術界開放 120 萬帶標註的商品圖像數據集。這次 iMaterialist 2018 挑戰賽分爲 iMaterialist - Fashion 和 iMaterialist - Furniture 兩個 Track。iMat Furniture 2018 的數據集爲清理標註過的乾淨數據,而 iMat Fashion 2018 的數據集爲未清理過的噪聲數據。圖片
通過 3 個多月的角逐,iMaterialist 2018 挑戰賽最終分出勝負:

解決方案
通常細粒度識別能夠分爲兩種,即基於強監督信息的方法和僅使用弱監督信息的方法。基於強監督的細粒度識別一般須要使用邊界框和局部標註信息,例如 2014 年提出的 Part-based R-CNN 利用自底向上的候選區域(region proposals)計算深度卷積特徵而實現細粒度識別。這種方法會學習建模局部外觀,並增強局部信息之間的幾何約束。而 iMaterialist 2018 僅使用類別標籤,所以是一種弱監督信息的細粒度識別。
其實在這一次競賽中,不少不一樣的方法都有它們各自獨特的亮點。例如在服裝第一名的解決方案中,雖然它也是利用預訓練 resnet15二、 xception 和 dn201 等模型並結合 XGBoost 作預測,但 Radek Osmulski 另外使用了 1 Cycle LR Policy 進行精調。
1 Cycle 用兩個等長的步驟組成一個 cycle:從很小的學習率開始,慢慢增大學習率,而後再慢慢下降回最小值。Radek Osmulski 在增大學習率的同時下降動量,這也印證了一個直覺:在訓練中,咱們但願 SGD 能夠迅速調整到搜索平坦區域的方向上,所以就應該對新的梯度賦予更大的權重。其實在真實場景中,能夠選取如 0.85 和 0.95 的兩個值,在增大學習率的時候,將動量從 0.95 降到 0.85,在下降學習率的時候,再將動量從新從 0.85 提高回 0.95。

在服裝第二名的解決方案中,做者採用了以下網絡架構。首先開發者會採用很是多的數據加強方法增長輸入圖像,例如水平翻轉、旋轉、高斯模糊、銳化、截取和歸一化等方法。而後根據 DenseNet、inception_resnet_v二、Inception-v三、Nasnet 和 ResNet-50 等九個基礎卷積網絡抽取輸入圖像的特徵,並分別做出預測。最後結合全部基礎模型的預測就能得出很是不錯的最終結果。
如前所述細粒度識別須要不少局部圖像信息才能實現子類別的判斷,谷歌(須要確切身份)Xiao Zhang 表示:「選手這些網絡最終層的 dimension 都比較小(好比 7x7),這種狀況下最終作決策時很難兼顧不一樣尺度的信息。若是須要兼顧局部和總體須要使用 Feature Pyramid Network,或者相似於編碼器/解碼器的結構在最終層使用高維的預測。」

在整個流程中,Stacking CNN 是很是有意思的過程。開發者會將九個模型的預測結果疊加在一塊兒爲 9×228×1 的張量,其中每個基礎模型提供一張 1×228×1 的張量,它表明了模型對 228 個類別的預測結果。以下所示當疊加爲這種張量後,咱們可使用 3×1 的卷積在它上面執行步幅爲 1 的卷積運算,這種卷積能夠學習到各基礎模型原始預測之間的相關性。
上圖輸出張量 7×228×8(8 個 3×1 的卷積核),在通過 16 個 3×1 的卷積核執行卷積運算並饋送到全鏈接層後,就能作出最終的預測。由於 3×1 的卷積其實至關於在同一個類別上,加權三個模型的預測並輸出到下一層。因此這也至關於一種集成方法,模型會自動學習不一樣基礎模型預測的重要性,並結合全部基礎模型做出最終預測。
傢俱細粒度分類的兩個解決方案也很是有特色,例如 Roman Khomenko 和 Lei Li 設計的傢俱第一名解決方案使用了一種稱之爲機率校準的技術。他們表示在訓練集中,類別數量是很是不平衡的,但在驗證集中類別數量是平衡的,所以咱們可能須要使用機率校準以解決這種訓練於驗證之間的分佈差別。

Google Research 張曉表示:「校準分爲兩步: a) 對於每一個 label 的預測機率,除以該類別的物體數,除以對應的先驗機率; b) 對全部更新後的 label 的預測機率作歸一化(相加獲得 1)」
Dmytro Panchenko 和 Alexander Kiselev 設計的解決方案得到了傢俱第二名,他們其實也使用了多個卷積網絡的集成方案。總的來講,這四個解決方案都是使用多個預訓練卷積網絡,它們會分別在訓練集與驗證集中進行學習與調參,而後再使用不一樣的集成方案總結各個模型的預測結果。

Dmytro Panchenko 等開發者集成的基礎模型。
由於細粒度識別不少時候須要使用注意力機制或 Faster R-CNN 等方法抽取局部特徵,並用於預測最終細分類別,而挑戰賽中的模型不少都是模型集成。所以咱們可能會比較好奇爲何不在競賽中使用前沿和優秀的細粒度識別模型呢?Dmytro Panchenko 團隊解答到:「咱們其實也考慮了這個問題,並花時間進行調查和查文獻,也許咱們能夠訓練出照片上分割目標的網絡。但這些方法不少都須要額外的標註,並且咱們也不知道哪些特徵對不一樣類型的椅子是最重要的,所以咱們只是採用了「默認」的方式(徹底不是由於咱們懶)。」
此外,他們表示:「照片不少都來自在線購物網站,其中 99% 圖像的主要目標都在圖像中央,幾乎是完美的剪裁。所以咱們認爲若是訓練集足夠大,那麼 CNN 能從中抽取到足夠好的特徵。」
最後,做爲聯合舉辦單位,碼隆科技首席科學家黃偉林博士總結,在多年從事商品識別的研究和實踐過程當中,面臨的三個主要難點。首先,細粒度商品識別,特別是對 SKU 級別的識別是相當重要的。以下圖所示,不一樣種類的益達口香糖,在零售過程當中一般價格會不太同樣,所以須要做精確區分。其次,除了細粒度分析,SKU 級別的商品識別一般須要識別大量的商品種類,好比超過 10 萬類,而常見的 ImageNet 物體識別一般只有 1,000 類。這是商品識別的另外一個挑戰,而經常使用的單層 softmax 分類模型很難解決。
這就須要引進多層級聯的細粒度分類算法,從而加大細粒度識別的難度。最後,因爲商品類別多,就要去更多的海量訓練數據和人工標註,好比 10 億級別的。對於如此數量的人工標註和數據清洗,是很難完成的。所以,如何有效地利用海量網絡爬去的商品圖片,在沒有或者只有少許人工標註和清洗的狀況下,訓練一個高性能的商品識別模型,成爲一個關鍵的技術。碼隆科技最近提出的弱監督學習算法- CurriculumNet,就是專門爲訓練海量無工人共標註的海量網絡圖片而設計的。

這次 FGVC5 挑戰賽是現實應用場景問題促進算法探究的一次實踐,從數據集數量到參賽團隊規模都上升到新的臺階,這也說明商品識別這類細粒度識別問題正在引發更多學者、技術從業者關注。據悉,碼隆科技和 Google Research 正在積極探究更深刻的細粒度人造物識別場景,並期待下一年繼續共同舉辦相關挑戰賽。