lucidrains/vector-quantize-pytorch
Vector (and Scalar) Quantization, in Pytorch
解決的問題
此套件提供一套完整的向量量化(VQ)工具,用於將連續資料(如影像或音訊)映射至學習到的離散碼集合,這是生成式AI中的常見技術。它解決了向量量化中的常見挑戰,例如「死亡」碼本項目(某些碼從未被使用)以及難以訓練非可微分量化層的問題。
工作原理
此套件實作了多種量化策略,將輸入向量轉換為離散索引,並還原為量化向量:
- 標準VQ: 使用碼本與指數移動平均(EMA)來更新字典。
- 殘差VQ: 透過多個量化器遞迴地對殘差(原始向量與量化向量之間的差異)進行量化,以達到更高精度。
- FSQ(有限標量量化): 透過將標量四捨五入至離散層級來簡化流程,無需學習碼本或承諾損失。
- LFQ(無查找量化): 透過使用獨立的二進位潛在變數,完全消除碼本。
- FSP(有限標量擾動): 將離散化視為注入表示的結構化雜訊,以穩定訓練過程。
- 高階梯度方法: 實作了「旋轉技巧」與DiVeQ,相比傳統的直通估計器(STE),在訓練期間提供更佳的梯度流動。
適用對象
專為開發生成模型(如VQ-VAE、VQ-GAN,或Encodec與SoundStream等音訊編解碼器)的研究人員與開發者設計,需要在PyTorch中使用靈活且高效率的量化層。
主要特色
- 多樣化實作: 支援標準VQ、殘差VQ、分組殘差VQ、FSQ、LFQ與SimVQ。
- 碼本健康機制: 包含防止碼本崩潰的技術,如降低碼本維度、使用餘弦相似度、替換過時碼等。
- 靈活初始化: 支援基於首批資料的k-means碼本初始化。
- 多行程支援: 自動在多個行程間同步碼本。
相關
- 專案
- 專案
- 專案
- 專案
- 專案