吴恩达DeepLearningCourse4-卷积神经网络
部分內容參考之前的筆記 PyTorch深度學習實踐
文章目錄
- 第一周:卷積神經網絡
- 邊緣檢測
- Padding、Stride
- 三維卷積
- 卷積神經網絡中的一層
- 池化層
- 第二周:深度卷積網絡實例探究
- 殘差網絡
- 1x1卷積
- Inception模塊和網絡
- 卷積神經網絡的遷移學習
- 第三周:目標檢測
- 目標定位
- 基于滑動窗口的目標檢測
- 滑動窗口的卷積實現
- Bounding Box 預測 /YOLO算法基礎
- 交并比 loU
- 非極大值抑制
- Anchor Boxes
- 第四周:特殊應用——人臉識別和神經風格轉換
- One-Shot學習
- Siamese 網絡
- Triplet Loss(三元組損失)
- 人臉驗證與二分類(替換Triplet Loss)
- 神經風格遷移
第一周:卷積神經網絡
邊緣檢測
有關卷積運算在此不記錄。見PyTorch深度學習實踐。
(n, n) * (f, f) = (n-f+1, n-f+1)
Padding、Stride
Padding要解決的問題:①每次做卷積操作圖像都會縮小 ②在角落或者邊緣區域的像素點在輸出中采用較少,丟掉了圖像邊緣位置的許多信息
根據填充像素的不同,卷積操作分為Valid卷積(不填充)和Same卷積(填充后,卷積前后圖像大小不變)
三維卷積
卷積神經網絡中的一層
池化層
池化操作具有參數:大小f,步長s,PaddingSize(少見)
池化操作的分類:最大池化、平均池化
池化層有一組超參數,但并沒有參數需要學習。一旦確定了f和s,它就是一個固定運算,梯度下降無需改變任何值。所以反向傳播并不改變池化層的參數。
常用的參數是f=2, s=2,將輸入的高度和寬度縮減為一半。
第二周:深度卷積網絡實例探究
殘差網絡
殘差網絡起作用的主要原因就是這些殘差塊學習恒等函數非常容易,能確定網絡性能不會受到影響,很多時候甚至可以提高效率,或者說至少不會降低網絡的效率。
1x1卷積
1x1卷積可以減少(壓縮通道數)/保持(僅添加非線性函數)/增加輸入的通道數,且不改變H和W。
1×1 卷積可以從根本上理解為,在輸入的切片中,對這 32 個不同的位置都應用一個全連接層,全連接層的作用是輸入32個數字。并在這 36 個單元上重復此過程,輸出結果是 6×6×#filters。
Inception模塊和網絡
對同一輸入進行不同卷積,合并最終結果,取最優解。
不同路徑只能改變頻道數,不能改變寬度和高度(因為最終需要合并)。
最終將不同的卷積結果沿著通道方向合并。
對Inception模塊進行多層調用以構建深層的Inception網絡。
卷積神經網絡的遷移學習
相比于從頭訓練權重,或者說從隨機初始化權重開始,下載別人已經訓練好網絡結構的權重,通常能夠進展的相當快,用這個作為預訓練,然后轉換到目標任務上。
如果目標任務的數據量較小,可以在下載好的神經網絡和參數的基礎上,僅訓練最后一層的激活函數,使其輸出想要的結果。在此情況下,之前的神經網絡可以看作是凍結的(不需要對其進行訓練),可以先計算前層網絡的計算結果存在硬盤里,只需訓練最后一層網絡。
如果目標任務數據量較大,可以訓練網絡最后的若干層,甚至整個網絡。
第三周:目標檢測
目標定位
Localization和Detection問題
當前問題屬于第二類,即給出一張圖片,可能是行人、汽車、摩托車和背景中的一種,要求輸出類型并給出位置(背景除外)。
基于滑動窗口的目標檢測
針對上例,最初可以使用適當剪切的圖片,使得整張圖片x幾乎都被汽車占據,使用該標簽訓練集訓練卷積網絡。
首先選定一個特定大小的窗口,將這個紅色小方塊輸入卷積神經網絡,卷積網絡開始進行預測,即判斷紅色方框內有沒有汽車。然后將方框按照一定步長向右滑動,直到這個窗口滑過整個圖像。
缺點是,如果步幅很大,顯然會減少輸入卷積網絡的窗口個數,但是粗糙間隔尺寸可能會影響性能。反之,如果采用小粒度或小步幅,傳遞給卷積網絡的小窗口會特別多,這意味著超高的計算成本。
滑動窗口的卷積實現
①將全連接層轉換成卷積層
即:將第一層FC轉換成,5x5x16(輸入規模)的400(=5x5x16,即Flatten后的元素個數)個過濾器。對第二層FC進行相同操作。
②滑動窗口的卷積實現
Bounding Box 預測 /YOLO算法基礎
在輸入圖像上添加網格,并將對象分配給 包含對象中點 的網格。即使對象可以橫跨多個格子,也只會被分配到 9 個格子其中之一。
對于上述例子,應用3x3的網格,輸出應該是3x3x8
算法優點是,它顯式地輸出邊界框坐標,所以這能讓神經網絡輸出邊界框,可以具有任意寬高比,并且能輸出更精確的坐標,不會受到滑動窗口分類器的步長大小限制。其次,這是一個卷積實現,有很多共享計算步驟,算法效率很高。
交并比 loU
非極大值抑制
使用YOLO算法時,同一個對象可能被多個方格檢測,為了排除部分不準確的方格所采用的方法。
具體步驟(針對只檢測車輛,而不檢測行人、摩托車的問題;此時的輸出為[pc, bx, by, bh, bw]T):
①排除pc<=0.6的方格
②當剩下還有方格時:輸出pc值最大的方格,并排除與其loU>=0.5的方格(即針對同一個物體但是不夠準確的方格)
Anchor Boxes
目的是在YOLO算法中,處理不同的對象被分配到同一方格的情況。考察不同Anchor Box和對象的交并比,并取最大值。
此時的輸出為3x3x2x8(3x3x16)
第四周:特殊應用——人臉識別和神經風格轉換
人臉驗證(Face Verification):有一張輸入圖片,以及某人的 ID 或者是名字,這個系統要做的是,驗證輸入圖片是否是這個人。有時候也被稱作 1 對 1 問題,只需要弄明白這個人是否和他聲稱的身份相符。
人臉識別(Face Recognition):1對K問題,有K個人的數據庫,輸入一張圖片,輸出該人是否屬于K個人之一。
One-Shot學習
在一次學習問題中,只能通過一個樣本進行學習。當深度學習只有一個訓練樣例時,它的表現并不好。
為了能有更好的效果,你現在要做的應該是學習Similarity函數。𝑑(𝑖𝑚𝑔1,𝑖𝑚𝑔2) =𝑑𝑒𝑔𝑟𝑒𝑒 𝑜𝑓 𝑑𝑖𝑓𝑓𝑒𝑟𝑒𝑛𝑐𝑒 𝑏𝑒𝑡𝑤𝑒𝑒𝑛 𝑖𝑚𝑎𝑔𝑒𝑠,它以兩張圖片作為輸入,然后輸出這兩張圖片的差異值。如果你放進同一個人的兩張照片,它輸出一個很小的值,如果放進兩個長相差別很大的人的照片,它就輸出一個很大的值。在識別過程中,如果這兩張圖片的差異值小于某個閾值𝜏,那么這時就能預測這兩張圖片是同一個人。
Siamese 網絡
實現函數d的一種方式是通過Siamese網絡。
Triplet Loss(三元組損失)
人臉驗證與二分類(替換Triplet Loss)
選取 Siamese 網絡,使其同時計算這些嵌入,然后將其輸入到邏輯回歸單元,然后進行預測,如果是相同的人,那么輸出是 1,若是不同的人,輸出是 0。這就把人臉識別問題轉換為一個二分類問題,訓練這種系統時可以替換 Triplet loss 的方法。
最后的邏輯回歸單元進行如下操作。
可以對數據庫中的圖片提前計算并存儲,以加快驗證速度。
神經風格遷移
使用𝐶來表示內容圖像,𝑆表示風格圖像,𝐺表示生成的圖像
本質上是定義代價函數J(G),并使其最小化
J(G) = α Jcontent(C, G) + β Jstyle(S, G)
總結
以上是生活随笔為你收集整理的吴恩达DeepLearningCourse4-卷积神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 白心红薯的功效与作用、禁忌和食用方法
- 下一篇: 人工神经网络心得体会_卷积神经网络学习心