Google AI地標檢索識別競賽雙料獲勝方案 | 飛槳PaddlePaddle開源
機器之心發布
來源:百度飛槳
近日,百度視覺團隊基於飛槳(PaddlePaddle)深度學習平台,自主研發的地標檢索/識別解決方案,在 Google Landmark Retrieval 2019[1] 和 Google Landmark Recognition 2019[2] 兩個任務中都斬獲第二名,並受邀在計算機視覺領域的頂級學術會議 CVPR 2019 上進行技術分享。
Google 今年更新了目前最大的人造和自然地標識別數據集,發布了 Google-Landmarks-v2,數據集中包含超過 400 萬張圖片,描述了 20 萬處類別地標。訓練數據沒有經過精細人工標註,類別數目嚴重不均衡,同一個地標的圖像受到拍攝角度、遮擋、天氣以及光線等影響很大,同時含有大量非地標數據,符合實際情況,非常具有挑戰性。基於此數據集,今年總共吸引全球超過 300 支隊伍參與了 Google 主辦的地標檢索識別競賽。
圖 1 一些地標示例圖像以及 top5 的檢索結果
地標檢索任務關注給定一張圖像,需要找到給定資料庫中所有相同的地標圖像。評估數據超過 10 萬張待查詢圖像(test 集合),以及將近 80 萬的檢索資料庫 (index 集合)。
地標識別任務關注給定一張圖像,標註該圖像是不是地標,如果是地標,需要標註其在 20 萬種地標的類別。
評估數據與地標檢索任務的待查詢圖像相同,據比賽完推算,其中有地標的圖像不到 2000 張。當前,百度視覺團隊的獲獎方案已經提交到 arxiv 上,並且在 Github 上開源代碼。下面將為大家詳細解讀。
論文地址:https://arxiv.org/pdf/1906.03990.pdf
開源項目地址:https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/Research/landmark
地標檢索解決方案
在地標檢索比賽中,我們使用
ImageNet
預訓練的模型參數作初始化,然後在 GLD v2(Google LandMark Dataset V2)上進行訓練。網路結構上,我們使用了 ResNet 152 [4], ResNet200 [4], SE_ResNeXt152 [5] 和 Inception V4[6] 作為骨幹網路。其中 ResNet 系列都是基於論文 [3],使用了 ResNet_VD 的改進版本,這 4 個模型在 ImageNet 上的 1000 分類任務上 top1 的準確率分別為 80.59%,80.93%,81.40% 和 80.77%。這些模型及訓練方法都已經在飛槳的 Github 圖像分類項目中開源 [7]。
圖 2 地標檢索任務解決方案流程圖
在訓練檢索特徵過程中,為了使特徵緊湊,通過一層全連接將骨幹網的輸出(不包含 softmax 分類全連接層以及之後的網路)映射到 512 維,同時採用 arcmargin loss[8] 替換傳統的 softmax loss,調整訓練圖像解析度為 448*448,進一步提升模型特徵的表達能力。此外,比賽過程中還基於 Npairs Loss[9],以及將 index 集合的 80 萬張圖像聚類後加入訓練,學習更多種不同維度的特徵,提升整個系統的泛化能力。所有訓練檢索特徵的代碼也已經在飛槳的 Github 度量學習項目中開源 [10]。
在解決方案中,除了基礎特徵外,檢索策略還使用了 Query Expansion(QE)[11] 和 Database Augmentation(DBA) 策略。不同於傳統的 QE 和 DBA,在選取平均隊列中,進一步加入了 Local feature 重排和分類重排。Local feature 能夠拉回一些角度,尺度變換大的 Case,如圖 3 所示。
圖 3 局部特徵效果示例
此外,比賽中,還基於全量數據訓練了分類模型,通過分類 rerank 來進一步提升檢索指標。分類能夠拉回一些跨域的圖片,比如一張 test 圖片可以拉回相應地標的老照片等。在分類重排的時候,使用了多分類投票的策略,投票選取了 test 和 index 圖片的類別,從而每一張 test 圖片請求 index 庫時候,把相同類別的圖片前置。利用分類和 Local feature 進行重排後,能進一步提升 QE 和 DBA 的效果。具體的效果如表 1 所示。
地標檢索任務評估指標採用 mAP@100,詳細定義參考 Google Landmark Retrieval 2019[1] 官方說明
表 1 不同模型和策略的檢索效果
地標識別解決方案
圖 4 地標識別任務解決方案流程圖
地標識別任務解決方案流程如上圖,主要包含如下三步:
1. 基於全局檢索特徵識別地標類別。
在地標識別任務中,利用檢索特徵,用 11 萬的測試集合與 400 萬的訓練集合進行匹配。基於檢索結果中 top5 圖片的 label, 對它們進行類別投票,選取 top5 中類別最多的類當作測試圖片的預測類別,該類最大得分作為預測得分。這一步後,GAP 指標會達到 private/public:0.10360/0.09455。由於識別比賽使用 GAP(Global Average Precision)作為評估指標(詳細定義參考 Google Landmark Recognition 2019[2] 官方說明),如果大量非地標圖像得分也很高,則會大幅度的降低 GAP 指標。雖然檢索特徵的識別效果很好,可以準確識別出地標的類別,但是由於檢索任務並沒有考慮非地標圖的過濾,部分非地標圖得分也很高,所以直接使用檢索特徵,GAP 指標並不理想。地標識別任務的一個關鍵是如何排除掉大量的非地標圖像。
2. 基於通用目標檢測器過濾非地標圖像
為了過濾非地標圖像,在比賽中,基於 Faster RCNN 通用目標檢測演算法 [12] 和公開的 Open Image Dataset V4 數據集 [13] 訓練了一個通用目標檢測器。Open Image Dataset V4 包含了超過 170 萬的圖片數據,500 個類別以及超過 1200 萬物體框。百度視覺團隊曾經在 Google AI Open Images-Object Detection Track(簡稱OpenImagesV4Det[14]) 目標檢測任務中斬獲第一。OpenImagesV4Det 的奪冠方案融合了不同深度學習框架和不同骨幹網路多種檢測器。而在地標識別比賽中,為了提高預測速度,借鑒 OpenImagesV4Det 比賽中採用的動態採樣、多尺度訓練以及 soft-nms 等經驗,選取 ResNet50 作為骨幹網路,重新訓練一個單模型目標檢測器,該檢測器只採用單尺度測試,在 OpenImagesV4Det 比賽 public LB 的指標可以達到 0.55。單模型檢測效果達到 OpenImagesV4Det 比賽 top10 水平。這個檢測模型的預測代碼已經隨本解決方案開源,其訓練代碼計劃後續開源在飛槳的檢測模型庫里。
基於上述目標檢測器過濾非地標圖像主要有如下兩步:
- 目標檢測器把所有的 test 集合圖像分成了三個部分:地標集合,非地標集合以及模稜兩可的圖像集合。給定一張圖像,利用圖像物體之間的關聯性,認為只要檢測出的結果中包含 Building, Tower, Castle, Sculpture and Skyscraper 類別,那麼這張圖像就是包含地標的圖片。如果檢測器中包含 House, Tree, Palm tree, Watercraft, Aircraft, Swimming Pool 和 Fountain,那麼就認為該目標是模稜兩可,無法判斷是不是含有地標,直接忽略。對於非地標集合,如果檢測框得分大於 0.3,而且檢測框占原圖的面積大於 0.6,則認為這張圖像是非地標圖像。通過這一步,從 11 萬多的測試集合中過濾出了 2.8 萬的非地標圖片。
- 為了進一步過濾非地標圖像,解決方案中使用剩下的測試集合圖片去檢索上述非地標的 2.8 萬張圖像,如果檢索 top3 的圖片 score 超過了閾值,那麼也認為該圖片是非地標。通過這一步,又過濾了 6.4 萬的圖片。經過上述兩步,一共過濾了 9.2 萬張圖片,GAP 指標達到 private/public:0.30160/0.28335。
3. 多模型融合
在過濾完非地標圖片之後,解決方案里使用了多模型融合的策略進一步提升 GAP。
圖 5 多模型分區策略
如圖 5 所示,先使用 ResNet152 的檢索模型對所有被識別為地標的圖像進行分區,具體的分區規則為:
- A1:測試圖像去檢索 400 萬的訓練資料庫,top5 的類別少於等於 2 類,並且最小的預測分值>= 0.9;
- A2:類似於 A1,top5 的類別少於等於 2 類,最大的預測分值>=0.85;
- A3:不同於 A1,A2,A4 以外的圖像;
- A4:所有 Top5 返回圖像的類別都完全不相同。
根據檢索返回的類別和得分進行分區後,按照 A1 > A2 > A3 > A4 進行排序,GAP 的值達到 private/public:0.31340/0.29426。
對上述每個分區,進一步用分類模型的信息進行細分。
- B1:檢索預測的類別和分類預測的類別相同;
- B2:不滿足 B1 條件的圖片。
使用 B 策略對 A 的每個分區內進行重排,識別效果進一步提升,GAP 指標達到 private/public:0.32574/0.30839。
最後,採用針對這個比賽才適用的 trick,即基於測試圖像中地標類別出現的頻率排序,GAP 達到 private/public: 0.35988/0.37142。比賽後,對上述策略進一步調參,發現 GAP 可以達到 private/public: 0.38231/0.36805。超越目前榜單最高分 private/public: 0.37606/0.32101。感興趣的讀者可以參看論文。這個策略之所以有效,初步推測可能與比賽的真值漏標有關。
總結
本文所介紹的圖像識別和特徵學習技術已經應用到百度的圖像識別檢索應用中,為通用圖像搜索入口(圖搜,手百)提供通用檢索識別能力,同時覆蓋商品、車型、品牌 logo、景點、植物花卉、公眾人物識別等多種垂類的識別。
本次比賽完全基於飛槳深度學習平台實現,飛槳是集深度學習核心框架、工具組件和服務平台為一體的技術領先、功能完備的開源深度學習平台。百度視覺團隊聯合飛槳在視覺技術上有深厚的積累,目前 PaddleCV 已開源覆蓋圖像分類、圖像目標檢測、特徵學習、圖像分割、OCR、人臉檢測、GAN、視頻理解等類別,基於真實業務場景驗證的、效果領先的優質模型,例如目標檢測經典模型 YOLOv3,基於飛槳的實現,增加了 mixup,label_smooth 等處理,精度 (mAP(0.5:0.95)) 相比於原作者提高了 4.7 個絕對百分點,在此基礎上加入 synchronize batch normalization, 最終精度相比原作者提高 5.9 個絕對百分點。
百度視覺團隊曾首創了 Pyramidbox、Ubiquitous Reweighting Network、Action Proposal Network、StNet 和 Attention Clusters 等演算法,在識別人、識別物、捕捉關係三個技術領域均具備業界最領先的技術實力,不僅用於百度內部產品,也通過百度 AI 開放平台持續對外輸出,目前已對外開放了包括人臉識別、文字識別(OCR)、圖像審核、圖像識別、圖像搜索等在內的 70 多項基礎能力,為開發者和合作夥伴提供全棧式計算機視覺能力,讓他們將領先的 AI 能力轉換成讓複雜的世界更簡單的神奇力量,進而推動全行業、全社會的智能化變革。
參考文獻
[1] https://www.kaggle.com/c/landmark-retrieval-2019
[2] https://www.kaggle.com/c/landmark-recognition-2019
[3]Tong He, Zhi Zhang, Hang Zhang, Zhongyue Zhang, JunyuanXie, Mu Li, Bag of Tricks for Image Classification with Convolutional NeuralNetworks, In CVPR 2019
[4] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In CVPR 2016
[5] Jie Hu, Li Shen, and Gang Sun. Squeeze-and-excitation net- works. In CVPR 2018
[6] Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, and Alexander AAlemi. Inception-v4, inception-resnet and the impact of residual connections on learning. In AAAI 2017
[7]https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/image_classification
[8] Jiankang Deng, JiaGuo, NiannanXue, and StefanosZafeiriou. Arcface: Additive angular margin loss for deep face recognition. arXiv preprint arXiv:1801.07698, 2018.
[9] Kihyuk Sohn, Improved Deep Metric Learning with Multi-class N-pair Loss Objective, In NIPS 2016
[10]https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/metric_learning
[11] OndrejChum,JamesPhilbin,JosefSivic,MichaelIsard,and Andrew Zisserman. Total recall: Automatic query expan- sion with a generative feature model for object retrieval. In ICCV 2007
[12]Tsung-Yi Lin, Piotr Dollar, Ross Girshick, Kaiming He, BharathHariharan, Serge Belongie, Feature Pyramid Networks for Object Detection, In CVPR 2017
[13]https://storage.googleapis.com/openimages/web/factsfigures_v4.html
[14]https://www.kaggle.com/c/google-ai-open-images-object-detection-track
※Keras官方出調參工具了,然而Francois說先別急著用
※ACL 2019 接收論文榜單發布,我們做了可視化分析
TAG:機器之心 |