DeepFaceLab ile Birbirinden Gerçekçi Deepfake Videolar Oluşturma Rehberi! (SAEHD Model)

Mehmet Emin Masca
7 min readAug 18, 2021

Şüphesiz günümüzün en ilginç ve dikkat çeken teknolojilerinden biri Deepfakes’tir diyebiliriz. Deepfakes, 2017 yıllarının sonuna doğru Reddit’te bir patlamayla ortaya çıkıyor ve o günden sonra hiçbir şey eskisi gibi olmuyor.

PEKİ NEDİR BU DEEPFAKES DENEN MERET?

Vikipedi’deki tanımına göre Deepfakes: Deepfakes, mevcut bir görüntü veya videoda yer alan bir kişinin, yapay sinir ağları kullanarak bir başka kişinin görüntüsü ile değiştirildiği bir medya türüdür. Sıklıkla, otomatik kodlayıcılar ve üretken çekişmeli ağlar (GAN’lar) olarak bilinen makine öğrenme tekniklerini kullanarak mevcut medyanın kaynak medya üzerinde birleştirilmesi ve üst üste konması ile üretilirler.[1][2] Deepfakes, “deep learning” (derin öğrenme) ve “fake” (sahte) kelimelerden türetilmiş bir birleşik kelimedir.[3]

Bireylerin başlarını değiştirme
Bir başka örnek
Bu da ülkemizden bir örnek. Görüntü, Ziraat Bankası’na ait bir reklamdan. https://www.youtube.com/watch?v=fPiwmoxa0QE&ab_channel=ZiraatBankas%C4%B1

Sizlere şok edici bir haberim var. Bunu evdeki bilgisayarınız ile siz de yapabilirsiniz, hem de hiçbir kodlama bilgisine sahip olmadan! Şaşırtıcı değil mi? Öyleyse sizler için hazırladığım tutorial’a geçiş yapalım.

ADIM 1: İNDİRME İŞLEMLERİ!

  • Öncelikle sizlere verdiğim linkten projenin Github sayfasına gidiyoruz.

https://github.com/iperov/DeepFaceLab

  • Ardından sayfada biraz aşağı indiğinizde Releases kısmını göreceksiniz. Buradan kendinize uygun olan versiyonu seçiniz. Ben ilk seçeneği seçip Torrent ile indirmiştim.
  • Linkteki bütün dosyaları indirmenize gerek yok. Ekran kartınız için hangisi uygunsa sadece onu indirmeniz yeterli. Ben acı yoldan tecrübe etmiştim:)
  • Dosyamız indikten sonra çift tık yapıp Extract diyoruz ve hepsi bu kadar! Artık bu heyecan verici teknolojiyle harikalar yaratmaya hazırız.

ADIM 2: ÖN HAZIRLIKLAR

  • Bizleri böyle bir ekran karşılayacak. Bu ekrana alışın çünkü bütün vaktinizi burada geçireceksiniz. Ayrılmaz bir dost olacaksınız… Workspace dosyası sizin harikalar yaratacağınız yer. Bütün olay burada başlıyor.
  • Workspace klasörünün içine girdiğinizde sizi “data_dst” ve “data_src” isimli iki tane .mp4 dosyası karşılayacak. Bu iki video, programı indirdiğinizde default olarak geliyor ve direkt bu videolar üzerinden çalışmaya başlayabilirsiniz. Ben de ilk denememi o videolar üzerinde yapmıştım ancak sonradan farklı denemelerde de bulunduğum için bu iki dosyayı değiştirip yerlerine başka videolar koydum. Bu yüzden fotoğrafta gördüğünüz videolar, sizin programı indirdiğinizde karşılaştığınız videolar değil.
“data_dst ve data_src” isimli videolar

“data_src” (source) sizin kaynak olarak kullanacağınız videodur.

“data_dst” (destination) sizin hedef videonuzdur.

data_src videosundan faceset’ler çıkarılacak ve hedef nokta olan data_dst videosundaki bireye aktarılacaktır.

KAYNAK VE HEDEF VİDEOLARINIZI SEÇERKEN DİKKAT ETMENİZ GEREKEN HUSUSLAR

Yüksek çözünürlüklü olmalı

Videodaki yüzler, kameradan çok uzak olmamalı

Bireylerin yüzleri, birden fazla açıdan çekilmiş ve mimik açısından zengin olmalı

Aydınlatma iyi olmalı

Yüzlerin bir şekilde eşleşmesi gerekiyor. Örneğin videoların birinde gözlüksüz birini kullanırken diğer videoda gözlüklü birini kullanmayın. Tecrübeyle sabittir:)

