20180813視頻筆記 深度學習基礎上篇(1)之必備基礎知識點 深度學習基礎上篇(2)神經網絡模型視頻筆記:深度學習基礎上篇(3)神經網絡案例實戰 和 深度學習基礎下篇
深度學習基礎上篇(3)神經網絡案例實戰
https://www.bilibili.com/video/av27935126/?p=1
第一課:開發環境的配置
Anaconda的安裝
庫的安裝
Windows下TensorFlow的安裝
Jupyternotebook 可視化方便,但不能debug
第二課:IDE的使用
PyCharm
Eclipce的下載安裝環境配置
第三課:一個簡單的神經網絡的代碼實現
使用jupyternotebook演示敲代碼的過程
例子:只有一個隱藏層的神經網絡
不懂:
1.正常傳播和反向傳播的計算 ,為什麽反向計算是x*(1-x)
2.反向:傳播時,delta 和 error
第四課:對比一下神將網絡和softmax區別(說明神經網絡的強大)
Softmax分類器的表現:
將一個平面線性(直線)分類為3個區域
神經網絡的表現:可以表現出非線性(曲線)分類
容易過擬合,體現在訓練時表現很好,測試時就表現不理想了。
少量的異常點將嚴重影響,導致過擬合。
第五課:圖片分類,多分類問題
5000張訓練圖片,用來找到最好的w和b的值;
500張測試圖片
十種分類,用softmax分類函數解決多分類問題。
視頻老師的QQ:474241623
還有第六課課也沒有看完
2018年8月12日星期日
深度學習基礎下篇
https://www.bilibili.com/video/av28005781?p=2
第一課:卷積神經網絡的應用
分類
推薦(像是圖片推薦)
檢測(在哪裏,是什麽)
語義分割(圖像分割)
自動駕駛
人臉檢測(找關鍵點)
人的姿勢判斷,找人的關節
醫學疾病識別
漢字識別
路標識別
讀圖片內容 語義
圖片合成(CVPR) app是Prisma
(內容加風格 產生新的圖片)
第二課:卷積神經網絡
復習神經網絡的概念:
全連接層
激活函數
反向傳播 loss值 w2 w1 w0
梯度計算 梯度的反向傳播
第三課:卷積神經網絡(激活之前需要卷積,激活之後需要池化)
組成:
input輸入層
conv卷積層(增加了)
Relu激活函數
pool池化層(增加了) 西瓜書稱之為 采樣層
FC全連接層
什麽是卷積?特征提取的過程
Filter 過濾器/核函數:提取特征(視頻老師稱filter為提取特征的 小助手)
卷積操作的作用:用來提取特征;卷積次數少時提取的特征稱為低微特征,多次之後就稱為高維特征(一種說法)
對圖像的相同區域提取多次不同的特征,得到多個特征圖,作為一次卷積的結果。
卷積的計算過程,圖片是一個三維的數據,一張原始圖分解成有RGB的三張圖,卷積計算的過程中每張圖之間是單獨處理的;圖片中的像素點就是輸入x;
感受野(每次處理的一小塊區域)
卷積之後圖片的大小
感受野是一個小區域。
特征圖的大小計算公式(需要其保持不變):(w-f)/s +1
w:原始圖片的寬度
f:感受野的寬度
S:感受野右移的步長
第四課:特征圖的生成過程,pad的設置和使用
增加pad(在原始圖片周圍增加一圈或者多圈0值,相當於增加原始圖片的寬度和高度),保證多次卷積之後,特征圖的大小保持不變。
註意:設置的感受野大小和步長必須合理,即使計算公式結果是整數;
通常的取值:感受野的大小 周圍0圈的大小對應關系
F=3時,pad=1
F=5時,pad=2
F=7時,pad=3
卷積中的參數共享原則:提取每一層特征圖時的權重w和b都是相同的。w的個數是感受野中點的個數*3(RGB三層都需要設置權重w)*特征圖的層數;
一次卷積操作時,會將RGB三層原始圖片,轉成多層特征圖。對於同一個感受野,不同的RGB層和不同的特征層,對應不同的權重;但對同一個感受野,不同的RGB使用相同的b,不同的特征圖使用不同的b;
目的是減少參數w和b的數量,如果每一個感受野計算的每一個特征成參數全部不相同的話,參數太多,計算難度急劇增加,且容易過擬合。
第五課:池化層
卷積層不改變圖片的大小;改變圖片的深度(將RGB3層,轉正多層特征層)
池化層改變圖片的大小;不改變圖片的深度;
例如:
maxpooling:提取其中最大那個特征作為新的特征(通常是將4個中提取一個最大的)。
Avgpooling:(提取平均的特征值),基本會使用這種方法了。
整體的神經網絡過程通常是:
多次循環conv relu conv relu pool之後再全連接處理
第六課:case study 論文舉例講解 卷積 池化 全連接
AlexNet Krizheskuu et al.2012
感受野大小:11*11 5*5
池化的大小:
VGGNet Simonyan and Zisserman,2014
感受野大小:3*3 更小提取的特征更加細膩
池化的大小:2*2中提取一個
深度殘差網絡(深度學習的趨勢,他的層數越多,效果越好,計算量卻不會明顯增加) 可以達到120層
全連接層的參數遠多於前面卷積時的參數。池化使不使用參數的。
第七章:卷積神經網絡 應用實例
分類和定位(classification and location )
應用在:
對圖片分類
對圖片中的對象分類並定位
目標檢測(detection) faster CNN
分割
用回歸來定位,通過不斷找到更加合適的區域(方框)來定位;
實現分類和定位的過程:
最後是兩個全連接層, 用來分類、回歸定位
步驟1:訓練一個分類模型(alexNet, VGG , GoogleNet)
參數初始化:第一種是高斯初始化,自己訓練,通常很慢;第二種是fine tune 直接使用別人訓練好的參數,只需要改變最後的全連接層的參數。
步驟2:更具自己的實際需求更改全連接層。
步驟3:訓練,使用SGD隨機梯度下降 和L2 loss值的計算(如使用歐式距離)來評估訓練效果。
步驟4:測試,同時得到分類和定位。
回歸模塊添加在哪裏?卷積層之後還是全連接層之後,效果通常差別較大,試了才知道效果。
應用在人體關鍵點檢測 pose estimation
概念:滑動窗口Sliding window 。特點:思路簡單,計算量大
取不同的scale 大小變換,進行滑動窗口測試。因為在不同圖中的大小會不同,所以需要使用不容的窗口大小來滑動。
不同的卷積神經網絡在imageNet 中的表現:
AlexNet2012 < overFeat 2013 < VGG < resNet(2015深度殘差網絡)(有一個經典的例子是134和152層)
第八章:物體檢測
RCNN
Region proposals 區域建議, RCNN的處理方法是一張圖提取2K個框再處理。
實現的方法:Selective serach,將相鄰的相似的區域歸為一種,最後就將一張圖分割層多個對象。
RCNN 2014是 物體檢測的開篇之作
套用RCNN的步驟:
步驟1:fine tune ,使用別人的卷積參數
步驟2:更改最後的全連接層(改成我們自己要的分類數量,改成20個分類)
步驟3:卷積提取特征,將池化處理後的數據存儲在磁盤上,
步驟4:從磁盤上提取特征,再使用分類方法。使用SVM分類20個種類。
步驟5:從磁盤上提取特征,再使用回歸定位。
數據集:data set
RCNN 的缺點:
測試時間慢
特征先存儲後提取來分類和定位
Fast R-CNN 改進:1.卷積共享 2.將所有操作整合在一起(end to end),使用兩個全連接層,分別在實現分類和定位(集成在了神經網絡中,CNN是分成兩段實現的);
測試一張圖片需要2.3秒。
Fater RCNN https://www.bilibili.com/video/av28005781/?p=8
將分類的特征框提取Selective serach改進
Fast cnn 是將Selective serach和卷積網絡 單獨處理
Faster cnn 將特征提取Region proposals和卷積集成在一起,之後再分類處理,更快。
Faster RCNN : region Proposal network 在CNN之後,利用卷積層數據提取候區域。 將每一個框變換成9種不同大小的框來處理。
第九課:技巧:設計神經網絡的技巧,註意事項
2018年8月13日星期一
感受野大小的變化
連續的多次卷積之後,圖層的大小不會改變,但是每一個像素點能表示的原始圖片的信息更多。
得到一個7*7的感受野的方法(一個點表示原始圖像的49個像素點)
第一種模型:直接卷積一次,用7*7的感受野(卷積一次),7*7=49個參數
第二種模型:用三次3*3的卷積(連續卷積3次),3*3*3=27個參數
第二種模型的優勢:參數更少,非線性更強(3個激活函數ReLU)
深度殘差網絡:先1*1卷積,再3*3,再1*1。
Pooling之後圖片會變小,可能會丟失一些信息,通常會通過增加pool之後的層數來彌補可能造成的不必要的信息丟失。(常見的的層數翻倍)
第十課:技巧:數據增加,擴展數據
原因:深度學習,數據越多越好;數據越多,模型越不容易過擬合。
圖片處理方法:
- 圖片翻轉(左右鏡像變化)
- Random crops/scales 圖片隨機裁剪/大小變換,模擬對面出現遮擋的情況
- 平移
- 旋轉
- 拉升
- 壓縮
- ……
圖片處理是將多種方法混合處理,隨機選擇做種方法,隨機選擇多種具體的處理參數(如左右平移的距離大小,旋轉角度)
第十一課:技巧:transfer learning
目的/原因:節約大量訓練時間,別人通常都是訓練一兩天的到的;
模型:數據量不夠時。使用公認的比較好的模型(要求別人的訓練數據集和自己的相識,如人臉識別)來使用,
步長:Transfer learning 時,自己只需要微調,步長的設置通常是正常設置時的0.1倍,或者更小,因為只需要在別人的基礎上微調參數。
自己的數據越大,借用的模型越匹配越好,只需要Finetune a few layers 更改一點;
數據足夠,但模型不相似,就大改別人的模型 finetune a larger number of layers;
模型剛好,但數據不夠時,use liner classifter on top layer;
模型在哪裏找?
Model zoo
Http://github.com/BVLC/caffe/wiki/model-zoo
第十二課:框架 caffe
caffe.berkeleyvision.org
20180813視頻筆記 深度學習基礎上篇(1)之必備基礎知識點 深度學習基礎上篇(2)神經網絡模型視頻筆記:深度學習基礎上篇(3)神經網絡案例實戰 和 深度學習基礎下篇