Waifu2x

title.png

  • Waifu2x의 공식 사이트 : [1]
  • Waifu2x의 멀티 사이트. 이미지 여러 개를 동시에 처리할 수 있으나, 그만큼 시간이 걸린다. : [2]
  • Waifu2x의 PC판. CPU 풀 로드시 엄청난 연산을 직접할 수 있다. 오프라인으로도 사용 가능하다는 것이 장점 : [3]
  • github에 공개되어 있는 소스코드 : [4]
  • Waifu2x를 Cuda(cuDNN)로 실행할 수 있는 Waifu2x-caffe : [5]
    • 64비트 윈도우 전용이다. 32비트는 실행 자체가 불가능하다.
    • cuDNN으로 변환하는 기능은 엔비디아 계열 카드 중 Compute Capability 3.0 이상 카드만 호환된다. Compute Capability 버전 확인 페이지

1 개요

Image Super-Resolution Using Deep Convolutional Networks 서비스를 응용하여 2D 그림의 해상도를 늘려주는 사이트.

알파고와 비슷한 원리로 동작하며, 당장 사용이 가능한 사이트의 서비스. 딥 러닝을 통해 배운 것을 토대로, 해상도 복원 서비스를 제공하는 사이트이다. 반복된 이미지 처리 CNN 학습을 기초로 발전된 이미지 및 동영상 알고리즘을 사용하면서, 받은 이미지를 다시 리사이징해서 그린다는 표현이 더 맞을 정도로 놀라운 복원력을 자랑한다.

2 기초 이론

[6]
Image Super-Resolution Using Deep Convolutional Networks 논문.

기존의 이미지 축소 기술은 이미 포토샵이나, 그림판의 리사이징 기능을 통해 픽셀 정보를 손상시키거나 압축시키는 경우여서 간단했지만, 이미지를 반대로 확대할 경우 상당한 문제가 있었다.

축소하는 과정에서 이미 일부 픽셀의 정보가 사라져버린 것. 이걸 어떻게 살리느냐가 이미지 업계의 최대의 변수였다.

보통 평소에 사용한 필터를 컴퓨터 수식으로 나타내면 부정방정식이 되어버리는데, 이 결과값의 변수가 너무 많아진다는 점이 최대의 난적이었다. 하지만 어떻게든 컴퓨터는 기존의 정보를 활용해 픽셀을 채워넣어야 했고, 이것이 초창기 딥 러닝 알고리즘의 기본 목적이 되었다.

결국 알파고처럼 아무것도 모르는 상태에서 시작했던 셈. 사용자들이 이미지 투입을 해줘야 점점 학습 할 수 있다.

이 기초 논문은 이 비어있는 조각을 Convolutional Neural Network(CNN)를 사용해서 픽셀 공간을 계산하겠다는 이론을 제시했고, CNN은 그림에서 점, 선, 면 등의 요소를 추출해내는 성질을 가지고 있는데, 이를 바탕으로 손실된 디테일에 원래 어떤 내용이 있어야 할지를 스스로 판단해서 복원한다는 것. 한마디로 이미지를 받았다면 확대한 만큼 딥 러닝으로 부정방정식 연산과 이미지 배치열을 통해 배운 내용으로 채워넣는 방식이다.

알파고와 달리 구조가 상당히 단순무식한 게 특징. 그냥 컨볼루션 레이어를 여러 개 겹쳐두고, 여기에다가 작은 이미지를 넣으면 그 출력이 원본 이미지와 같도록 학습하는 것이다. 정말 알기 쉽게 설명하자면 알파고가 수십 번이고 비슷한 이미지를 넣고, 그걸 확대했다는 것 정도로 보면 된다. 물론, 실제로는 이보다 더 복잡한 수식을 이용하지만. 사실 대단히 기초적인 컨볼루션 네트워크. 일종의 denoising autoencoder라고 정의할 수 있다. 신경망 쪽에서는 익히 알고 있거나 너무 기초적인 기술이라 처음 시작하는 사람들이나 배우는 것 정도로 인식하는 편이다.

