哈哈,好久沒寫博客了。。。。最近懶癌發作~~主要是因為心情不太好啊,做什么事情都不太順心,不過已經過去啦。最近一直忙着公司的項目,想用這個網絡,就給大家帶來了的這篇文章。可能比較老,來自ICCV 2015的一篇關於細粒度分類的文章,文章:B-CNN。由於文章比較簡單,我就不介紹的那么詳細啦~
科普下:粗粒度與細粒度分類
粗粒度:比如貓狗豬這種差別比較大的。
細粒度:狗類別中,識別是什么品種的狗,這就是細粒度分類。
B-CNN框架:
從圖中可以看出,其實就是兩個卷積神經網絡對圖像進行特征抽取,然后用一個bilinear pooling 函數把CNN 抽取的兩組特征進行結合,最后代入softmax層進行分類。
在一般的深度學習模型中,都是由一個神經網絡構成的,在這里,有兩個神經網絡 A
和 B,輸入圖像首先被調整到448 × 448大小,然后用這兩個網絡分別提取該幅圖像的特征,在圖像的每一個位置,兩個網絡分別生成1 × 512大小的特征,在每一個位置 對兩個網絡提取的特征A(l)和B(l)做外積操作:
得到這個位置的雙線性特征,大小為512X512。
接下來采用求和池化方式,將所有位置得到的雙線性特征進行求和作為本幅
圖像的特征:
它的大小也為 512 × 512,接下來對該雙線性特征進行如下計算:
得到它的帶符號平方根,並進行正則化:
以此作為該幅圖片的特征,並用來分類。這個雙線性特征比單個卷積網絡提
取的特征在分類中獲得更好的效果,兩個卷積神經網絡的作用在這里分別相當於
區域檢測和特征提取。因此,它一方面避免了傳統方法中大量的人工標記操作,
同時也獲得了較高的准確率。
在訓練過程中,兩個網絡可以同時被訓練,並且整個訓練過程是端到端的,
已知 X的損失函數梯度為,A和 B 的損失函數梯度由鏈式法則求得:
這里的網絡 A和網絡 B 可以是兩個對稱的網絡,也可以是兩個不對稱的網
絡.文中分別用了VGG-16 和VGG-19兩種網絡。
關於為什么用向量的外積,我想是吸收兩組CNN 抽取的特征,然后進項特征融合,其實在這一步,我們可以做就很多東西。我現在發的有一篇文章,也有類似的思想。
首先說說內外積的幾何意義
向量a、b的內積是長度為 |a||b|cosθ的標量,是向量a在向量b方向上的分量
而向量a、b的外積是長度為 |a||b|sinθ、並垂直於向量a、b的矢量
這就說明向量a、b的外積和向量a、b是不在同一平面內,或者說,向量a、b在平面上被我們看到了的話,外積我們是看不到的,他應該是一個旋轉過程,
所以說,外積在物理上(我感覺運動學會用到)可以說是,對運動產生作用的。