UFAK BİR NOT

Öncelikle sizlere ufak bir not geçmek istiyorum.

Çalışacağınız videoların ismi her zaman “data_dst” ve “data_src” olmalı. Workspace’inizdeki eski videoları, Masaüstünüzde yeni bir klasör açıp orada saklayabilirsiniz. Benim sizlere önerim silmemeniz yönünde çünkü ortaya çıkardığınız işleri belirli bir yerde derlemiş olursunuz ve istediğiniz zaman geriye dönüp tekrar bakabilirsiniz.

Ek olarak, yeni bir projeye başlayacağınız zaman, görselde olduğu gibi “clear workspace”e basarsanız sistem sizin için her şeyi hazır hale getirecek. “Workspace” klasörünüze hedef ve kaynak videolarınızı koyup çalışmaya başlayabilirsiniz.

ADIM 3: EMNİYET KEMERLERİNİZİ BAĞLAYIN, BAŞLIYORUZ!

Sırasıyla yapmanız gerekenler;

  • 2) extract images from video data_src (data_src.mp4 videosunu fotoğraflara bölüyor) (Çıkan ekranda birkaç defa “Enter” tuşuna basarak default ayarları kullanabilirsiniz.
İşleminiz bitince “Press a Key to Continue” yazacak ve ondan sonra ekranı kapatabilirsiniz.
  • 3) extract images from video data_dst FULL FPS (Bu sefer de data_dst.mp4 videosunu fotoğraflara bölüyor) (Çıkan ekranda birkaç defa “Enter” tuşuna basarak default ayarları kullanabilirsiniz)
  • 4) data_src faceset extract (data_src.mp4 videosundan faceset’leri çıkarıyoruz)
Size Face Type sorduğunda “wf” yazın ve sonrasında default ayarları kullanmaya devam edin
  • 4.1) data_src view aligned result (Elde ettiğiniz sonuçları burada görebilirsiniz. En iyi sonuca ulaşmak için Training’e başlamadan önce burada kriterlerimize uymayan gereksiz fotoğrafları silin. Örneğin yanlış tanınan yüzler, yamuk fotoğraflar vs.)
  • 5) data_dst faceset extract (data_dst.mp4 videosundan faceset’leri çıkarıyoruz) (4.aşamanın aynısı)
Size Face Type sorduğunda “wf” yazın ve sonrasında default ayarları kullanmaya devam edin
  • 5.1) data_dst view aligned results (Elde ettiğiniz sonuçları burada görebilirsiniz. En iyi sonuca ulaşmak için Training’e başlamadan önce burada kriterlerimize uymayan gereksiz fotoğrafları silin. Örneğin yanlış tanınan yüzler, yamuk fotoğraflar vs.) (4.1. aşamanın aynısı)
  • 5.XSeg) data_dst mask — edit

İşte burası çok önemli arkadaşlar. Bu bölümde bazı yüzlere kendimiz manuel olarak maskeleme işlemi yapacağız. Maskeleme işlemini dikkatli yapmamız çok mühim bir mesele. Yanlış veya baştan savma bir maskeleme yaparsanız göze batan bir sonuç elde edersiniz. Ben maskeleme işlemini biraz baştan savma yapmıştım ve bireyin saçlarını da dahil etmiştim birkaç yerde. Bu da can sıkıcı bir sonuç ortaya çıkardı. En sona fotoğrafını koyacağım.

Ne kadar çok fotoğraf üzerinde maskeleme yaparsanız o kadar iyi fakat çok da abartmamak lazım.
  • 5.XSeg) data_src mask — edit

Aynı işlemi bu sefer de kaynak videomuz için yapıyoruz. Bir önceki işlemin aynısı.

  • 5.XSeg) train

Şimdi bu XSeg modelimizi eğitmeye başlıyoruz. Sizlere Facetype sorusunu yönelttiğinde yine “wf” yazınız. Enter’a basıp işlemi başlatınız. Heyecan verici kısım başlıyor!

Öncelikle şu konuda bir anlaşalım:

NE KADAR ÇOK ITERATIONS = O KADAR İYİ BİR SONUÇ

Sizlere önerim minimum 10.000 Iters olması. Tabii ki daha fazlası da olur. Çünkü biraz önce ne dedik, NE KADAR ÇOK ITERATIONS = O KADAR İYİ BİR SONUÇ.

