Inception網路

阿蘇爾發表於2018-04-24

本文來自於網易雲課堂

Inception網路簡介

當構建卷積層時需要考慮過濾器的大小究竟是1×3,3×3還是5×5,要不要新增池化層而inception網路的作用就是代替你來做決定。雖然網路架構因此變得更加複雜,但網路表現卻非常好。
這裡寫圖片描述
對於一個28*28*192的輸入,inception網路或inception層的作用就是代替人工來確定卷積層中的過濾器型別或者確定是否需要卷積層或者池化層。一個inception模組會將所有的可能疊加起來,這就是inception模組的核心內容。
這裡寫圖片描述
這裡寫圖片描述
在第二張圖中,通常稱中間的層為瓶頸層,也就是最小網路層。我們先縮小網路,然後在擴大 它。通過兩張圖的對比可以明顯看到,採用了1*1的層的計算成本下降了10倍。那麼僅僅大幅縮小表示層規模會不會影響神經網路的效能?事實證明,只要合理構建瓶頸層,那麼既可以縮小規模,又不會降低效能,從而大量節省了運算。

Inception網路

一個完整的Inception模組如圖所示。
這裡寫圖片描述
通過將這些模組組合起來就得到了完整的inception網路,由於它是由google的研究員提出的,所以也叫做goolenet,是為了向lenet致敬。
這裡寫圖片描述
那麼inception這個名字是怎麼來的呢?因為裡面說到”我們需要走的更深”,如果看過盜夢空間(inception)這個電影應該會懂得這個梗。—-可惜我沒看過:)。作者其實是想用它來表達建立更深的網路的決心。

使用開源的實現方案

事實證明很多神經網路複雜細緻,因而難以複製。因為一些引數調整的細節問題會影響效能。而有許多研究者將原始碼開源道GitHub上,如果作為應用者,我們可以直接將其下載下來並運用。

遷移學習

如果你要做一個計算機視覺應用,相比於從頭訓練網路,如果你下載別人已經訓練好的網路結構的權重,你通常能夠進展的非常快。用這個作為預訓練,然後轉換到你感興趣的任務上。計算機視覺的研究社群非常喜歡把許多資料集上傳到網上,比如ImageNet,MSCoCo,或Pascal型別的資料集,這些都是上傳上去並且已經有很多研究者利用他們訓練過他們的演算法了,有時候這些訓練過程需要花費好幾周,並且需要很多GPU,其他人已經做過並且經歷了非常痛苦的找最優的過程,這就意味著你可以下載花費了別人好幾周甚至幾個月而做出來的開源的權重引數並把它當做一個很好的初始化用在你的神經網路上,用遷移學習把公共的資料集的知識遷移到你自己的問題上。
現在假設你有2種貓,tigger和misty,如果你想識別你的貓,這就構成了一個三分類問題:tigger,misty 和neither。但你的資料量很小,這時你就可以利用遷移學習。你可以從網上下載一些神經網路開源的實現,不僅把程式碼下載下來,還要把權重下載下來。有很多訓練好的網路你都可以下載,比如說ImageNet資料集,它有1000個不同的類別,因此這個網路會有一個softmax單元。你可以去掉這個softmax層,然後重新新增你自己的softmax層。就網路而言,Andrew Ng建議把其它層看做是凍結的,也就是你凍結所有的引數只訓練和你的softmax層有關的引數。通過使用他人的權重你很可能得到較好的效果,即使只有一個很小的資料集。幸運的是,大部分神經網路框架都支援這些操作。這裡有個經驗法則就是你的資料越大,那麼你要凍結的層應該越少,你能夠訓練的層數就越大。如果你有很大的資料集,你要做的就是把下載的權重當做初始化引數然後在進行訓練。

資料擴充

大部分的計算機視覺任務使用很多的資料,所以資料增強是經常使用的一種技巧來提高計算機視覺的表現。在當下,計算機視覺的主要問題是沒有辦法得到充足的資料,對大部分機器學習問題來說這並不是問題,但是對計算機視覺資料就遠遠不夠。所以,這就意味著資料增強會起到一定的作用。
這裡寫圖片描述
資料增強的常用技巧包括映象,隨機裁剪,這兩個是經常使用的。當然理論上你也可以使用旋轉,扭曲,區域性變換等,但是因為比較複雜,應用的不多。第二種經常使用的是色彩變換,實踐中對 RGB三種通道的色彩變換是基於某種分佈的。這樣會使得對照片的顏色的魯棒性更好。
這裡寫圖片描述
執行過程可能是這樣的;
這裡寫圖片描述

計算機視覺現狀

你可以把大量的機器學習問題看成是處於小部分資料和大量資料之間的部分。所以如果你能跨越整個範圍來看機器學習問題的話,如果有很多資料,你會發現人們更傾向於使用更簡單的演算法和更少的手工工程,因此我們不需要為這個問題精心設定,相反,如果你沒有那麼多的資料,你會發現人們更多從事的是手工工程。所以,當看待機器學習問題時,Andrew Ng通常認為學習演算法有2種知識來源,標記的資料和手工工程。手工工程可以是精心設計的特性或者網路組建等。所以如果你沒有更多的資料時,你可以更多的考慮手工工程。Andrew Ng認為計算機視覺是在試圖學習一個非常複雜的功能,通常沒有足夠的資料來滿足需要。這就是為什麼計算機視覺從歷史上甚至現在都更多的依賴於手工工程,而他也認為這是計算機視覺領域發展相當複雜的架構的原因,因為在缺乏相當多的資料的情況下獲得更好的資料的方式還是花更多的時間進行架構設計。
這裡寫圖片描述
最後分享一篇計算機視覺歷史的文章

相關文章