SlideShare a Scribd company logo
1 of 35
Deep Learning Basic
#01 Start from CNN
Terence Huang
自我介紹
學經歷
緯創資通 高級工程師 (2015/3 ~)
長庚醫院 研究助理 (2013/9 ~2014/11)
中山大學 應數系統計碩士 (2011/9 ~ 2013/7)
高雄師大 數學系學士 (2005/9 ~ 2009/7)
獲獎
2017 台南智慧黑客松智慧醫療組第二名
2012 中山高大統計新秀
特殊經歷
訪問 MIT 的工程師 (2017/10 ~ 2018/10)
Pytorch Kaohsiung 讀書會的社長 11/10 即將開始第一次分享
2
Terence Huang
進入 deep learning 影像分析前
• 回憶 neural network
3
進入 deep learning 影像分析前
• 回憶 neural network
- 就比較多條迴歸式一起算的模型
- 一個 unit = 一條迴歸式
• What is deep learning? 跟 neural network 有甚麼差別?
- 比較多層比較 deep,所以就叫 deep learning
4
線性迴歸
𝑊1 𝑋1 + 𝑊2 𝑋2 + 𝑊3 𝑋3 = 𝑓 𝑖=1
𝑛
𝑊𝑖 𝑋𝑖 = Y
進入 deep learning 影像分析前
• Neural network 20 幾年前就出現了,為什麼只紅一下下?
- CPU 運算很強,但一次只能算一條迴歸式,所以太多條就爆了
- 那為什麼現在紅了?
- 因為有 GPU, GPU 單顆運算不強,但有很多顆可以做平行運算,所以很威
• Deep learning is AI ?
- No.
- 咖啡測試:一台機器需要進入普通的家庭並找出如何煮咖啡。
找到咖啡機、找到咖啡、加水、
找到一個杯子、然後按下正確的按鈕來煮咖啡。
5
CNN, convolution neural network
• CNN
- 全名: Convolution neural network
- 加入 convolution, pooling layer 後,很適合做影像分析
• 不加入 convolution, pooling 的瓶頸?
- 把影像中每個點都當一個 unit → 式子數量多到 GPU 也不行了
6
CNN, convolution neural network
• Convolution
7
Kernel size: 3×3
Stride: 1
Output channel: 1
Padding:
CNN, convolution neural network
• Convolution
8
Kernel size: 3×3
Stride: 1
Output channel: 1
Padding:
CNN, convolution neural network
• Convolution
9
Kernel size: 3×3
Stride: 1
Output channel: 2
Padding:
CNN, convolution neural network
• Pooling
- Max pooling & Average pooling 是最常用的 pooling 選擇.
- 最常用的 Pooling size 是 2×2,Stride 為2
• 縮小一半尺寸、減少參數數量、減少75%運算量
• 可保留重要的特徵資訊
- Input size 跟 pooling 參數衝突
• Padding: 周圍補零 、捨棄邊界
10
Kernel size: 2×2
Stride: 2
Pooling function: Max
Padding:
CNN, convolution neural network
• Convolution 和 Max pooling
- 主要目的:提取特徵及減少影像參數
- 缺陷: 只看局部,丟失位置資訊
• 補救方式:Augmentation
- 放大縮小、平移
- 翻轉、旋轉
- 加雜訊
11
對 Conv, pooling 來說
兩張圖是一樣的
CNN, convolution neural network
• Activation function
- 對 unit 輸出值進行調整
- 常用來符合最後 output 型式
12
CNN, convolution neural network
• Autoencoder
- CNN 中特別的結構,目標:向量化影像特徵
- 無監督 (unsupervised) 的訓練方式
13
encode decode
Convolution
Pooling
De-Convolution
Up-sampling
As close as possible
CNN, convolution neural network
• 權重計算
- Backpropagation: 傳遞 預測誤差 來更新權重
1. 計算預測誤差
14
Backprop output layer
CNN, convolution neural network
• 權重計算
- Backpropagation: 傳遞 預測誤差 來更新權重
1. 計算預測誤差
2. 傳遞誤差給前一層用 SGD 找最適權重
CNN, convolution neural network
• 權重計算
- Backpropagation: 傳遞 預測誤差 來更新權重
1. 計算預測誤差
2. 傳遞誤差讓前一層用 SGD 找最適權重
3. 計算更新前一層後的預測誤差
16
CNN, convolution neural network
• 權重計算
- Backpropagation: 傳遞 預測誤差 來更新權重
1. 計算預測誤差
2. 傳遞誤差讓前一層用 SGD 找最適權重
3. 計算更新前一層後的預測誤差
4. 一直把誤差傳遞給前面層做更新
17
CNN, convolution neural network
• 權重計算
- Backpropagation: 傳遞 預測誤差 來更新權重
1. 計算預測誤差
2. 傳遞誤差讓前一層用 SGD 找最適權重
3. 計算更新前一層後的預測誤差
4. 一直把誤差傳遞給前面層做更新
- 梯度下降法 (SGD) 找最適權重
• 詳情請見微積分最後幾個章節
18
Recall CNN
• 缺陷補救:Augmentation
• Activation function
- 對 unit 輸出值進行調整符合最後 output
19
• Convolution & de-Convolution
• Pooling & Up-sampling
動手時間 Q&A
1. 執行環境設定
- Windows 安裝套件容易失敗
- VM, virtual machine 在 windows 上運行 linux 作業系統
- 本身 linux, mac 系統 ,可以試著直接安裝 python 和 keras 套件
- Copy & Paste 範例程式: mnist_cnn.py
• Epoch = 2
2. 程式碼理解
- Copy & Paste 範例程式: mnist_cnn.py
- 解析程式
- 改動程式
20
解析程式
• mnist_cnn.py 手寫數字辨識
1. 引入 Keras 套件
2. 模型結構
3. 資料 (Image & label) 擺放
4. 預測結果
5. 參數調教
21
解析程式
1. 引入 Keras 套件
- Keras 是高度模組化的 deep learning 套件
• 模組化: Tensorflow, Theano, CNTK
• 易上手
• 不易客製化 layer
22
引入 Keras 套件
載入範例資料集 MNIST
Keras 別名為 K
引入需要的函數式
解析範例程式
2. 模型結構
23
建立 deep learning 環境叫 model
設定預測誤差參數
放入資料開始跑模型
同時預測 Test set 結果
與訓練模型間關係:獨立
批次跑,一次跑多少筆
每筆資料跑多少次
解析範例程式
3. 資料 (Image & label) 擺放
24
解析範例程式
3. 資料 (Image & label) 擺放
- y_train
- x_train
25
輸出結果往下拉
MNIST 的第一筆
解析範例程式
3. 資料 (Image & label) 擺放
- y_train
- x_train
26
MNIST 的第一筆
解析範例程式
3. 資料 (Image & label) 擺放
- y_train
- x_train
27
MNIST 的第一筆
解析範例程式
4. 預測結果
28
解析範例程式
5. 參數調教
- 直接參考 Keras 官網
29
看 github 上的 code
動手時間 Q&A
• 嘗試各種參數組合
• 換筆資料
• 換別的模型結構
• 出現錯誤 or 有想法不知怎麼做,請拜請谷哥大神
30
CNN 應用
物件辨識 區域分割
31
CNN 應用
• 物件辨識、區域分割: 2D/3D U-net
32
CNN 應用
• 影像生成 GAN
33
含馬、斑馬特徵
有趣的概念
對抗樣本:攻擊無人駕駛車模型的好幫手
34
Q&A
Thanks for your attention!
35

