深度學習之影像處理與分析(二)
深度學習之影像處理與分析(二)
目錄
- 反向傳播
- 卷積神經網路
- 過度擬合
- 總結與討論
連鎖規則
- 神經網路中的每一層都接受上一層功能的輸出,並將其用作其功能的輸入
- 鏈規則用於計算“函式的梯度”
- 神經網路由許多張量運算連結在一起組成,例如 h(x)= g(f(x))
反向傳播
- 反向傳播是一種朝著方向(梯度)更新權重的方法,可以在給定標記觀察值的情況下最小化預定義的損失函式
- 應用鏈規則計算神經網路的梯度值
- 從最終損失函式開始,然後從頂層(輸出層)向底層(輸入層)反向執行
- 通過迭代應用鏈式規則來重用先前從後續層計算的梯度,以更新權重,從而計算任意層的梯度
反向傳播步驟
- 網路權重初始化
- 正向傳播
- 計算總損失
- 向後傳播
正向傳播
- 目標是將輸入X轉發到網路的每一層,直到計算輸出層h2中的分類
反向傳播示例
卷積神經網路
- CNN進行卷積運算,從本地輸入中提取特徵,從而實現表示模組性和資料效率
- CNN將卷積層和池層連結在一起,以幫助對輸入樣本進行降取樣,並且直到最後一層才使用FC層以獲得最終的輸出分類。
什麼是卷積?
- 卷積是影像處理中的基本構建塊
- 卷積是濾鏡和濾鏡覆蓋輸入影像區域之間的逐元素矩陣乘法
- 卷積層中的神經元僅連線到該層之前的一小部分割槽域,而不是以完全連線的方式連線所有神經元
為什麼要卷積?
- 卷積後,源畫素將替換為其自身與附近像素的加權和。
Filters(過濾器)
- 過濾器/核心用於應用流程功能來檢測特徵或模式
- 每個常規層都應用一組不同的過濾器。 在訓練期間,CNN會自動學習這些過濾器的權重,這些權重是隨機初始化的
- 濾鏡是一個微小的矩陣,可從左到右和從上到下滑動到較大的影像上
- 大多數過濾器都是平方矩陣,請使用奇數核心大小(3,5,7)來確保影像中心處的有效整數座標
過濾深度
- 對於CNN的影像輸入,深度是通道數
- 對於在CNN中更深的體積,深度是在上一層應用的過濾數量
- 每個過濾器將產生一個單獨的2D特徵圖,當輸入中不同位置的特徵存在時啟用
滑動和步
- 一個小的矩陣在影像上從左到右和從上到下滑動,並在影像的每個座標上應用卷積
- 兩個連續的視窗之間的距離稱為步幅
- 較小的步幅(1或2)將導致重疊的接收場和較大的輸出量
- 相反,更大的步幅將導致較少的重疊接收場和較小的輸出量
卷積演示
- 對於每個特徵圖,每個神經元僅連線到輸入體積的一小部分,並共享相同的連線權重(過濾器/核心)
零填充
- 有時,我們想保留有關原始輸入量的儘可能多的資訊,以便提取那些低階特徵。
- 可以通過在邊框周圍填充0的輸入影像/功能圖來抵消邊框效果
- 有時,我們希望輸出體積與輸入體積保持相同的空間尺寸
步與填充
轉換層輸出
- 啟用圖(功能圖),可以檢視輸入如何分解為不同的過濾器。 每個通道編碼相對獨立的特徵
- 沿深度尺寸堆疊特徵圖併產生輸出量
- CONV層可用於通過更改過濾器的步幅來減小輸入體積的空間尺寸
例項探究
- 為MNIST設計的LeNet-5體系結構(1998)
圖層型別
- 全連線層-FC
- 卷積層-CONV
- 池層-POOL
- 降落層-DO
卷積層
- CONV圖層引數由一組K個可學習的濾鏡組成,其中每個濾鏡具有一個寬度和一個高度,並且始終為正方形
- 這些過濾器很小,但會擴充套件到整個體積的整個深度
- 當網路在輸入體積的給定空間位置看到特定型別的特徵時,網路會學習啟用的過濾器
為什麼不在CNN中使用FC?
- FC層將當前層中的神經元與上一層中的所有神經元相連,從而產生過多的權重,因此無法在較大的空間維度上訓練深層網路
- 相反,CNN選擇將每個神經元僅連線到上一層的區域性區域, 這稱為神經元的接受域。 這種本地連線可在CNN中儲存大量引數
池層
-
定期在CNN的連續Conv層之間插入池化層
-
通過用一個數字表示每個2x2塊,它允許平移不變,可以檢測到該特徵並導致相同的輸出
-
O =(W-k)/ s + 1
-
引數或權重的數量減少了75%,從而減少了計算成本,並控制了過度擬合
-
在網路中間進行了最大池化以減小空間大小,並緩慢剝離空間關係以建立平移不變性
-
平均池通常用作網路的最後一層,以避免完全使用FC層
ReLU函式
- 整流線性單位(2010):
- 將負值清零。 廣泛用於CNN
- 將負值清零。 廣泛用於CNN
Sigmoid vs. ReLU
- Sigmoid 壓扁介於0和1之間的所有值,神經元輸出和梯度會完全消失
- 由於計算效率高,ReLU訓練速度更快,並緩解了梯度消失的問題
擬合不足與擬合過度
過度擬合
- 當訓練與驗證損失之間的差距過大時,就會發生過度擬合
- 表示網路對訓練資料中的基礎模式進行了過於強大的建模,而對於從未見過的驗證資料而言,效果並不理想。
- 只要損失之間存在差距 培訓和驗證之間的差距不會顯著增加,過擬合水平是可以接受的
過度擬合的解決方案
- 新增更多訓練資料
- 減少模型的容量
- 下降層
損耗與模型容量
- 隨著模型容量的增加,訓練和驗證損失/準確性開始彼此不同
Dropout Layers(輟學層)
-
丟失層隨機斷開網路中前一層到下一層的輸入
-
在為當前微型批次計算前進/後退通過之後,為下一個微型批次重新連線斷開的連線
-
Dropout(2014)通過僅在訓練時顯式更改網路架構來減少過度擬合
-
隨機丟棄可確保在以給定模式呈現時,網路中沒有任何一個單元負責“啟用”
-
相反,多個單元 當輸入相似的輸入時將啟用,以訓練模型進行概括
-
最常見的是在FC層之間放置p = 0.5的輟學層
合成函式
- CNN可以學習模式的空間層次結構。 這使ConvNets可以有效地學習日益複雜和抽象的視覺概念
- 每個過濾器將低階特徵的本地補丁組合成高階表示-f(g(h(x))),以瞭解網路中更深層的更多豐富特徵
翻譯不變性
- 學習完圖片右下角的特定模式後,aConvNet可以在任何地方識別它
- 它無法識別一個物體相對於另一個物體的位置,只能識別它們是否存在於特定物體中
相關文章
- OpenCV與影像處理學習二——影像基礎知識(下)OpenCV
- 計算機視覺實戰的深度學習實戰二:影像預處理計算機視覺深度學習
- Python 影像處理 OpenCV (10):影像處理形態學之頂帽運算與黑帽運算PythonOpenCV
- 深度學習高效計算與處理器設計深度學習
- 醫學影像預處理之標註
- 醫學影像預處理之裁減
- BANG:B站影片影像分析與處理引擎
- 深度學習--資料預處理深度學習
- 深度學習(6)——預處理Preprocessing深度學習
- 深度學習後門攻擊分析與實現(二)深度學習
- 深度解析自然語言處理之篇章分析自然語言處理
- 深度學習——資料預處理篇深度學習
- (1) Pytorch深度學習—數值處理PyTorch深度學習
- 影像處理之骨架提取
- 形態學影像處理
- OpenCV影像處理學習筆記-Day1OpenCV筆記
- Python深度學習(處理文字資料)--學習筆記(十二)Python深度學習筆記
- C#處理醫學影像(二):基於Hessian矩陣的醫學影像增強與窗寬窗位C#矩陣
- split用法與影像預處理
- 深度學習(二)之貓狗分類深度學習
- JAVA學習之異常處理Java
- js學習之非同步處理JS非同步
- 數字影像處理學習筆記(1)——傅立葉變換在影像處理中的應用筆記
- 異常處理機制(二)之異常處理與捕獲
- python 包之 Pillow 影像處理教程Python
- 影像處理--影像特效特效
- 【影像處理筆記】SIFT演算法原理與原始碼分析筆記演算法原始碼
- 深度學習之遷移學習介紹與使用深度學習遷移學習
- Python影像處理丨5種影像處理特效Python特效
- webgl 影像處理2---影像畫素處理Web
- 深度學習煉丹-資料處理和增強深度學習
- Python 影像處理 OpenCV (2):畫素處理與 Numpy 操作以及 Matplotlib 顯示影像PythonOpenCV
- Spark如何與深度學習框架協作,處理非結構化資料Spark深度學習框架
- C#中的深度學習(二):預處理識別硬幣的資料集C#深度學習
- 深度學習與機器學習之間區別 - javaworld深度學習機器學習Java
- 數字影像處理相關練習
- Python 影像處理 OpenCV (6):影像的閾值處理PythonOpenCV
- Python 影像處理 OpenCV (7):影像平滑(濾波)處理PythonOpenCV