SlideShare a Scribd company logo
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

PPTX
# From statistics to ai
PDF
最近のDQN
PDF
Hands-on tutorial of deep learning (Keras)
PDF
Hangzhou Deep Learning Meetup-Deep Reinforcement Learning
PDF
以深度學習加速語音及影像辨識應用發展
PDF
Gtc 2016 deep learning applications in speech and image recognition
PDF
CNN_Image Classification for deep learning.pdf
 
PDF
Pytorch cnn netowork introduction 20240318
 
# From statistics to ai
最近のDQN
Hands-on tutorial of deep learning (Keras)
Hangzhou Deep Learning Meetup-Deep Reinforcement Learning
以深度學習加速語音及影像辨識應用發展
Gtc 2016 deep learning applications in speech and image recognition
CNN_Image Classification for deep learning.pdf
 
Pytorch cnn netowork introduction 20240318
 

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

PDF
初探深度學習技術與應用
PPTX
Hello DNN
PPTX
Neural Network Basics
PDF
從 NN 到 嗯嗯
PDF
Recurrent Neural Network 遞迴式神經網路
PDF
用 Keras 玩 Machine Learning
PDF
TENSORFLOW深度學習講座講義(很硬的課程) 4/14
PDF
5_Neural_network_碩士班第五次.pdf
 
PPTX
AI 技術浪潮, 什麼是機器學習? 什麼是深度學習, 什麼是生成式AI, AI 能力認證
PDF
卷積神經網路(Python+TensorFlow+Keras)
PDF
TENSORFLOW深度學習講座講義(很硬的課程)
PDF
[台灣人工智慧學校] 人工智慧民主化在台灣
PPTX
Convolutional Neural Networks (CNN) — 卷積神經網路的前世今生
PDF
從大數據走向人工智慧
PDF
Chapter 2 Basic Neural Network Architecture_Claire.pdf
PPTX
日常生活中的機器學習與 AI 應用 - 院區公開演講
PPTX
2017 9-12 Deep Learning / Tensorflow
PPTX
Convolutional Neural Networks (CNN) — 卷積神經網路的前世今生
PDF
Week4 neural network
PPTX
Microsoft CNTK, Cognitive Toolkit 微軟深度學習工具
初探深度學習技術與應用
Hello DNN
Neural Network Basics
從 NN 到 嗯嗯
Recurrent Neural Network 遞迴式神經網路
用 Keras 玩 Machine Learning
TENSORFLOW深度學習講座講義(很硬的課程) 4/14
5_Neural_network_碩士班第五次.pdf
 
AI 技術浪潮, 什麼是機器學習? 什麼是深度學習, 什麼是生成式AI, AI 能力認證
卷積神經網路(Python+TensorFlow+Keras)
TENSORFLOW深度學習講座講義(很硬的課程)
[台灣人工智慧學校] 人工智慧民主化在台灣
Convolutional Neural Networks (CNN) — 卷積神經網路的前世今生
從大數據走向人工智慧
Chapter 2 Basic Neural Network Architecture_Claire.pdf
日常生活中的機器學習與 AI 應用 - 院區公開演講
2017 9-12 Deep Learning / Tensorflow
Convolutional Neural Networks (CNN) — 卷積神經網路的前世今生
Week4 neural network
Microsoft CNTK, Cognitive Toolkit 微軟深度學習工具
Ad

More from Terence Huang (8)

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

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