6 prostych kroków by zamienić twarz wykorzystując DeepFakes

Widziałeś w jaki sposób działa i chcesz wiedzieć jak uruchomić DeepFakes dla swoich filmów? Dobrze trafiłeś, w tym tutorialu pokażę jak to zrobić krok po kroku!

DeepFakes – Czego potrzebuję?

Komputera! A najlepiej komputera z kartą graficzną Nvidia’i! A jeszcze lepiej gdy ta karta jest w miarę nowa. Dodatkowo jeśli używasz Linuxa (np. Ubuntu) będzie Ci znacznie prościej. Na Windowsie też się powinno udać, ale nie o tym tutaj. Jeżeli bardzo zależy Ci na Windowsie – daj znać w komentarzu.

Cierpliwości! To się przyda. Gdy uruchomimy DeepFakes na w miarę najnowszych GeForce’ach to trwa to jakieś 20-30 razy dłużej niż przetwarzany film.

Moja rekomendacja:

  • Ubuntu 16.04 / 18.04
  • Nvidia Geforce 1080
  • CUDA 9.0 (dokładnie)
  • CUDNN 7.0.4 dla CUDA 9.0 (te numery są bardzo ważne)

Krok 1: Pobierz kod DeepFakes z Githuba

Jeśli nie masz Gita to instalujemy, a następnie pobierzemy repozytorium i wejdziemy do katalogu faceswap:

sudo apt install git #Aby zainstalować gita
sudo apt install build-essential cmake #dodatkowe zależności
git clone https://github.com/deepfakes/faceswap.git
cd faceswap

Krok 2: Przygotuj środowisko

Będę upychał jak najwięcej instrukcji w te bloki, by zmniejszyć ich ilość by w konsekwencji łatwiej się to kopiowało.

Gdy nie masz jeszcze zainstalowanego pythona – sugeruję python3 w Anacondzie. Oczywiście może być też natywnie (bez Anacondy czy Virtualenv), ale można się pogubić w wersjach bibliotek między innymi projektami. W przypadku natywnego uruchamiania wpisujemy python3 zamiast python, oraz sudo pip3 zamiast pip.

Teraz zainstalujemy tensorflow i pozostałem biblioteki niezbędne do uruchomienia projektu:

pip install tensorflow-gpu==1.8.0 #Ta wersja działa z CUDA 9.0 i CUDNN 7.0.4
pip install requirements.txt
python setup.py

Od teraz powinno już się dać uruchomić skrypt faceswap.py oraz gui:

python faceswap.py -h  #Tego nie musisz uruchamiać
python faceswap.py gui

Krok 3: Dane i model

Oprogramowanie mamy już przygotowane – to jest dobra wiadomość! Natomiast teraz potrzebujemy modelu, który by nam zamieniał twarz. Na szczęście możemy pobrać gotowy model wytrenowany na parze Trump, Cage.

Pobieranie dla fanów klikania tu. Potem rozpakowujemy do katalogu faceswap.

Pobieranie dla fanów konsoli:

wget https://anonfile.com/p7w3m0d5be/face-swap.zip
unzip face-swap.zip

Właśnie pobraliśmy model wraz z danymi treningowymi.

Krok 4: Jaki film zmieniamy?

Film musimy pobrać na komputer. Jeżeli jest to film z YouTube, z pomocą może przyjść youtube-dl. Przyjmijmy że materiał udało nam się pobrać lub sami nagraliśmy film.

Kuba Klawiter z twarzą Cage'a (DeepFakes)
Kuba Klawiter z twarzą Cage’a

Potrzebujemy teraz wyeksportować klatka po klatce wszystkie klatki filmu. Utworzymy katalog sample i do niego zapiszemy pliki .jpg wykorzystując ffmpeg.

mkdir sample
cd sample
ffmpeg -i ścieżka/do/naszego/pliku.mp4  image%08d.jpg
cd ..

Krok 5: Zamieniamy twarze!

Nadszedł czas na zamianę twarzy, nareszcie! A więc potrzebujemy uruchomić poniższe polecenie. Oczywiście, że możemy skorzystać z GUI, no ale po co skoro mamy konsolę. Utworzymy katalog sample_swapped do którego będziemy zapisywać przetworzone obrazy.

Karol Majek z twarzą Nicolasa Cage'a dzięki DeepFakes
Karol Majek z twarzą Nicolasa Cage’a dzięki DeepFakes
mkdir sample_swapped
python faceswap.py convert -i sample/ -o sample_swapped/ --serializer json -D hog -l 0.6 -m models -t Original -c Masked -b 1 -M facehullandrect -g 1 -S -mh -sm -aca

To są magiczne parametry które możemy zmieniać po przeczytaniu instrukcji, lub wchodząc do GUI na ślepo w zakładce convert. GUI może nam również generować takie skrypty.

Krok 6: Zamieniamy .jpg w .mp4

Tego szukałem – czyli po co mi jpg kiedy ja chcę film? Tu z pomocą ponownie przychodzi ffmpeg. Wystarczy wejść w katalog i wskazać, że chcemy przekonwertować wszystkie pliki jpg tworząc jeden film mp4.

cd sample_swapped
ffmpeg -pattern_type glob -i '*.jpg' -c:v libx264 ../sample_swapped.mp4

Et voilà!

No i w ten sposób w 6 prostych krokach zamieniliśmy twarze w filmie! To są pierwsze lepsze parametry. Jestem przekonany, że możesz uzyskać lepsze wyniki odpowiedni dobierając parametry.

Linki

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *