CoolFace
Apppublic

shaohowhow/Low_rank_adaptation

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
App README

SVD 圖像奇異值分解壓縮器 (SVD Image Compression)

本項目是一個基於奇異值分解 (Singular Value Decomposition, SVD) 的圖像低秩逼近 (Low-Rank Approximation) 展示平台。

🚀 項目特色

  1. 1.核心計算與界面解耦:
  2. 2.core_svd.py:純數學計算與矩陣處理後端,無任何 UI 元素,便於單獨測試與算法評估。
  3. 3.app.py:使用 Gradio Blocks 構建的現代化 UI 前端,採用深色漸變美學與玻璃化設計。
  4. 4.雙重引導輸入 ($k$ 值):
  5. 5.提供雙向同步的 滑桿 與 數字輸入框,調整其中一個會即時同步至另一個。

📐 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. 複製項目並安裝依賴

打開終端,執行以下命令:

bash
# 建立虛擬環境 (選用)
python -m venv venv
# 啟用虛擬環境 (Windows)
.\venv\Scripts\activate
# 啟用虛擬環境 (Linux/macOS)
source venv/bin/activate

# 安裝依賴
pip install -r requirements.txt

2. 啟動 Gradio 本地服務

bash
python app.py

啟動後,在瀏覽器中打開終端輸出的網址(通常為 http://127.0.0.1:7860)即可開始體驗。


📦 項目結構

text
├── core_svd.py      # SVD 核心算法模組 (R/G/B 通道低秩逼近與重構)
├── app.py           # Gradio Web 介面與事件綁定
├── requirements.txt # 依賴清單
└── README.md        # Hugging Face Space 設定檔與專案說明