這個緊湊的學習計畫旨在幫助您在三天內,從理論到實作,全面掌握 SRCNN 模型及其量化技術,並產出一份高品質的簡報。
第一天:基礎理論與原理理解
本日目標: 徹底理解 SRCNN 的運作原理,並建立對模型量化的宏觀認識。
上午:SRCNN 原理深潛 (約 3-4 小時)
- 精讀論文核心章節:
eccv_2014_deepresolution.pdf
(SRCNN 原始論文)
- 閱讀重點:
- Section 3.1 Formulation (公式化): 這是最重要的部分。請仔細閱讀其中描述的三個操作步驟:
Patch extraction and representation
(圖像塊提取與特徵表示)
Non-linear mapping
(非線性映射)
Reconstruction
(重建)
- Figure 2 (圖 2): 結合圖 2 來理解這三個步驟如何對應到一個三層的卷積神經網路。弄清楚每一層的輸入是什麼,輸出又是什麼。
- 學習目標: 您需要能夠用自己的話,清楚地解釋 SRCNN 為何只有三層、每一層(Conv1, Conv2, Conv3)各自扮演的角色是什麼,以及它們如何協同工作將一張模糊的影像變清晰。
- 製作簡報 Part 1 - 背景與模型原理
- 開啟簡報軟體,建立「專案背景」頁面,說明為何需要超解析度技術。
- 建立「SRCNN 模型原理」頁面,放入論文中的 Figure 2,並在旁邊用文字註解您理解的三個核心步驟。這是您報告的理論基礎。
下午:模型量化概念入門 (約 3-4 小時)
- 閱讀綜述性論文:
1710.09282v9.pdf
(A Survey of Model Compression...)
- 閱讀重點:
- Abstract (摘要) & Section I. INTRODUCTION (引言): 快速閱讀,了解為什麼需要模型壓縮與加速(為了部署在資源受限的裝置上,例如您的 Raspberry Pi)。
- Section II. PARAMETER PRUNING AND QUANTIZATION (參數剪枝與量化): 這是今天的重點。請專注於 Sub-section A. Quantization and Binarization (量化與二元化)。
- 學習目標:
- 理解什麼是量化:將 32 位元浮點數 (FP32) 轉換為較低位元數(如 16 位元浮點數 FP16 或 8 位元整數 INT8)的過程。
- 理解量化的好處:模型檔案更小、推論速度更快、更節省能源。
- 理解量化的代價:可能會損失一些精度。
- 閱讀應用實例論文:
Realization_of_Quantized_Neural_Network_for_Super-resolution_on_PYNQ.pdf
- 閱讀重點:
- Abstract (摘要) & Section I. INTRODUCTION (引言): 快速閱讀,您會發現這篇論文的目標與您的專案幾乎完全相同:在邊緣裝置上實現量化後的 SRCNN。
- Figure 2 & 相關描述: 查看圖 2,論文提到當使用 12-bit 量化時,視覺效果與原始 SRCNN 幾乎一致。這給您一個重要的啟示:對 SRCNN 進行量化是完全可行的。
- 學習目標: 建立信心,並了解量化 SRCNN 是一個有實際應用價值且已經被驗證過的方向。
- 製作簡報 Part 2 - 量化技術介紹
- 建立「為何需要模型量化?」頁面,總結您從 Survey 論文中學到的好處。
- 建立「量化技術簡介」頁面,用簡單的圖示解釋 FP32 -> INT8 的概念,並說明其優缺點。
第二天:動手實作模型量化
本日目標: 將理論付諸實踐,親手將您訓練好的 .h5
SRCNN 模型轉換為量化後的 .tflite
模型。
上午:Float16 量化實作 (約 2-3 小時)
這是最簡單的量化方式,是很好的起點。
- 實作:
-
打開您專案中的 convert_to_tflite.py
腳本。
-
參考 Canvas 文件「在 Raspberry Pi 上部署...」步驟 1 中的程式碼,實現 Float16 量化。關鍵程式碼是在 converter
物件上加入:
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_types = [tf.float16]
-
執行腳本,產生一個 float16 量化的 .tflite
模型。
- 記錄與比較:
- 比較原始
.h5
模型和新的 .tflite
模型的大小 (KB/MB)。您會發現模型大小約減半。
- 製作簡報 Part 3 - 初步量化成果
- 建立「Float16 量化實作」頁面。
- 貼上您修改的關鍵程式碼。
- 製作一個表格,對比原始模型和 Float16 量化模型的檔案大小,展示量化的初步成果。
下午:INT8 整數量化實作 (約 4-5 小時)
這是能最大化速度的量化方式,也是您專案的核心實作部分。
- 閱讀理論與實作細節: 再次快速查看
1710.09282v9.pdf
中關於量化的部分,並仔細閱讀 TensorFlow Lite 官方文件中關於訓練後整數量化 (Post-training integer quantization) 的說明,特別是關於代表性資料集 (representative dataset) 的部分。