More Related Content

Similar to Deep Learning Basic: #01 start from CNN

Pytorch cnn netowork introduction 20240318
Pytorch cnn netowork introduction 20240318Pytorch cnn netowork introduction 20240318
Pytorch cnn netowork introduction 20240318FEG
 
第六名 6th Aurora
第六名 6th Aurora第六名 6th Aurora
第六名 6th AuroraLeo Zhou
 
Mealionaire: A context-aware and ontology-based mobile recommender system for...
Mealionaire: A context-aware and ontology-based mobile recommender system for...Mealionaire: A context-aware and ontology-based mobile recommender system for...
Mealionaire: A context-aware and ontology-based mobile recommender system for...Carter Chen
 
美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡美团点评技术团队
 
從 NN 到 嗯嗯
從 NN 到 嗯嗯從 NN 到 嗯嗯
從 NN 到 嗯嗯Heng-Xiu Xu
 
Subgroup-Discovery-2021.pptx
Subgroup-Discovery-2021.pptxSubgroup-Discovery-2021.pptx
Subgroup-Discovery-2021.pptxYung-Ting Chen
 

Similar to Deep Learning Basic: #01 start from CNN (6)

Pytorch cnn netowork introduction 20240318
Pytorch cnn netowork introduction 20240318Pytorch cnn netowork introduction 20240318
Pytorch cnn netowork introduction 20240318
 
