Spaces:
Running
Running
File size: 5,689 Bytes
267c4a4 a4f6c4d 267c4a4 a4f6c4d 267c4a4 a4f6c4d 267c4a4 a4f6c4d 267c4a4 a4f6c4d 267c4a4 a4f6c4d 267c4a4 c2b3717 a4f6c4d 267c4a4 a4f6c4d 267c4a4 a4f6c4d 267c4a4 ec425e1 267c4a4 ec425e1 267c4a4 ec425e1 267c4a4 ec425e1 267c4a4 a4f6c4d 267c4a4 ec425e1 267c4a4 ec425e1 267c4a4 ec425e1 267c4a4 a4f6c4d 267c4a4 a4f6c4d 267c4a4 a4f6c4d 267c4a4 dfb18ed | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | <!DOCTYPE html>
<html lang="zh-Hant">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>faceswap_ov - 影片換臉 (OpenVINO)</title>
<style>
:root { --bg:#0f1115; --card:#181b22; --fg:#e6e8ee; --muted:#9aa3b2; --acc:#4fa3ff; --ok:#3ccf91; }
* { box-sizing: border-box; }
body { margin:0; font-family: -apple-system, "Noto Sans TC", "Microsoft JhengHei", sans-serif;
background:var(--bg); color:var(--fg); line-height:1.6; }
header, main, footer { max-width: 1040px; margin: 0 auto; padding: 0 20px; }
header { padding: 40px 20px 10px; }
h1 { margin: 0 0 6px; font-size: 2rem; }
h2 { margin-top: 44px; border-bottom: 1px solid #262b36; padding-bottom: 6px; }
p.lead { color: var(--muted); margin: 0; }
.card { background: var(--card); border-radius: 12px; padding: 20px; margin-top: 16px; }
video { width: 100%; border-radius: 8px; background:#000; }
.caption { color: var(--muted); font-size: .92rem; margin-top: 8px; }
a.btn { display:inline-block; margin: 6px 8px 6px 0; padding: 10px 16px; border-radius: 8px;
background: var(--acc); color:#06121f; text-decoration:none; font-weight:600; }
a { color: var(--acc); }
table { width: 100%; border-collapse: collapse; margin-top: 8px; }
th, td { text-align: left; padding: 10px 8px; border-bottom: 1px solid #262b36; }
th { color: var(--muted); font-weight: 600; font-size: .9rem; }
td.num { font-variant-numeric: tabular-nums; }
code { background:#0c0e13; border-radius:6px; padding: 1px 6px; }
pre { background:#0c0e13; border-radius:6px; padding: 14px; overflow-x: auto; font-size: .88rem; }
ul { padding-left: 20px; }
.warn { border-left: 3px solid #f0a14f; padding-left: 12px; color: var(--muted); }
footer { color: var(--muted); font-size: .85rem; padding: 30px 20px 50px; }
</style>
</head>
<body>
<header>
<h1>faceswap_ov</h1>
<p class="lead">影片換臉工具 (OpenVINO 版):示範、效能與下載。</p>
</header>
<main>
<h2>換臉示範</h2>
<div class="card">
<video controls preload="metadata" src="videos/demo_compare_720p.mp4"></video>
<p class="caption"><strong>左:原始影片 (1280x720) 右:OpenVINO 換臉後</strong><br>
5 秒、25 fps、125 幀,每一幀都完成換臉。被換掉的是左側女性的臉,替換成右側男性的臉 (圖中為縮小後的並排畫面)。
換臉範圍為臉部區域,髮際線與髮絲會有部分殘留與模糊,這是 128px 換臉模型的限制。</p>
</div>
<div class="card">
<p><strong>素材與授權</strong></p>
<ul>
<li>原臉 (target):<a href="https://commons.wikimedia.org/wiki/File:Processed-F3BB2BF2-2743-4B47-8648-66D0D76A444F.jpg">Wikimedia Commons · Processed-F3BB2BF2-2743-4B47-8648-66D0D76A444F.jpg</a> (CC0)</li>
<li>換上的臉 (ref):<a href="https://commons.wikimedia.org/wiki/File:Allan_MacDonald.jpg">Wikimedia Commons · Allan MacDonald.jpg</a> (CC0)</li>
<li>影片:由上述原圖製作,靜態畫面 5 秒,加上 440 Hz 測試音軌</li>
</ul>
<p class="caption">以上皆為 CC0 授權素材。照片中人物的同意與肖像權由原作者與來源平台負責,使用時請自行確認。</p>
</div>
<h2>效能比較</h2>
<div class="card">
<p>同一支 1280x720、125 幀影片、同一組目錄與參數,兩版在同一台機器上依序執行。</p>
<table>
<thead>
<tr><th>版本</th><th>總耗時</th><th>每幀耗時</th><th>相對速度</th></tr>
</thead>
<tbody>
<tr>
<td>ONNX Runtime 版 (CPU)</td>
<td class="num">1753 秒 (約 29 分鐘)</td>
<td class="num">約 14 秒</td>
<td>1x</td>
</tr>
<tr>
<td>OpenVINO 版 (CPU)</td>
<td class="num">16 秒</td>
<td class="num">約 0.13 秒</td>
<td class="num">約 108x</td>
</tr>
</tbody>
</table>
<p class="caption">
OpenVINO 的 16 秒為逐幀處理迴圈的時間,不含三個模型編譯 (約 1.6 秒) 與 ffmpeg 合併聲音。
ONNX Runtime 的 1753 秒為整個程序的實際耗時,包含模型載入與 ffmpeg 合併。
兩版換臉次數皆為 125 次,輸出外觀幾乎一致。
</p>
<p class="warn">
ONNX Runtime 在此測試環境的速度明顯偏慢。單獨測量時,其偵測與換臉的單次推論時間遠高於一般預期,
並非 onnxruntime 本身的正常表現。此倍數只代表本機、本次測試的結果,不應直接外推到其他硬體。
測試機器:16 核心 CPU、只使用 CPU 裝置。
</p>
</div>
<h2>下載</h2>
<div class="card">
<p>程式、套件清單與安裝說明 (README) 分別打包:</p>
<a class="btn" href="downloads/swapface_openvino.zip">OpenVINO 版 (.zip)</a>
<a class="btn" href="downloads/swapface_onnxruntime.zip">ONNX Runtime 版 (.zip)</a>
<p class="caption">模型權重 (inswapper_128.onnx、buffalo_l) 不包含在壓縮包內,請依各包內 README 另行下載。</p>
</div>
<h2>快速開始</h2>
<div class="card">
<pre>python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python swapface_ov.py input.mp4 \
--target 原臉目錄 \
--ref 新臉目錄 \
--swapper inswapper_128.onnx -o output.mp4</pre>
</div>
<h2>授權與責任</h2>
<div class="card warn">
<p>本工具與示範素材僅供研究與教學。insightface / inswapper 模型權重採非商業研究授權,請自行確認使用條款。
換臉技術只應用於您有權使用的人臉,請勿用於冒充、詐欺或散布不實影片。</p>
</div>
</main>
<footer>
faceswap_ov · 示範素材:Wikimedia Commons (CC0)
</footer>
</body>
</html>
|