用於超大影象的訓練策略:Patch Gradient Descent
前言 本文旨在計算和記憶體限制的情況下,解決在大規模影象上訓練現有CNN 架構的問題。提出PatchGD,它基於這樣的假設:與其一次對整個影象執行基於梯度的更新,不如一次只對影象的一小部分執行模型更新,確保其中的大部分是在迭代過程中覆蓋。
當在大規模影象上訓練模型時,PatchGD 廣泛享有更好的記憶體和計算效率。尤其是在計算記憶體有限的情況下,該方法在處理大影象時比標準梯度下降法更穩定和高效。
歡迎關注公眾號CV技術指南,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀、CV招聘資訊。
論文:https://arxiv.org/pdf/2301.13817.pdf
論文出發點
現有的使用 CNN 的深度學習模型主要在相對較低的解析度範圍(小於 300 × 300 畫素)上進行訓練和測試。這部分是因為廣泛使用的影象基準資料集。在高解析度影象上使用這些模型會導致相關啟用大小的二次增長,而這反過來又會導致訓練計算量和記憶體佔用量的大幅增加。此外,當可用的 GPU 記憶體有限時,CNN 無法處理如此大的影象。
解決使用 CNN 處理超大影象問題的工作非常有限。其中最常見的方法是通過降尺度來降低影象的解析度。然而,這會導致與小尺度特徵相關的資訊大量丟失,並且會對與影象相關的語義上下文產生不利影響。另一種策略是將影象劃分為重疊或不重疊的圖塊,然後按順序處理這些圖塊。然而,這種方法並不能保證塊之間的語義連結將被保留,並且它會阻礙學習過程。存在幾種類似的策略來嘗試學習大影象中包含的資訊,但是,它們無法捕獲全域性上下文限制了它們的使用。
這篇論文提出一種可擴充套件的訓練策略,旨在構建具有非常大的影象、非常低的記憶體計算或兩者結合的神經網路。
創新思路
本文認為“大影象”不應該根據它們所包含的畫素數量來簡單解釋,而是如果相應的計算記憶體預算很小,則影象應該被認為太大而無法使用 CNN 進行訓練。
因此提出PatchGD ,一次只使用影象的一部分執行模型更新,同時還確保它在多個步驟的過程中看到幾乎完整的上下文。
方法
General description
PatchGD 的核心是構建或填充 Z 塊。無論輸入的哪些部分用於執行模型更新,Z 都會根據從前幾個更新步驟中為影象的不同部分獲取的資訊構建完整影象的編碼。
Z 塊的使用如圖a 所示 。首先將輸入影象分成 m×n 塊,每個塊使用 θ1 作為獨立影象處理。模型的輸出與各patch對應的位置相結合,並將它們作為批次傳遞給模型進行處理,用於填充 Z 的各個部分。
為了構建端到端 CNN 模型,添加了一個包含卷積層和全連線層的小型子網路,該子網路處理 Z 中包含的資訊,並將其轉換為分類任務所需的概率向量。模型訓練和推理的pipeline如下圖 b 所示。在訓練期間,更新模型元件 θ1 和 θ2。基於從輸入影象中取樣的一小部分patch,使用 θ1 的最新狀態計算相應的編碼,輸出用於更新已填充 Z 中的相應條目。然後使用部分更新的 Z 進一步計算損失函式值,並通過反向傳播更新模型引數。
Mathematical formulation
PatchGD 避免一次性對整個影象樣本進行模型更新,而是僅使用部分影象計算梯度並更新模型引數。由此,其模型更新步驟可以表示為:
其中, i 表示某個 epoch 內的 mini-batch 迭代的索引, j 表示內部迭代。在每次內部迭代中,從輸入影象 X中取樣 k 個補丁,執行梯度的更新。
演算法 1 描述了對一批 B 影象的模型訓練。作為模型訓練過程的第一步,初始化每個輸入影象對應的Z:
演算法 2 描述了 Z 的填充過程:
結果
本文在UltraMNIST和PANDA前列腺癌分級評估兩個資料集上進行實驗驗證。其中,UltraMNIST 是一個分類資料集,每個樣本包含 3-5 個不同比例的 MNIST 數字,這些數字位於影象中的隨機位置,數字之和介於 0-9 之間。PANDA 資料集包含高解析度組織病理學影象。
使用 ResNet50 架構在 UltraMNIST 分類任務中,對於512 × 512影象,PatchGD 的效能優於 GD 以及 GD-extended 的大幅提升:
同理,使用MobileNetV2 架構的對比情況:
PANDA 資料集上使用 Resnet50的驗證情況:
歡迎關注公眾號CV技術指南,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀、CV招聘資訊。
【技術文件】《從零搭建pytorch模型教程》122頁PDF下載
QQ交流群:444129970。群內有大佬負責解答大家的日常學習、科研、程式碼問題。
模型部署交流群:732145323。用於計算機視覺方面的模型部署、高效能運算、優化加速、技術學習等方面的交流。
其它文章
姿態估計端到端新方案 | DirectMHP:用於全範圍角度2D多人頭部姿勢估計
用於超大影象的訓練策略:Patch Gradient Descent
CV小知識討論與分析(5)到底什麼是Latent Space?
CVPR 2023 Workshop | 首個大規模視訊全景分割比賽
如何更好地應對下游小樣本影象資料?不平衡資料集的建模的技巧和策
CVPR 2023 Workshop | 首個大規模視訊全景分割比賽
如何更好地應對下游小樣本影象資料?不平衡資料集的建模的技巧和策
用少於256KB記憶體實現邊緣訓練,開銷不到PyTorch千分之一
DAMO-YOLO | 超越所有YOLO,兼顧模型速度與精度
- 普通段位玩家的CV演算法崗上岸之路(2023屆秋招)
- 用於超大影象的訓練策略:Patch Gradient Descent
- 關於知識蒸餾,你一定要了解的三類基礎演算法
- 深度理解變分自編碼器(VAE) | 從入門到精通
- CUDA 教程(一) GPU 程式設計概述和 CUDA 環境搭建
- 一文總結當下常用的大型 transformer 效率優化方案
- 多模態學習有哪些架構?MBZUAI最新《多模態表示學習》綜述,29頁詳述多模態表示學習的演化、預訓練及其應用綜述
- Transformer-Based Learned Optimization
- U-Net在2022年相關研究的論文推薦
- ECCV 2022 | 新方案: 先剪枝再蒸餾
- CVPR2022 | 簡單高效的語義分割體系結構
- CVPR 2022 | 網路中批處理歸一化估計偏移的深入研究
- CVPR2022 | 通過目標感知Transformer進行知識蒸餾
- 經典論文 | 300FPS,超快結構感知的深度車道檢測
- YOLO系列梳理(九)初嘗新鮮出爐的YOLOv6
- CVPR2022 | 長期行動預期的Future Transformer
- CVPR2022 | 可精簡域適應
- CVPR2022 | 弱監督多標籤分類中的損失問題
- 計算機視覺中的論文常見單詞總結
- CVPR2022 | A ConvNet for the 2020s & 如何設計神經網路總結