Tukar wajah real-time di PC lokal: GPU, FPS, webcam, dan privasi
Tukar wajah live adalah anggaran waktu tetap per frame. Memahami tahap mana yang menghabiskan anggaran itu adalah pembeda antara pratinjau yang enak dipakai dan tayangan tersendat.

Jawaban singkat: Tukar wajah real-time menjalankan seluruh pipeline deteksi-swap-komposit pada setiap frame webcam, di mesin Anda sendiri. Frame rate ditentukan oleh tahap paling lambat, akselerasi perangkat keras yang membuatnya layak dipakai, dan face enhancement biasanya pengaturan yang paling banyak memakan FPS.
Ekspor video boleh memakan waktu selama apa pun. Pratinjau live tidak. Pada 30 FPS Anda punya sekitar 33 milidetik per frame untuk menangkap gambar, menemukan wajah, menukarnya, memperbaikinya bila perlu, dan menampilkannya. Semua di bawah ini mengikuti batasan itu.
Sebelum mulai live
Gunakan wajah Anda sendiri atau foto sumber yang jelas Anda punya izinnya, dan bersikap terbuka bahwa gambar kamera sudah diubah. Jangan gunakan tukar wajah live untuk penyamaran, penipuan, melewati verifikasi identitas, atau pelecehan. Lihat kebijakan penggunaan bertanggung jawab.
1. Apa yang terjadi pada setiap frame webcam
Jalur live adalah sebuah loop, dan tiap tahap di dalamnya punya biaya:
- Capture. Satu frame diambil dari kamera pada resolusi dan frame rate yang diminta.
- Deteksi dan analisis. Wajah pada frame itu dilokalisasi dan dideskripsikan, termasuk embedding untuk menentukan siapa itu siapa.
- Penugasan. Tiap wajah terdeteksi dicocokkan ke wajah sumber — satu sumber default untuk semua, atau kecocokan terdekat di antara identitas yang Anda petakan.
- Swap. Model swap berjalan sekali per pasangan sumber-target dan hasilnya ditempelkan ke frame.
- Perbaikan opsional. Bila face enhancement aktif dan runtime mendukungnya di mode live, satu pass restorasi berjalan per wajah.
- Tampilan. Frame jadi dienkode dan dialirkan ke jendela aplikasi lewat koneksi loopback lokal.
Dua konsekuensi langsung. Pertama, pipeline-nya per wajah, bukan per frame — dua orang di layar kira-kira melipatduakan beban swap dan perbaikan. Kedua, frame rate yang Anda lihat ditentukan tahap paling lambat, jadi mengejar kamera yang lebih cepat tidak menolong kalau enhancer yang jadi hambatan.
2. Capture kamera: yang diminta versus yang didapat
Deep Face Cam membuka kamera dengan target 960×540 pada 60 FPS memakai MJPG, lalu membaca kembali apa yang benar-benar diberikan perangkat. Permintaan itu disengaja: 540p adalah resolusi kerja live yang wajar, dan meminta MJPG sejak awal penting di Windows, tempat webcam yang dibiarkan pada format tak terkompresi bisa terbatas hanya beberapa frame per detik karena bandwidth.
Di Windows aplikasi mencoba DirectShow dulu, lalu Media Foundation, lalu fallback umum, karena backend tersebut mengenumerasi kamera dengan urutan berbeda dan tidak semua perangkat cocok dengan semuanya. Di macOS ia memakai AVFoundation dengan fallback umum.
Aplikasi juga mengukur frame rate nyata secara empiris alih-alih memercayai laporan driver, karena nilai laporan itu tidak andal di DirectShow — kamera yang mengirim 60 FPS lazim tetap melaporkan 30. Kalau ingin melihat angkanya, aktifkan Show FPS di panel opsi.
3. Execution provider: pengaturan yang menentukan sisanya
Inference berjalan lewat ONNX Runtime, dan execution provider yang dipilih adalah faktor tunggal terbesar untuk performa live. Backend mendeteksi apa yang tersedia saat startup dan memilih dengan urutan berikut:
| Provider | Platform | Catatan |
|---|---|---|
| CUDA | Windows, GPU NVIDIA | Performa NVIDIA terbaik, tetapi sensitif terhadap kecocokan versi driver, CUDA, dan cuDNN. |
| ROCm | Stack komputasi AMD | Diprioritaskan di atas CoreML dan DirectML bila tersedia. |
| CoreML | macOS, Apple silicon | Dipakai sebagai ganti PyTorch MPS; dapat berjalan di CPU, GPU, dan Neural Engine tergantung partisi model. |
| DirectML | Windows | Dukungan GPU luas untuk NVIDIA, AMD, dan Intel. |
| CPU | Semua platform | Kompatibilitas maksimum, kecepatan terendah. Bisa untuk ekspor, paling berat untuk live. |
Windows dipaketkan sebagai build CPU, DirectML, dan CUDA terpisah dari set dependensi berbeda, jadi memilih installer yang tepat adalah bagian dari keputusan ini, bukan sesuatu yang bisa di-toggle belakangan. Di Apple silicon aplikasi juga menulis file cache CoreML ke direktori model Anda, sehingga pemakaian pertama sebuah model bisa lebih lambat daripada berikutnya.
Perlu dicatat: perbaikan wajah saat live aktif hanya ketika runtime memakai CUDA atau DirectML. Pada provider lain pipeline live menjalankan swapper saja, sementara ekspor gambar dan video tetap bisa memakai enhancer apa pun. Rinciannya di panduan GFPGAN vs GPEN.
4. Ke mana FPS Anda pergi
Ketika pratinjau live terlalu lambat, telusuri daftar ini berurutan. Urutannya disusun dari biaya waktu terbesar relatif terhadap kemudahan mengubahnya.
| Faktor | Dampak | Yang pertama dicoba |
|---|---|---|
| Face enhancer | Tertinggi. Satu pass restorasi penuh per wajah, per frame. | Matikan, atau turun ke model 256. |
| Jumlah wajah | Tinggi. Swap dan perbaikan sama-sama berjalan per wajah. | Atur framing agar hanya wajah yang perlu terlihat. |
| Execution provider | Tinggi. Live dengan CPU saja adalah kasus terberat. | Pasang build yang cocok dengan GPU Anda. |
| Resolusi capture | Sedang. Memengaruhi biaya deteksi dan komposit. | Jaga resolusi live tetap moderat; ini bukan ekspor. |
| Format kamera | Sedang dan sering tak terlihat. Format tak terkompresi bisa mencekik perangkat itu sendiri. | Konfirmasi laju capture dengan Show FPS. |
| Beban GPU lain | Bervariasi. Game, encoder, dan browser berebut perangkat yang sama. | Tutup aplikasi berat GPU selama sesi live. |
| Batas termal | Bertahap. Laptop menurunkan clock setelah beberapa menit. | Nilai FPS yang bertahan, bukan tiga puluh detik pertama. |
Bedakan frame rate dari latensi. Pratinjau bisa berjalan pada frame rate nyaman tetapi tetap terasa tertunda, karena tiap frame melewati beberapa tahap dan buffer. Kalau yang mengganggu adalah jeda, kurangi kerja per frame, bukan hanya resolusi.
Anggaran frame, resolusi capture, dan yang perlu dicatat
Kerja live pertama-tama adalah aritmetika, baru setelah itu penyetelan. Anggaran per frame ditentukan oleh target frame rate, dan capture, deteksi, penugasan, swap, perbaikan opsional, serta tampilan semuanya harus muat di dalamnya.
| Target frame rate | Waktu per frame | Sisa untuk deteksi, swap, perbaikan |
|---|---|---|
| 15 FPS | 66.7 ms | ≈ 61 ms |
| 24 FPS | 41.7 ms | ≈ 37 ms |
| 30 FPS | 33.3 ms | ≈ 28 ms |
| 60 FPS | 16.7 ms | ≈ 12 ms |
Kolom ketiga mengasumsikan sekitar 5 md untuk capture dan tampilan. Itu asumsi, bukan hasil pengukuran di mesin Anda — anggap sebagai bentuk masalahnya, bukan spesifikasi.
| Resolusi capture | Piksel per frame | Terhadap default 960 × 540 |
|---|---|---|
| 640 × 360 | 230,400 | 0.44× |
| 960 × 540 | 518,400 | 1.00× |
| 1280 × 720 | 921,600 | 1.78× |
| 1920 × 1080 | 2,073,600 | 4.00× |
Deteksi dan komposit tumbuh mengikuti jumlah piksel dalam frame. Swap dan perbaikan tumbuh mengikuti jumlah wajah. Karena itu menaikkan resolusi dan menambah satu orang adalah dua jenis biaya yang berbeda.
Yang perlu dicatat saat mengukur
| Kolom | Mengapa penting |
|---|---|
| Sistem operasi dan varian build | CPU, DirectML, dan CUDA adalah build Windows terpisah; macOS berbeda per arsitektur. |
| Execution provider | Faktor tunggal terbesar, sekaligus penentu apakah perbaikan live tersedia. |
| GPU dan versi driver | Performa CUDA sensitif terhadap kecocokan driver, CUDA, dan cuDNN. |
| Resolusi capture | Menentukan biaya deteksi dan komposit per frame. |
| FPS laporan vs FPS terukur | Di DirectShow, kamera 60 FPS lazim melaporkan 30. |
| Jumlah wajah di frame | Swap dan perbaikan per wajah, jadi ini melipatgandakan beban. |
| Pengaturan enhancer | Off / GPEN-256 / GPEN-512 / GFPGAN memang berbeda biaya per wajahnya. |
| FPS bertahan setelah 5 menit | Laptop menurunkan clock; tiga puluh detik pertama bukan angka sebenarnya. |
5. Membuat hasil live yang layak tayang
Live lebih tidak memaafkan daripada render file, karena Anda tidak bisa kembali memperbaiki satu frame buruk. Sebagian besar kualitas ditentukan hal-hal yang Anda siapkan sebelum mulai:
- Foto sumber. Tajam, pencahayaan merata, mendekati frontal. Aturan yang sama seperti video, dan di sini lebih penting.
- Pencahayaan. Cahaya depan yang merata mengalahkan jendela terang di belakang Anda. Backlight penyebab paling umum swap live yang terus pecah.
- Jarak dan framing. Wajah yang terlalu kecil di frame memberi deteksi lebih sedikit bahan.
- Gerakan. Putaran kepala cepat dan tangan melintasi wajah adalah frame yang gagal; uji itu sengaja sebelum mengandalkan setup Anda.
- Mirror. Pratinjau bisa dibalik horizontal, memengaruhi seberapa alami gerakan Anda terasa tetapi bukan geometri hasilnya.
Untuk lebih dari satu orang di kamera, penugasan live adalah keputusan kemiripan yang berjalan terus-menerus, bukan pemetaan yang dianalisis lebih dulu, sehingga secara hakikat lebih rapuh daripada file video terpetakan. Panduan banyak wajah menjelaskan bedanya.
6. Apa itu pratinjau lokal — dan apa yang bukan
Ini perlu dinyatakan terang-terangan, karena inilah asumsi keliru yang paling sering muncul soal alat tukar wajah live. Deep Face Cam menampilkan hasil live di jendela pratinjaunya sendiri. Ia tidak mendaftarkan perangkat webcam virtual tingkat sistem, sehingga Zoom, Discord, OBS, dan browser tidak melihatnya di daftar kamera.
Kalau Anda butuh outputnya di aplikasi lain, perutean itu harus datang dari software screen atau window capture terpisah, dengan segala konsekuensi kualitas, latensi, dan platformnya. Jangan berasumsi rantai itu berfungsi sebelum Anda mengujinya sendiri — dan ingat bahwa menyajikan feed kamera yang sudah diubah sebagai penampilan asli Anda dalam rapat atau proses verifikasi adalah persis penggunaan yang dilarang kebijakan penggunaan bertanggung jawab.
7. Privasi: apa yang tetap lokal dan apa yang tidak
“Lokal” dan “offline” bukan klaim yang sama, dan perbedaannya paling penting untuk feed kamera live.
- Proses inti di perangkat. Frame kamera, swap, dan pratinjau ditangani backend yang berjalan di mesin Anda.
- Pratinjau lewat loopback. Backend bawaan menyajikan frame hasil ke jendela aplikasi lewat koneksi lokal di 127.0.0.1 — kanal internal di komputer Anda, bukan unggahan.
- Model diambil sekali, dengan konfirmasi. File model besar tidak disertakan di repositori sumber. Mereka diunduh ke direktori Anda setelah Anda konfirmasi dan diverifikasi terhadap checksum.
- Sebagian penggunaan jaringan tetap ada. Installer, unduhan model, tautan dokumentasi, dan pemeriksaan pembaruan memakai jaringan.
- File hasil tetap di disk. Model, output, file sementara, dan pengaturan berada di direktori app data per pengguna — penting diketahui saat membersihkan setelah sesi.
Rekomendasi jujurnya sama untuk alat mana pun yang membuat klaim ini: uji build persis yang akan Anda pakai, selesaikan unduhan model pertama, lalu amati perilakunya sebelum mengarahkannya ke sesuatu yang sensitif. Lihat catatan privasi.
Penanganan masalah live
| Gejala | Kemungkinan penyebab | Yang diperiksa |
|---|---|---|
| Kamera tidak terbuka | Aplikasi lain memegang perangkat, atau backend tidak cocok. | Tutup aplikasi kamera lain; di Windows aplikasi mundur lewat DirectShow, Media Foundation, lalu backend umum. |
| Laju capture sangat rendah | Kamera bernegosiasi ke format tak terkompresi. | Aktifkan Show FPS dan bandingkan dengan frame rate resmi kamera. |
| Opsi enhancer tidak tersedia di live | Runtime bukan CUDA atau DirectML. | Periksa provider; enhancement tetap jalan untuk ekspor gambar dan video. |
| Wajah hilang saat menoleh | Deteksi kehilangan wajah yang jauh dari frontal. | Perbaiki pencahayaan dan framing; uji rentang gerak sebelum mengandalkannya. |
| Wajah mendarat di orang yang salah | Penugasan live berbasis kemiripan per frame. | Kurangi jumlah orang di layar, atau pakai alur file. |
| FPS turun setelah beberapa menit | Throttling termal. | Ukur frame rate yang bertahan, bukan detik-detik awal. |
| Jalan pertama jauh lebih lambat | Pemuatan model dan, di Apple silicon, pembuatan cache CoreML. | Panaskan sekali, baru ukur. |
FAQ
Apakah tukar wajah real-time butuh GPU?
Jalur CPU bisa menjalankan pipeline-nya, tetapi live adalah tempat akselerasi paling menentukan karena tiap frame punya anggaran waktu tetap. Di Windows tersedia build CPU, DirectML, dan CUDA terpisah untuk alasan ini; di Apple silicon aplikasi memakai CoreML provider.
Bisakah dipakai sebagai webcam di Zoom, Discord, atau OBS?
Tidak secara langsung. Aplikasi menampilkan hasil di jendela pratinjaunya sendiri dan tidak mendaftarkan perangkat kamera virtual sistem, sehingga aplikasi lain tidak akan melihatnya sebagai input kamera.
Kenapa FPS live lebih rendah daripada FPS kamera saya?
Karena capture hanya tahap pertama. Deteksi, penugasan, swap, perbaikan opsional, dan tampilan harus muat dalam anggaran frame yang sama, dan tahap paling lambat yang menentukan iramanya.
Resolusi berapa yang sebaiknya dipakai untuk live?
Lebih rendah daripada ekspor. Aplikasi menargetkan capture 960×540 secara default, titik kerja yang wajar untuk pratinjau; tidak ada untungnya mengalirkan 4K ke pipeline real-time.
Apakah tukar wajah live mengunggah feed kamera saya?
Proses inti berjalan di mesin Anda dan pratinjau bergerak lewat koneksi loopback lokal. Akses jaringan tetap dipakai untuk unduhan model yang dikonfirmasi dan tautan, jadi periksa perilaku build yang Anda pasang.
Bisakah dua orang memakai tukar wajah live bersamaan?
Bisa, tetapi penugasannya diputuskan berdasarkan kemiripan tiap frame, bukan dari peta yang sudah dianalisis, sehingga lebih rapuh daripada render video terpetakan — perlakukan sebagai pratinjau.
Siapkan live sekali, lalu ukur
Pilih build yang cocok dengan GPU Anda, aktifkan Show FPS, dan uji dengan enhancer mati sebelum memutuskan apa yang sanggup ditahan mesin Anda.