第六名 6th Aurora
第六名 6th Aurora第六名 6th Aurora
第六名 6th Aurora
 
Mealionaire: A context-aware and ontology-based mobile recommender system for...
Mealionaire: A context-aware and ontology-based mobile recommender system for...Mealionaire: A context-aware and ontology-based mobile recommender system for...
Mealionaire: A context-aware and ontology-based mobile recommender system for...
 
美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡
 
從 NN 到 嗯嗯
從 NN 到 嗯嗯從 NN 到 嗯嗯
從 NN 到 嗯嗯
 
Subgroup-Discovery-2021.pptx
Subgroup-Discovery-2021.pptxSubgroup-Discovery-2021.pptx
Subgroup-Discovery-2021.pptx
 

More from Terence Huang

# Can we trust ai. the dilemma of model adjustment
# Can we trust ai. the dilemma of model adjustment# Can we trust ai. the dilemma of model adjustment
# Can we trust ai. the dilemma of model adjustmentTerence Huang
 
# 手把手 Python 資料分析 I
# 手把手 Python 資料分析 I# 手把手 Python 資料分析 I
# 手把手 Python 資料分析 ITerence Huang
 
Deep Learning Advance: # Capsule net
Deep Learning Advance: # Capsule netDeep Learning Advance: # Capsule net
Deep Learning Advance: # Capsule netTerence Huang
 
Deep Learning Advance: #01 Domain Adaptation
Deep Learning Advance: #01 Domain AdaptationDeep Learning Advance: #01 Domain Adaptation
Deep Learning Advance: #01 Domain AdaptationTerence Huang
 
文字分析 Python 入門
文字分析 Python 入門文字分析 Python 入門
文字分析 Python 入門Terence Huang
 
從統計到資料科學
從統計到資料科學從統計到資料科學
從統計到資料科學Terence Huang
 

More from Terence Huang (8)

# Can we trust ai. the dilemma of model adjustment
# Can we trust ai. the dilemma of model adjustment# Can we trust ai. the dilemma of model adjustment
# Can we trust ai. the dilemma of model adjustment
 
# 手把手 Python 資料分析 I
# 手把手 Python 資料分析 I# 手把手 Python 資料分析 I
# 手把手 Python 資料分析 I
 
#02 Next RNN
#02 Next RNN#02 Next RNN
#02 Next RNN
 
Deep Learning Advance: # Capsule net
Deep Learning Advance: # Capsule netDeep Learning Advance: # Capsule net
Deep Learning Advance: # Capsule net
 
Deep Learning Advance: #01 Domain Adaptation
Deep Learning Advance: #01 Domain AdaptationDeep Learning Advance: #01 Domain Adaptation
Deep Learning Advance: #01 Domain Adaptation
 
文字分析 Python 入門
文字分析 Python 入門文字分析 Python 入門
文字分析 Python 入門
 
從統計到資料科學
從統計到資料科學從統計到資料科學
從統計到資料科學
 
SQL 語言簡介
SQL 語言簡介 SQL 語言簡介
SQL 語言簡介
 

Deep Learning Basic: #01 start from CNN

  • 1. Deep Learning Basic #01 Start from CNN Terence Huang
  • 2. 自我介紹 學經歷 緯創資通 高級工程師 (2015/3 ~) 長庚醫院 研究助理 (2013/9 ~2014/11) 中山大學 應數系統計碩士 (2011/9 ~ 2013/7) 高雄師大 數學系學士 (2005/9 ~ 2009/7) 獲獎 2017 台南智慧黑客松智慧醫療組第二名 2012 中山高大統計新秀 特殊經歷 訪問 MIT 的工程師 (2017/10 ~ 2018/10) Pytorch Kaohsiung 讀書會的社長 11/10 即將開始第一次分享 2 Terence Huang
  • 3. 進入 deep learning 影像分析前 • 回憶 neural network 3
  • 4. 進入 deep learning 影像分析前 • 回憶 neural network - 就比較多條迴歸式一起算的模型 - 一個 unit = 一條迴歸式 • What is deep learning? 跟 neural network 有甚麼差別? - 比較多層比較 deep,所以就叫 deep learning 4 線性迴歸 𝑊1 𝑋1 + 𝑊2 𝑋2 + 𝑊3 𝑋3 = 𝑓 𝑖=1 𝑛 𝑊𝑖 𝑋𝑖 = Y
  • 5. 進入 deep learning 影像分析前 • Neural network 20 幾年前就出現了,為什麼只紅一下下? - CPU 運算很強,但一次只能算一條迴歸式,所以太多條就爆了 - 那為什麼現在紅了? - 因為有 GPU, GPU 單顆運算不強,但有很多顆可以做平行運算,所以很威 • Deep learning is AI ? - No. - 咖啡測試:一台機器需要進入普通的家庭並找出如何煮咖啡。 找到咖啡機、找到咖啡、加水、 找到一個杯子、然後按下正確的按鈕來煮咖啡。 5
  • 6. CNN, convolution neural network • CNN - 全名: Convolution neural network - 加入 convolution, pooling layer 後,很適合做影像分析 • 不加入 convolution, pooling 的瓶頸? - 把影像中每個點都當一個 unit → 式子數量多到 GPU 也不行了 6
  • 7. CNN, convolution neural network • Convolution 7 Kernel size: 3×3 Stride: 1 Output channel: 1 Padding:
  • 8. CNN, convolution neural network • Convolution 8 Kernel size: 3×3 Stride: 1 Output channel: 1 Padding:
  • 9. CNN, convolution neural network • Convolution 9 Kernel size: 3×3 Stride: 1 Output channel: 2 Padding:
  • 10. CNN, convolution neural network • Pooling - Max pooling & Average pooling 是最常用的 pooling 選擇. - 最常用的 Pooling size 是 2×2,Stride 為2 • 縮小一半尺寸、減少參數數量、減少75%運算量 • 可保留重要的特徵資訊 - Input size 跟 pooling 參數衝突 • Padding: 周圍補零 、捨棄邊界 10 Kernel size: 2×2 Stride: 2 Pooling function: Max Padding:
  • 11. CNN, convolution neural network • Convolution 和 Max pooling - 主要目的:提取特徵及減少影像參數 - 缺陷: 只看局部,丟失位置資訊 • 補救方式:Augmentation - 放大縮小、平移 - 翻轉、旋轉 - 加雜訊 11 對 Conv, pooling 來說 兩張圖是一樣的
  • 12. CNN, convolution neural network • Activation function - 對 unit 輸出值進行調整 - 常用來符合最後 output 型式 12
  • 13. CNN, convolution neural network • Autoencoder - CNN 中特別的結構,目標:向量化影像特徵 - 無監督 (unsupervised) 的訓練方式 13 encode decode Convolution Pooling De-Convolution Up-sampling As close as possible
  • 14. CNN, convolution neural network • 權重計算 - Backpropagation: 傳遞 預測誤差 來更新權重 1. 計算預測誤差 14 Backprop output layer
  • 15. CNN, convolution neural network • 權重計算 - Backpropagation: 傳遞 預測誤差 來更新權重 1. 計算預測誤差 2. 傳遞誤差給前一層用 SGD 找最適權重
  • 16. CNN, convolution neural network • 權重計算 - Backpropagation: 傳遞 預測誤差 來更新權重 1. 計算預測誤差 2. 傳遞誤差讓前一層用 SGD 找最適權重 3. 計算更新前一層後的預測誤差 16
  • 17. CNN, convolution neural network • 權重計算 - Backpropagation: 傳遞 預測誤差 來更新權重 1. 計算預測誤差 2. 傳遞誤差讓前一層用 SGD 找最適權重 3. 計算更新前一層後的預測誤差 4. 一直把誤差傳遞給前面層做更新 17
  • 18. CNN, convolution neural network • 權重計算 - Backpropagation: 傳遞 預測誤差 來更新權重 1. 計算預測誤差 2. 傳遞誤差讓前一層用 SGD 找最適權重 3. 計算更新前一層後的預測誤差 4. 一直把誤差傳遞給前面層做更新 - 梯度下降法 (SGD) 找最適權重 • 詳情請見微積分最後幾個章節 18
  • 19. Recall CNN • 缺陷補救:Augmentation • Activation function - 對 unit 輸出值進行調整符合最後 output 19 • Convolution & de-Convolution • Pooling & Up-sampling
  • 20. 動手時間 Q&A 1. 執行環境設定 - Windows 安裝套件容易失敗 - VM, virtual machine 在 windows 上運行 linux 作業系統 - 本身 linux, mac 系統 ,可以試著直接安裝 python 和 keras 套件 - Copy & Paste 範例程式: mnist_cnn.py • Epoch = 2 2. 程式碼理解 - Copy & Paste 範例程式: mnist_cnn.py - 解析程式 - 改動程式 20
  • 21. 解析程式 • mnist_cnn.py 手寫數字辨識 1. 引入 Keras 套件 2. 模型結構 3. 資料 (Image & label) 擺放 4. 預測結果 5. 參數調教 21
  • 22. 解析程式 1. 引入 Keras 套件 - Keras 是高度模組化的 deep learning 套件 • 模組化: Tensorflow, Theano, CNTK • 易上手 • 不易客製化 layer 22 引入 Keras 套件 載入範例資料集 MNIST Keras 別名為 K 引入需要的函數式
  • 23. 解析範例程式 2. 模型結構 23 建立 deep learning 環境叫 model 設定預測誤差參數 放入資料開始跑模型 同時預測 Test set 結果 與訓練模型間關係:獨立 批次跑,一次跑多少筆 每筆資料跑多少次
  • 25. 解析範例程式 3. 資料 (Image & label) 擺放 - y_train - x_train 25 輸出結果往下拉 MNIST 的第一筆
  • 26. 解析範例程式 3. 資料 (Image & label) 擺放 - y_train - x_train 26 MNIST 的第一筆
  • 27. 解析範例程式 3. 資料 (Image & label) 擺放 - y_train - x_train 27 MNIST 的第一筆
  • 29. 解析範例程式 5. 參數調教 - 直接參考 Keras 官網 29 看 github 上的 code
  • 30. 動手時間 Q&A • 嘗試各種參數組合 • 換筆資料 • 換別的模型結構 • 出現錯誤 or 有想法不知怎麼做,請拜請谷哥大神 30
  • 33. CNN 應用 • 影像生成 GAN 33 含馬、斑馬特徵
  • 35. Q&A Thanks for your attention! 35