GoogLeNet:Inception V3:Rethinking the Inception Architecture for Computer Vision論文筆記

論文地址:Rethinking the Inception Architecture for Computer Vision

前言

俗話說得好,探索的道路是永無止境的,GoogLeNet經過了Inception V1Inception V2(BN)的發展以後,Google的Szegedy等人又對其進行了更深層次的研究和拓展,在本文中,作者提出了當前環境下,網絡設計的一些重要準則,並根據這些準則,對原有的GoogLeNet進行了改進,提出了一個更加複雜、性能更好的模型框架:Inception V3。這篇文章證明了這些改進的有效性,併爲以後的網絡設計提供了新的思路。

背景

自ILSVRC2014之後,GoogLeNet備受追捧,它具有非常好的性能,雖然它的網絡拓撲比較複雜,但是由於其特殊的設計模式(見前兩篇文章),它的參數量、內存與計算資源的消耗都比傳統的網絡、甚至是同期的VGG相比,都要小很多,因此GoogLeNet的適用性更強。但是GoogLeNet也存在它的缺陷,Inception的複雜性註定了網絡的改變會很困難,隨着網絡結構的拓展,如果僅僅是簡單的通過複製模塊來對模型進行放大,模型計算上的優勢將會消失,並且GoogLeNet原文中也並沒有提出網絡設計的原理和準則,因此很難在此基礎上進行改變。

本文貢獻

提供了一些通用的設計準則以及優化思路,並對GoogLeNet進行拓展,設計出了更加複雜、性能更好的Inception V3的結構。

設計準則

  1. 避免表達的瓶頸,表達的尺寸(即feature map的大小)不應該出現急劇的衰減,如果對流經層(尤其是卷積層)的信息過度的壓縮,將會丟失大量的信息,對模型的訓練也造成了困難。
  2. 在網絡中對高維的表達進行局部的處理,將會使網絡的訓練增快。
  3. 在較低維度的輸入上進行空間聚合,將不會造成任何表達能力上的損失,因爲feature map上,臨近區域上的表達具有很高的相關性,如果對輸出進行空間聚合,那麼將feature map的維度降低也不會減少表達的信息。這樣的話,有利於信息的壓縮,並加快了訓練的速度。
  4. 設計網絡的深度和寬度達到一個平衡的狀態,要使得計算資源平衡的分配在模型的深度和寬度上面,才能最大化的提高模型的性能。

改進方案

  1. Factorizing Convolutions with Large Filter Size
    考慮到第三條設計準則,由於feature map的臨近區域具有很高的相關性,再使用空間聚合的前提下,可以減小feature map也就是activation的維度,因此也可以使用更小的濾波器(卷積)來提取局部的特徵,同時這樣做還可以提高計算的效率,例如將7*7的卷積替換成3個3*3卷積的疊加,將5*5的卷積替換成2個3*3卷積的疊加,這也是VGG所提到的改進。
    這裏寫圖片描述
    這在參數量和計算量上都減少了很多,詳見(簡書專欄)。多層的表達能力不會受到影響,同時增加了非線性修正,對模型的效果進行了改善。
    那麼參數量和計算量可否進一步的減少呢,見下圖:
    這裏寫圖片描述
    作者又提出了一種非對稱的方式,不僅減少了參數量,在計算量上又降低了33%(感興趣的同學可以自己推一下)。
    於是就衍生出瞭如下圖的結構:
    這裏寫圖片描述
    但是作者發現,在比較前面的層使用這種結構,效果並不好,因此只有在17*17的feature map上才使用這種結構,其中n=7。
  2. Utility of Auxiliary Classifiers
    在GoogLeNet的原始論文中提到了,在模型的中間層上使用了輔助的分類器,因爲作者認爲中間層的特徵將有利於提高最終層的判別力。但是在這篇文章中,作者發現輔助層在訓練初期並沒有起到很好的效果,只有在增加了BN層或者drop out時,能夠提升主分類器的性能。

  3. Efficient Grid Size Reduction
    爲了避免第一條準則中提到的計算瓶頸所造成的的信息損失,一般會通過增加濾波器的數量來保持表達能力,但是計算量會增加。作者提出了一種並行的結構,使用兩個並行的步長爲2的模塊,P 和 C。P是一個池化層,C是一個卷積層,然後將兩個模型的響應組合到一起:
    這裏寫圖片描述
    這樣做既沒有造成信息提取上的損失,也能夠很好的降低維度。

新的結構

這裏寫圖片描述
其中figure5爲:
這裏寫圖片描述
figure6爲:
這裏寫圖片描述
figure7爲:
這裏寫圖片描述

針對低分辨率輸入的改進

在這裏還想提到的就是低分辨率的問題,機器所要識別的目標並不總是高分辨率的,有可能是比較小,或者分辨率比較低的。
常用的做法是使用更高分辨率的接受域,但是有時候我們需要分清,究竟是使用更高分辨率接受域的效果,還是更大的模型容量和計算量的效果。
作者提出的方法如下:針對低分辨率的圖像輸入,應該降低前兩層的步長,或移除第一個池化層。

總結

Inception V3設計了3種形式的Inception模塊,包括將大濾波器進行分解、分解成不對稱的結構、以及通過並行結構來解決信息損失的問題,雖然模型的拓撲結構更加複雜了,但是計算量大大降低,而且模型性能大大提高了。總的看來,今後模型主要解決兩個問題:

  1. 如何在計算量不增加的情況下,解決由於信息壓縮造成的信息損失問題。
  2. 如果在計算量不增加的情況下,增加模型的拓撲結構,以提高模型的表達能力。
    也就是說,計算量纔是王道啊!
發佈了43 篇原創文章 · 獲贊 333 · 訪問量 52萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章