참고로 Waifu2x는 이 논문에 나온 신경망보다 더 큰 신경망 을 자랑한다. 또한 만화, 애니메이션등의 2D 이미지로만 학습이 되어있다.

3 꿈과 희망의 2D 복원기술

waifu2x.jpg

CFcJgHfUIAA7O40.png

이 복원기술은 일러스트 분야에서 더 두드러지는데, 작은 이미지를 2배 확대했을 경우 Lanczos3보다 더 깨끗한 결과물이 나온다. jpg 특유의 열화, 노이즈, 픽셀깨짐 현상이 없고, 세부 디테일이 말끔하게 복원된다. 새로 그렸다고 해도 믿을 수준. 더 놀라운 점은 2번째 사진을 보면 펜선의 강약조절 또한 살아있고, 전체적인 퀄리티가 포토샵 등 프로그램보다도 우월하다는 것이다.

소스 공개로 홈페이지에서 제공하는 서버판과, 소스만 뿌린 PC판이 있는데, 복원능력은 서버판이 압도적으로 좋다. 유선 네트워크를 이용해 계속 학습 할 수 있고 지금도 어딘가에서 누군가가 이미지를 넣고 있기 때문이다. PC판은 CPU에 엄청난 하중과 함께 스로틀링이 걸리며, 개개인의 CPU 성능에 따라 속도가 달라진다. 또한 PC판은 개발자가 내놓은 날짜의 기준까지 반영되어 있다. 마지막 업데이트는 2015년 6월.

현존 2D 복원력은 98% 정도이며, 사진은 복원능력이 아직까지 미비한 상태라, 복원하면 마치 수채화로 그린 그림처럼 변해버린다.

참고할 만한 복원 사례가 있다면 추가 또는 이미지 업로드와 설명을 추가바람.

4 단점

웹 버전은 아직까지 5MB 이상 파일은 변환이 불가능하며, 단순 노이즈 제거는 3000x3000px, 업스케일링은 1500x1500px 크기까지만 가능하다. 하지만 JPG 파일이 5MB가 넘는 경우는 드물어서 큰 문제는 아니다. 또한 용량 경량화를 많이 거쳐서 노이즈가 심하다면, 복구해도 노이즈가 많이 남아 있고, 실제와도 차이가 다소 있는 편이다.

다만 크기 제한 문제점은 waifu2x-caffe를 사용하면 2배 이상 확대가 가능하며[1], PC에 탑재된 RAM이 클수록[2] 큰 이미지를 처리할 수 있다.

처리속도는 waifu2x-caffe의 readme 페이지를 참조할 것. 기본적으로 분할 사이즈가 클수록 속도가 빨라지며, cuDNN>CUDA>CPU 순으로 빠르다.

그리고 원본 자체가 너무 저해상도 이미지이면 컨버팅한 그림에서 왜곡이 일어날 가능성이 높다.

5 웹 버전 사용법

  1. Image choosing을 눌러 이미지를 선택한다.
  2. Style의 경우 그림이나 CG, 일러스트라면 Artwork, 사진이라면 Photo를 선택한다.
  3. Noise Reduction - 극상의 깔끔함을 원한다면 Super(tmp)를 선택. 다만 변환 작업이 다소 걸린다.
  4. Upscaling - 최대 2배까지 가능. 예를 들어 800x600 크기의 이미지를 넣었다면 1600x1200으로 리사이징되어 출력된다.
2016년 7월 9일에 사이트가 업그레이드되면서 제한이 완화되었다. 크기는 3MB에서 5MB로, 노이즈 감소는 2560x2560px에서 3000x3000px로, 업스케일링은 1280x1280px로 1500x1500px 제한으로 상향되었다.
  1. waifu2x-caffe github에서 설명하기로는 2배 이상 확대 시 확대를 여러 번 반복하는 식으로 작동한다고 한다. 또한 2, 4, 8배 사이로 확대 비율을 지정할 경우 큰 사이즈로 먼저 확대해서 축소하는 식으로 작동한다고 한다.
  2. GPU 사용 시에는 GPU 램 크기를 따라간다.