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