shaohowhow/Low_rank_adaptation
0
SVD 圖像奇異值分解壓縮器 (SVD Image Compression)
本項目是一個基於奇異值分解 (Singular Value Decomposition, SVD) 的圖像低秩逼近 (Low-Rank Approximation) 展示平台。
🚀 項目特色
- 核心計算與界面解耦:
core_svd.py:純數學計算與矩陣處理後端,無任何 UI 元素,便於單獨測試與算法評估。app.py:使用 Gradio Blocks 構建的現代化 UI 前端,採用深色漸變美學與玻璃化設計。- 雙重引導輸入 ($k$ 值):
- 提供雙向同步的 滑桿 與 數字輸入框,調整其中一個會即時同步至另一個。
📐 SVD 圖像壓縮數學原理
對於任何一個 $H \times W$ 的單通道二維矩陣(例如圖像的紅、綠、藍通道之一) $A$,都可以進行奇異值分解:
$$A = U \Sigma V^T$$
其中:
- $U$ 是大小為 $H \times H$ 的左奇異向量矩陣。
- $\Sigma$ 是大小為 $H \times W$ 的對角矩陣,對角線上的元素為非負的奇異值,且按降序排列:$\sigma1 \ge \sigma2 \ge \dots \ge \sigma_r \ge 0$。
- $V^T$ 是大小為 $W \times W$ 的右奇異向量矩陣的轉置。
低秩逼近 (Low-Rank Approximation)
如果我們僅保留前 $k$ 個最大的奇異值及其對應的奇異向量:
$$Ak = \sum{i=1}^{k} \sigmai ui vi^T = Uk \Sigmak Vk^T$$
當 $k \ll \min(H, W)$ 時,存儲 $Uk$、$\Sigmak$ 和 $V_k^T$ 所需的數據量遠小於原始矩陣 $A$。這就是奇異值分解用於圖像壓縮的數學基礎。
🛠️ 本地運行指南
請確保您的電腦已安裝 Python 3.8+。
1. 複製項目並安裝依賴
打開終端,執行以下命令:
# 建立虛擬環境 (選用)
python -m venv venv
# 啟用虛擬環境 (Windows)
.\venv\Scripts\activate
# 啟用虛擬環境 (Linux/macOS)
source venv/bin/activate
# 安裝依賴
pip install -r requirements.txt2. 啟動 Gradio 本地服務
python app.py啟動後,在瀏覽器中打開終端輸出的網址(通常為 http://127.0.0.1:7860)即可開始體驗。
📦 項目結構
├── core_svd.py # SVD 核心算法模組 (R/G/B 通道低秩逼近與重構)
├── app.py # Gradio Web 介面與事件綁定
├── requirements.txt # 依賴清單
└── README.md # Hugging Face Space 設定檔與專案說明