HelloSun's picture
InsightFace inswapper -> OpenVINO FP16/INT8/INT4 (+INT4-mixed) models, single-file swapper, samples with PD NASA portraits
c6ec17d verified
|
Raw History Blame Contribute Delete
3.74 kB

換臉效果對比(16 / 8 / 4 bit)

素材為 NASA 公有領域太空人官方肖像照片,用同一套程式碼分別跑 ONNX Runtime FP32(參考) 與 OpenVINO fp16 / int8 / int4 / int4-mixed。

face montage

素材與授權

角色 檔案 來源
來源臉孔 input/source_face_nasa_astronaut.jpg NASA Johnson Space Center,jsc2016e096719(JAXA 太空人 Soichi Noguchi 官方肖像)
目標照片 input/target_photo_nasa_astronaut.jpg NASA,jsc2017e063393(Expedition 54/55 太空人官方肖像)

檔案

檔案 說明
00_source_face.jpg 來源臉孔對齊後的 128×128 crop
01_target_original_face.jpg 目標臉孔(換臉前)
02_target_original.jpg 目標照片原圖(1280×1024)
03_onnxruntime_fp32_reference.jpg ONNX Runtime FP32 參考輸出
40_openvino_fp16.jpg OpenVINO fp16(16-bit)輸出
50_openvino_int8.jpg OpenVINO int8(W8A8)輸出
60_openvino_int4.jpg OpenVINO 純 int4(4-bit)輸出
70_openvino_int4_mixed.jpg OpenVINO int4/8 混合精度輸出
20_face_montage.jpg 128×128 換臉結果並排比較
metrics.json 機讀指標

指標

PSNR/SSIM 以 ONNX Runtime FP32(完全相同的預處理與貼回程式碼)為參考; embedding cos 是 OpenVINO ArcFace 算出的來源 embedding 與 FP32 的餘弦相似度。

精度 swapper 大小 臉部 PSNR ↑ 臉部 SSIM ↑ 全圖 PSNR ↑ embedding cos ↑ 單次換臉 ↑
ONNX Runtime FP32(參考) 554.3 MB – – – 1.00000 8.08 s
fp16 (16-bit) 276.9 MB 56.29 dB 0.9994 71.02 dB 1.00000 0.47 s
int8 (8-bit) 139.1 MB 19.28 dB 0.5557 37.09 dB 0.97941 0.09 s
int4-mixed(75% 權重 4-bit) 91.7 MB 17.28 dB 0.6721 37.70 dB 0.94709 0.40 s
int4(純 4-bit) 69.7 MB 14.79 dB 0.5317 32.29 dB 0.94709 0.43 s

測試機:Xeon Platinum 8559C(16 vCPU)、OpenVINO 2026.4.1;1280×1024 照片、單張臉。

觀察

  1. fp16 與原模型幾乎無差(56 dB / SSIM 0.9994),速度快 17×,大小減半 → 預設推薦。
  2. int8 最快(0.09 s,比 ONNX Runtime FP32 快 87×),模型只有原版 1/4; 臉部有細微顆粒雜訊,但辨識度與膚色都正常。
  3. int4-mixed 是 4-bit 路線的實用點:膚色正常、沒有明顯色偏, 在 PSNR 上甚至比 int8 好一點(因為它在活化函數附近保留了 INT8 層),大小 91.7 MB。
  4. 純 int4 不可用:swapper 是類 GAN 網路,4-bit 權重讓膚色整個偏綠/偏橙, 這點在 montage 右下看得很清楚。若一定要「最小模型 + 可接受品質」, 請用 int4-mixed。
  5. embedding cos 一欄提醒:ArcFace 的量化精度會直接影響換到誰的臉。 int8 的 cosine 0.979 已足夠安全;用隨機雜訊做校準的話會掉到 0.78(會換錯人), 所以本 repo 的匯出流程強制使用真實人臉校準資料。

重現

python make_calib_data.py --images "input/*.jpg" --samples 24 --out-dir calib
python export_openvino_inswapper.py --onnx-dir onnx --out-dir models --calib-dir calib
python make_sample.py --onnx-dir onnx --models-dir models --out-dir samples

請勿將換臉結果用於冒充他人或未經同意的用途;InsightFace 模型僅限非商業研究用途。