동영상 화질 개선 훑어보기

TecoGAN 이란 게 있더라

by 핑크곰

모처럼 여유가 생긴 여느 오후, 옆팀에서 진행하는 영상화질 개선 프로젝트 이야기를 듣고 개인적인 궁금함에 이것저것 찾아봤다. 트랜스 코더나 인코더 중에 영상 화질을 개선시키는 기능을 가진 제품이 나와있는 게 있지 않을까 하는 의구심(이라고 쓰고 탐구심이라고 읽는다;;)이 시발점.


아무튼, 짧은 검색으로 그런 제품은 찾지 못했는데 퇴근길에 우연찮게 이미지를 개선하는 오픈소스 프로젝트가 있다는 걸 찾게 됐다. 에니 덕후들이 만든듯한 샘플들과 함께....

https://github.com/nagadomi/waifu2x


딥 러닝을 통해 2D 그림의 해상도를 늘려주는 방식인데, 쉽게 이야기해서 학습된 알고리즘을 통해 이미지를 다시 그린다. 실제 돌려보니 그럴듯하다.

imessenger_me.jpg 원본 이미지
imessenger_me_4x.jpg
imessenger_me(CUnet)(noise_scale)(Level3)(x4.000000).png
단순 확대와 waifu2를 이용한 확대(4배)


waifu2x를 사용해서 동영상을 확대하는 오픈소스도 있더라.

https://video2x.org/


이 프로젝트로 테스트를 해보려다가 이미지나 애니메이션에 최적화돼있는 건 아닌가 하는 생각이 들었다.

'벡터 위주의 2D 이미지야 쉽게 처리가 되겠다만은 픽셀단위의 영상이 과연 처리가 될까? 일반 사진이나 영상에 적용해도 그럴듯하게 나올까?!'

하던 찰나, 구글 신이 다른 방법을 툭 하고 내뱉었다.


tecoGAN(TEmporally COherent GAN<Generative Adversarial Networks>)

https://github.com/thunil/TecoGAN


waifu2x를 사용한 video2x 보다 GAN을 활용한 이 녀석이 훨씬 좋은 퀄리티를 내고 있고 이미 중꿔 AV 덕후 사이에서 모자이크 제거 기술로 활용이 될 정도로 상용화에 가깝다는 내용도 보였다.(아... 역시 영상의 기술 발전은 욕망이 많은 부분을 차지할 수밖에 없다는 말인가 -_ -;;)


무튼, 그래서 이번엔 너로 결정했다. tecoGAN. 그런데 뭐.. 머신러닝이니 딥러닝이니 이런 거 완전 무지랭이라서, 그냥 기텁에 올라온 스타트 가이드 보고 따라 해 봤다. (아무래도 실패할 가능성이 농후하다. 그냥 또 이렇게 혼잣말처럼 쓰다가 사라지는 글이 되겠지... 내 서랍에 묻혀 있는 수많은 글처럼 ㅠㅠ)

1*skk0rxPBlb8nV5gpj28BEA.png


기텁 홈페이지에 있는 가이드를 보니 NVidia GPU를 사용한단다. 설마 시작도 전에 하드웨어 스펙에서 밀리는 건가;; 하는 걱정에 나름 고사양이라고 생각하는 회사 PC와 노트북의 그래픽카드 스펙부터 찾아봤다.

1*Z6arqH1S1aqFcoHxb51P7w.png

다행히 NVIDIA 다... 휴.. 그런데 설마 OS 타는 거 아니겠지;;; 그래픽 카드 때문에 windows10에서 시작하는데;;


python이 설치 안돼 있으니, Python3 설치.

1*nnxxY4YCcw_rWf5imvrWjQ.png


가이드대로 딥러닝을 돌리기 위한 구글의 프레임워크 텐서프롤우를 깔아보자.

1*YlbuVYJOVOPK9cUmwPrymw.png


에러 난다, 젠장 - _ -.. 첫 CLI 에서 에러다...

다행히 pip 업그레이드해 보라니 해보고 다시 시도해 보자.

1*b03q8awib6e0wgxCAhCuqA.png


이런 ㅁㅇ러ㅐㅑㅏ머;ㄷ기머이라머.... 같은 에러 발생.

1*PguDXis2yZzKjFxc79H1jg.png

버전 명시해서 다운받으라는데, 이렇게 하거나 위에 가이드대로 tensorflow-gpu가 아닌 tensorflow 를 받을까 하다가 윈도우에서 성공한 사례가 있는지 검색해 봄.

1*gKUQ6eJzdQ0VV5YsOrXChg.png

그래.. 성공했다니 횽을 믿고 한번 가볼게.. 대신 아나콘다로 했다니까 그렇게 해볼게 ㅠㅠ


아나콘다 설치(아나콘다는 python + 데이터 분석 라이브러리 모음). 아... 도대체 본론은 커녕 서론에서만 뭔 짓을 하고 있는 거냐;;;

아나콘다 콘솔에서 tensorflow-gpu 설치 완료. But 프로젝트 빌드 환경 다운로드하다가 에러. ㅇ미ㅏ러미;ㅏ어리;마얼;미ㅏㅓㅇ리ㅏ;멍리ㅏㅓ

1*LOsnJj2R8sL3P5vryOhGNw.png

라이브러리 의존관계 때문에 생기는 문제 같은데, 이걸 윈도우에서 더 팔까 그냥 AWS 에 EC2 만들어서 해결할까 고민 중.


결국, EC2로 결정.

그래픽, 딥러닝에 최적화된 g4dn.4xlarge 인스턴스 생성 후, 우분투 기반으로 가이드 따라가니 그냥 휘리릭 다 설치된다;;; 아놔........ 그냥 첨부터 이렇게 할걸... 시간당 2,000원 아낀다고 개고생. ㅠㅠ

다시 처음부터, 아래의 과정대로 진행했다.


1. Tensorflow-gpu 설치

2. TecoGAN 프로젝트 클론

3. 의존 라이브러리 설치

4. 학습(트레이닝) 모델 파일 다운로드

5. 서비스 적용(인퍼런스)

6. 학습





실제 영상을 돌려보니, 엄청난 CPU와 메모리를 먹는 이유를 알겠더라. 영상을 FFmpeg을 사용해서 컷 이미지로 모두 변환한 뒤 학습 모델을 적용해서 이미지를 개선하고 이를 다시 합쳐서 영상을 만들어 주는 방식이었다.


실제 영상을 돌려보는 것 까지는 성공했는데, 기대했던 것만큼 드라마틱한 영상의 개선은 안보이더라. 아니, 오히려 변환된 결과가 화질이 더 떨어지는 느낌이 들었다. (아.. 난 누구? 여긴 어디! -0 -;;)


보다 정확하고 다양한 학습모델을 적용하면 개선이 될 듯하나, 본업이 있는 관계로 흠흠..

이 주제는 여기서 마무리하려고 한다. (그래.. 이런 게 있는 걸 알았으면 됐다.. 그런 거야.)


keyword