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>