Zelf een deepfake-video maken met DeepFaceLab
Op internet is kant-en-klare software te vinden waarmee je zelf een deepfake-video maken kunt. Die software heet DeepFaceLab maar is nu niet bepaald gebruiksvriendelijk te noemen. Daarom helpen we je hier ermee op weg.
Het programma DeepFaceLab vereist Windows 10 en een recente Nvidia-kaart. De software oogt wat rudimentair en gebruikt batchbestanden voor het uitvoeren van acties. In de toekomst wil de maker een gebruikersvriendelijke interface maken waarbij je in principe alleen nog maar twee video’s hoeft te selecteren en op een knop hoeft te drukken.
Lees ook: Wat is deepfake en hoe herken je nepvideo's?
In de workspace-map staan drie mappen en twee videobestanden genaamd data_dst en data_src (doel en bron). Het laatste bestand bevat het gezicht dat je wilt gebruiken en moet worden verwerkt in het doelbestand. Voordat je begint, moet je dat materiaal dus bij elkaar zoeken, maar je kunt ook het meegeleverde bronmateriaal gebruiken. Dat bestaat uit een video van het personage Tony Stark uit Ironman, en de doelvideo is iemand die voor een greenscreen staat. Als je andere bestanden wilt gebruiken, moet je deze de eerdergenoemde namen geven.
Stappenplan deepfake-video
1. Voor de eerste stap moeten er losse frames uit de bronvideo worden gehaald; dat worden dan foto’s in png-formaat. Start batchbestand nummer 2. Je krijgt dan de vraag hoeveel frames per seconde je wilt gebruiken. Hoe meer fps, des te langer het renderen duurt. De eerste keer kun je het best voor de standaardopties kiezen door op de Enter-toets te drukken.
2. Start batchbestand 3.2. Deze doet hetzelfde met het doelbestand en haalt er losse frames uit. Bij optie 3.2 wordt elk individueel frame gebruikt en in een aparte map ondergebracht. Dat kan even duren, mede afhankelijk van de lengte van de video, de resolutie en hoe krachtig je computer is.
3. Vervolgens moeten de gezichtskenmerken worden opgenomen in een dataset. Daarvoor worden de eerste opslagen frames uit het bronbestand geanalyseerd. Kies voor optie 4: all gpu. De frames worden nu opgeslagen in data_src.
©PXimport
4. Doe vervolgens hetzelfde met de doelbestanden via batchbestand 5. Deze analyseert de gezichtskenmerken van het doelbestand op basis van de png-frames. De optie DLIB all GPU leidt tot minder fouten (false-postives) en MT all GPU leidt tot betere detectie en een realistischer algemeen resultaat, maar meer mogelijke fouten.
5. Controleer vervolgens de map aligned en verwijder hier afwijkende foto’s, bijvoorbeeld waar iets voor het gezicht zit. Deze verstoren namelijk het eindresultaat omdat de software anders denkt dat zoiets onderdeel uitmaakt van het gezicht.
6. Vervolgens moet de software worden getraind. Dat kan in verschillende kwaliteitsgradaties, maar de eerste keer is het handig om bij batchbestand 6 voor een lage waarde te kiezen, zoals H64. Dat levert een lagere kwaliteit op, maar wel sneller resultaat. De vragen slaan we voor nu over. Je kunt de training een tijd door laten lopen, eventueel uren als er veel bronmateriaal is. Druk op de Enter-toets om het trainen te beëindigen.
©PXimport
7. Daarna kunnen we de transformatie starten met batchbestand 7. Ook hier zijn weer verschillende gradaties beschikbaar en kiezen we eerst (omwille van de snelheid) voor H64. Opnieuw zijn er weer veel instellingsopties beschikbaar. Het kan per scène verschillen welke je hier het best kunt kiezen. Je kunt het altijd opnieuw uitvoeren.
8. De twee frames zijn nu samengevoegd, waarbij het brongezicht op dat van het lichaam van het doelbestand is geprojecteerd. Van deze losse foto’s moet nu weer een video worden gemaakt. Dat kan door de foto’s in een videobewerkingsprogramma te slepen, maar je kunt ook batchbestand 8 gebruiken, die de beelden omzet naar een mp4-bestand.
Grotere dataset geeft beter resultaat
Het resultaat is indrukwekkend, maar niet perfect. Om tot een beter resultaat te komen is het aan te raden om de dataset uit te breiden, bijvoorbeeld door meerdere bronvideo’s te gebruiken waarbij het gezicht in verschillende omstandigheden en vanuit diverse hoeken te zien is. Het is ook afhankelijk van het doelbestand. Draait de persoon zich daar bijvoorbeeld naar de zijkant, dan heb je ook bronmateriaal nodig waarbij dat gebeurt. De resolutie van het bronmateriaal is eveneens belangrijk, anders blijven details vaag.
Tekst: Jeroen Horlings