最近在寫一篇關於細粒度識別的綜述文章,不完全統計看了有將近兩百篇文章。學術界的審稿週期太長了,等到文章改完,審完,估計明年去了。本來也不打算在學術圈繼續混了,乾脆寫一篇部落格,把重要內容都總結出來,希望你看這一篇,十來分鐘的時間,就能對整個細粒度識別的前世今生有個大致的瞭解。

首先什麼是細粒度識別呢?就是比普通的影象識別(分類)再精細化一些,比如不但要識別這是一條狗,還要說出它是拉布拉多還是哈士奇。客觀來說,這個領域目前已經過了最火的時期,每年發表在頂會上的文章寥寥無幾,大部分也缺乏很好的insight。但是它並沒有被解決掉,相反還差的很遠。

資料集方面,CUB-200-2011,Stanford-Cars,FGVC-Airplane,這三個比較常見,另外還有用NABirds,Stanford-Dogs的等等。大概的套路是,選上面幾個資料集跑實驗,paper最後列幾個表,說明自己的方法比別人都好。我自己審稿的經驗就是不要太看重這幾個表,如果能做成和SOTA相類似的結果就已經可以了,比如大家互相差個1%以內都是很不錯的,關鍵是idea本身有沒有意思。之前幾年大家的風氣就是不約而同得做到比SOTA高0。x%個百分點,你很難說清楚這是隨機誤差還是演算法本身的差距。不一定非得搞到SOTA才能說明一個方法有效,如果你提供了看問題的另一個角度,那麼文章本身也是有意義的。

為什麼要搞這麼一個細粒度識別呢?很有意思的是,細粒度識別是極少的甚至是唯一一個人類輸給演算法的視覺應用。你想分割檢測姿態識別啥的,人類都能秒殺,唯獨細粒度識別,一個普通人真的很難分清楚Western Gull和California Gull在視覺上有啥區別,我搞了這麼多年我也分不清。你可能說了,Imagenet上演算法不是超過人類了嗎?非也,首先這個人類的準確率是Andrej Karpathy花了一下午的時間自己統計出來的,這個結論的通用性先放到一邊,主要是Andrej自己承認準確率不高的主要原因是ImageNet裡面有很多細粒度的類別他不認識。最後還是回到細粒度識別上來了。李飛飛組在ImageNet上統計過分類的難度,發現細粒度的類別是最難的,Confusion Matrix裡面很容易看出來,這也許是細粒度識別為什麼成為焦點的原因吧。

這篇綜述的最大特點就是全,不只包括了神經網路模型,還追根溯源到人工特徵階段的模型。好了,廢話少敘,細粒度識別可以分成六大門派,注意他們不是同時存在的,而是各領風騷數年。按照大致的時間順序總結如下:

第一大門派:分割派。掌門人VGG團隊

該門派的秘籍是,細粒度影象中前景都很像,背景卻紛繁複雜,干擾分類,所以要先分割出前景,再做識別。前景分割的方法無非是GrabCut這種統計畫素分佈模型。

第二大門派:Human-in-the-loop,掌門人Serge Belongie團隊

該門派認為應該把人力和計算機演算法結合起來,各取所長。比如人類擅長做姿態識別,attribute prediction這種中層特徵提取的活,但是不善於記憶不同類別究竟擁有哪些特徵。把人類總結的特徵輸入到一個分類器,讓演算法自動分類。

上面兩個門派活躍於深度學習派一統江湖之前,現在基本已經失傳了。下面幾個門派的特點是教眾甚多,不像之前兩個集中在某個組,導致很難找到掌門人,但這也是一個方法影響力的體現。

第三大門派:高階Pooling門派,掌門人Tsung-Yu Lin

在深度學習之前,大家通常跟特徵打交道,例如怎麼把多個特徵融合到一塊,怎麼學習一個更好的dictionary等等。深度學習之後,特徵都自動學好了,大家的注意力慢慢轉移到了Pooling上。Bilinear Pooling提出乾脆把兩個網路的特徵做一個outer product。這之後,鋪天蓋地的高階pooling的paper就出現了。Compact bilinear pooling, alpha-pooling, kernel-pooling等等,不一而足。我後面會寫文章探討高階pooling的必要性,如果我用一個max pooling就能達到跟它們類似的結果呢?

第四大門派:Part-Based Model,掌門人:空缺

無論是Bag-of-words,還是Pooling,都損失了空間資訊,眉毛鬍子一把抓。從人類的經驗看,細粒度識別需要比較區域性的part-level的特徵,比如說這個鳥的腿是粉色的,嘴是紅的,另一個則恰好相反。這種特徵只有在定位到part後才能提取出來。一個常見的pipeline就是首先做姿態識別,找到相關的部件,然後在部件上做特徵提取,然後concatenate起來送到分類器分類。這裡面可做的內容很多,比如把這幾步合起來做到end-to-end trainable,比如不用部件標註直接推測部件,比如根據兩個部件的位置做姿態的歸一化等等。

第五大門派:Attention門派,掌門人:空缺

注意力機制曾經是當紅炸子雞,現在餘溫尚存。就是我的網路可以不斷得推測出我下一步應該關注在那個地方,然後從那邊提取資訊。經典的注意力模型帶一個recurrent neural network來不斷生成下一個注意力點的。現在注意力機制成了萬金油,需要有novelty的時候就抹一點,雖然仔細看只是一個線性層。我個人不是很喜歡這個方向,感覺把神經網路神話了,它要是注意力點預測那麼準,直接拿來做分類不完了嘛。關鍵是你怎麼證明你預測得準不準?視覺化的一些例子,很難說服人。

第六大門派:Transfer Learning門派,掌門人:空缺

該門派推崇大力出奇跡,沒有什麼問題是堆資料解決不了的,如果有,說明資料堆得不夠。典型的做法是在一個大的資料集上pretrain,然後在目標資料集上fine-tune,說起來挺沒有技術含量的,但是架不住人家效果好啊。而且工業界最善於做的就是堆資料了,有你吭哧吭哧搭框架跑實驗的功夫,人家幾個million的資料集都標註好了。這也是做演算法的同學的悲哀,上面說的那些演算法沒有一個能打敗transfer learning的,你是不是嗅到了什麼危險的味道?

其他的還有一些江湖小派,時間關係先不一一列舉了。最近一年的文章明顯沒有那麼門派分明瞭,有時間可以介紹介紹,如果找到有insight的文章的話。