Tamam bu kadar yeterli dediğiniz an “Enter”a basıp modelin eğitimini tamamlayabilirsiniz. Devam edelim.

  • 5.XSeg) data_dst trained mask — apply (Eğitilmiş modelimizi uyguluyoruz)
  • 5.XSeg) data_src trained mask — apply (Eğitilmiş modelimizi uyguluyoruz)
  • 5.XSeg) data_src mask — edit (Sonucu kontrol ediyoruz, en iyi çıktıyı elde etmek için kötü sonuçlara tekrar maskeleme yapıyoruz)
  • 5.XSeg) data_dst mask — edit (Sonucu kontrol ediyoruz, en iyi çıktıyı elde etmek için kötü sonuçlara tekrar maskeleme yapıyoruz)
  • 5.XSeg) train (Düzeltmeleri yaptıktan sonra biraz daha eğitiyoruz. Eğer hiçbir düzeltme yapmadıysanız tekrar eğitmenize gerek yok.)
  • 5.XSeg) data_dst trained mask — apply (Bu sefer de yeniden eğitilmiş halini uyguluyoruz, fark ettiyseniz öncekiyle aynı aşama)
  • 5.XSeg) data_src trained mask — apply (Bu sefer de yeniden eğitilmiş halini uyguluyoruz, fark ettiyseniz öncekiyle aynı aşama)

ŞİMDİ SİHİR BAŞLIYOR

Son aşama olarak ise;

6) train SAEHD

diyoruz ve modelimizin eğitimine başlıyoruz. Minimum 100.000 iterations olmasına önem verin. Neydi, ne kadar çok olursa o kadar çok iyiydi. İsterseniz 500.000 isterseniz 1.000.000 iterations yapabilirsiniz. Ama iyi bir sonuç için ne-kadar-çok-o-kadar-iyi! Tamam yeter dediğiniz an “Enter” tuşuna basın ve eğitimi tamamlayın.

Bu aşamada sisteminiz biraz zorlanacak. Bilgisayarınız cehennem gibi ısınacak. Ben işlem devam ederken kendime gidip bir laptop soğutucu almıştım. Sistemin ne kadar zorlandığını size bir görselle kanıtlayacağım. Bilgisayarınıza ödediğiniz paradan kuruşuna kadar faydalanıyorsunuz bu işlem esnasında! :)

Ekran Kartı
İşlemci

ADIM 4: FİNALE DOĞRU

Eveet pek değerli arkadaşım, artık yüzdük yüzdük ve kuyruğuna geldik.

  • 7) merge SAEHD

diyoruz ve karşımıza interaktif bir ekran çıkıyor.

Q-A / W-S / E-D / R-F / T-G / Y-H-N / U-J gibi seçeneklere basarak göze en çok hitap eden sonuca karar verebilirsiniz. TAB tuşuna basarak ekranlar arasında geçiş yapabilirsiniz. İşiniz bitince Shift + M ve Shift + ? tuşlarına basarak önceki ve sonraki Frame’ler için uygulayabilirsiniz bunları. Buradaki seçenekleri karıştırıp tek tek denemek sizin için daha faydalı olur.
Sonucunuzu elde ettikten sonra mutlaka “C”ye basarak “Color Transfer Mode”u uygulayın. Üzerinde istediğiniz gibi oynama yapabilirsiniz. Unutmayın, burası sizin harikalar yarattığınız yer ve ne kadar gerçekçi bir sonuç elde edeceğinize etkisi çok büyük.

Bu örnekte yanlış maskelemenin sonuçlarını görüyorsunuz arkadaşlar. Maskeleme işlemi daha detaylı yapılsaydı bu sefer inanılmaz gerçekçilikte bir sonuç elde edecektim. Amaa siz aynı hataları yapmayın diye ben sizin için önden yaptım:)

ADIM 5: BÜYÜK FİNAL!

8) merged to mp4 seçeneğine tıklayarak artık videonuzu elde edebilirsiniz. Elde ettiğiniz sonuç “Workspace” klasöründe “result.mp4” ismiyle sizleri bekliyor olacak. İster arkadaşlarınızla ve sevdiklerinizle ister internette isterseniz de benimle de paylaşabilirsiniz sonuçlarınızı!

Umarım sizler için faydalı bir tutorial olmuştur. Sorularınızı 7/24 iletebilirsiniz bana, müsait olduğum zamanlarda hepsine tek tek cevap vereceğim.

Sizlerle sosyal medya hesaplarımı da paylaşıyorum, bana istediğiniz mecradan ulaşabilirsiniz. Bir sonraki yazıma kadar görüşmek üzere;)

E-Mail: eminmasca@hotmail.com

LinkedIn: https://www.linkedin.com/in/mehmet-emin-masca-359812207/

--

--

Mehmet Emin Masca

Finance and Technology Enthusiast | Hacettepe University Statistics Department Student