Kolorowanie filmu za pomocą sieci neuronowych

in #polish7 years ago (edited)

Kiedy w XX wieku Richard Stallman tworzył ruch wolnego oprogramowania – myślę, że nie spodziewał się, że tak się rozwinie. Wolne oprogramowanie to jedna z najważniejszych rzeczy świata informatycznego.

Oczywiście wolne oprogramowanie nie musi dotyczyć informatyki – mamy pierwsze projekty sprzętu Open Hardware, samochodów, urządzeń. Ludzie coraz chętniej sięgają po te rozwiązania, gdyż potrafią ochronić ich prawa, które wielkie korporacje starają się zaburzyć.

Parę miesięcy temu pomyślałem. Skoro istnieją filmy, do których prawa autorskie wygasły i filmy, które nigdy nie miały niewolnych licencji (na przykład projekty Blender Foundation) – czemu tego nie połączyć i nie zrobić pierwszej wolnej (od wolności) telewizji.

Projekt ogólnie wydaje się absurdalny. Telewizje zwykle potrzebują milionów złotych. Milionów – których nie mam. I tu na pomoc przychodzi Open Source.

Zamiast używać fal radiowych użyję internetu – wszelkie koncesje w takim razie nie interesują mnie, gdyż filmy biorę na licencjach wolnych, czyli nie muszę kupować licencji. Jedyne co muszę to wziąć wszystko do kupy, poprawić i wrzucić.

Wszystko wydaje się być proste i takie jest… prawie. W najprostszej wersji takie się wydaje, ale jeśli chcemy być profesjonalni – musimy sięgać po nowe technologie. Mogę wrzucić film prosto z Wikipedii i ktoś pewnie obejrzy. Ale jeśli ten film zedytuję - usunę szumy dźwiękowe, obrazowe, przeskaluję, wyostrzę,pokoloruję, zwiększę framerate… możliwe, że będzie się lepiej oglądało.

Oczywiście nie każdy film jest w słabej jakości i część rzeczy nie trzeba robić. Ale często filmy, które straciły ochronę praw autorskich mają po 60-100 lat. Drobna korekta im się przyda.

W dzisiejszym poradniku pokażę jakich sposobów używam by pokolorować obraz.

1) Film

Film, który będę przerabiał w następnych częściach artykułu to „Birth of the B-29”, czyli propagandowy film USA. Nie jest on zbyt ciekawy (ma walory edukacyjne nt. Propagandy), natomiast jest w bardzo niskiej jakości – rozdzielczość 400x300, bardzo stary materiał…

Film ma przedstawiać powstający bombowiec B-29.

Film możecie obejrzeć tutaj:
https://upload.wikimedia.org/wikipedia/commons/f/f8/Birth_of_the_B-29.ogv

2) Podzielenie filmu na klatki i zapisanie każdej jako PNG.

Program, który będziemy używać służy do kolorowania obrazów, nie filmów. Jak zapewne wiecie – filmy to zbiór obrazów. Dzięki programowi ffmpeg możemy podzielić film na klatki i zapisać jako PNG.

3) Pokolorowanie obrazu.

Do tego zadania wykorzystuję projekt „colorful image colorization” od richzbang. Wykorzystuje on sieci neuronowe do kolorowania zdjęć.

Wystarczy tylko używając polecenie find zmusić „colorful image colorization” do pokolorowania ponad 36 000 klatek filmu.

4) Wydobycie dźwięku

Połączenie klatek pokolorowanych w film domyślnie nie zawiera dźwięku. Za pomocą FFMpeg możemy z oryginalnej wersji filmu wydobyć plik audio, który ostatecznie zostanie połączony z wideo.

5) Łączenie filmu

Do łączenia klatek posłuży nam oczywiście FFMpeg. Wszystkie klatki zostały połączone w film skompresowany kodekiem H.264.

6) Łączenie filmu z dźwiękiem.

Tutaj został użyty Kdenlive, czyli nieliniowy edytor filmów. Używając – oczywiście FFMpeg połączy on dwa pliki w jeden w formacie WebM. Ostatecznie plik zostanie wysłany (dla demonstracji przed Wami) na serwis Youtube, byście mogli porównać jak to wygląda.

7) Przydatne linki

Artykuł z 2016 roku pokazujący tę samą technologię kolorującą inny film:
https://sskwirrel.blogspot.com/2016/04/using-neural-networks-to-colour-archive.html

Artykuł na Wikipedii o filmie „Birth of the B-29”:
https://en.wikipedia.org/wiki/Birth_of_the_B-29

Projekt koloryzacji zdjęć:
https://github.com/richzhang/colorization

Coin Marketplace

STEEM 0.18
TRX 0.16
JST 0.031
BTC 63062.73
ETH 2687.13
USDT 1.00
SBD 2.54