와이푸2x

From Hidden Wiki
Jump to navigation Jump to search

파일:external/inatsuka.com/title.png

[링크] [사이트를 겸한) 웹 버전 사이트]

[목차]

개요

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

2D 복원기술

파일:external/i1.wp.com/waifu2x.jpg 파일:external/pbs.twimg.com/CFcJgHfUIAA7O40.png

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

소스 공개로 홈페이지에서 제공하는 서버판과 소스만 뿌린 PC판이 있는데, 복원능력은 서버판에 비해 PC로 waifu2x_caffe를 이용하는 것이 더 좋다. 기본적인 설정 상태에서도 화질이 더 좋으며 TTA 모드를 이용할 경우 화질 차이가 더 심하게 난다.[* 256px 이하의 작은 이미지를 2048px급으로 확대시켜 비교해 보면 다소 차이가 있다.]

서버판의 경우 유저들이 확대시킨 이미지를 통해 waifu2x 확대 신경망을 학습시킨다는 설이 퍼져 있으나 실은 그렇지 않다. waifu2x 신경망 학습 과정에 작은 이미지와 4000px 이상의 매우 큰 원본 이미지가 필요하기 때문이다.

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

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

플랫폼

[버전 사이트]

사용법은 아래와 같다.

1. Image choosing을 눌러 이미지를 선택한다.
1. Style의 경우 그림이나 CG, 일러스트라면 Artwork, 사진이라면 Photo를 선택한다.[* Style에 Photo가 선택되어 있으면 상단의 타이틀이 wFuckyourmom (talk)/a/Fuckyourmom (talk)ifu2x로 바뀐다.]
1. Noise Reduction - 극상의 깔끔함을 원한다면 Super(tmp)를 선택. 다만 변환 작업이 다소 걸린다.
1. Upscaling - 최대 2배까지 가능. 예를 들어 800x600 크기의 이미지를 넣었다면 1600x1200으로 리사이징되어 출력된다.

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

침고로 이미지 용량과 사이즈 제한은 윈도우즈 PC판을 사용하면 해결이 가능하며 waifu2x-snowshell이나 waifu2x-caffe을 사용할 경우 여기에 더해 확대율 제한 없이 확대가 가능하다.[* waifu2x-caffe github에서 설명하기로는 2배 이상 확대 시 확대를 여러 번 반복하는 식으로 작동한다고 한다. 또한 2, 4, 8배 사이로 확대 비율을 지정할 경우 큰 사이즈로 먼저 확대해서 축소하는 식으로 작동한다고 한다.]

한편 이용자가 크게 늘어 서버가 과부하 되는 현상[* 다운로드 에러가 뜨거나 13바이트짜리 파일로 깨져서 출력되는 경우도 잦았고, 이용자가 너무 많이 몰린 바람에 사이트가 아예 다운되는 경우도 있었다.]이 늘어난 것도 있었지만, 한 중국인이 waifu2x를 이용한 어플리케이션을 만들었는데 앱에 광고를 집어넣어 영리 활동을 했을 뿐만 아니라 이게 왜 잘못이냐는 둥 적반하장격 태도를 보여([[1]]) 2017년 7월 30일에 reCAPTCHA가 도입되었다. 한 번 인증하면 되는 게 아닌 변환 시마다 일일이 인증해줘야 한다.

2018년 3월부터 8월까지 서버가 불안정해 접속이 되었다가 안 되었다 하는가 하면 10월부터 reCAPTCHA를 눌러도 계속 인증 대기 중인 상태로 돌아가는 일이 잦다. 그렇기 때문에 개인 컴퓨터 사양이 그럭저럭 괜찮다면 선술한 waifu2x-snowshell이나 wafu2x-caffe를 이용하면 빠르고 편리하게 변환 할 수 있다.

또한 서버가 불안정한 이유를 밝혔는데, 설명하자면 이렇다.

>waifu2x 사이트는 EC2 GPU 스팟 인스턴스에 의해 호스팅됩니다. 최근에 EC2는 GPU 인스턴스가 충분하지 않아 임의로 스팟 인스턴스를 중지합니다. >이 문제를 해결하는 방법은 On-Demand 인스턴스를 사용하는 것이지만 한 달에 1,600 달러가 필요합니다. > >- ["Is it down?"]에서 발췌

Windows

[및 이를 기반으로 다른 개발자들이 제작한 파생 소프트웨어 목록]

윈도우즈판은 웹 버전에서의 대량 변환시 발목을 잡던 리캡차가 없고 오프라인에서도 사용이 가능하다는 것이 장점이지만 웹 버전에서 서버가 대신 해주던 모든 연산을 사용자의 CPU와 GPU가 도맡아야 하기 때문에 컴퓨터의 사양이 좋지 않다면 주의할 필요가 있다. waifu2x_snowshell-caffe 기준으로 10000px를 넘어가는 이미지를 넣으면 램을 밑도끝도없이 8GB를 넘어 가용램 한계까지 자기 혼자서 쳐묵쳐묵한다! 당연히 CPU로만 때우면 매우 오랜 시간이 걸리기 때문에 GPGPU를 사용해야 하며, 실용량 300W 미만급 묻지마 파워 가지고 이짓 하다간 컴퓨터 박살나기 딱 좋기 때문에 주의해야 한다. 자신의 컴퓨터 사양에 맞춰서 목표 해상도를 상정하고 사용하는 것이 좋다. 램 8GB 환경 기준으로 약 5000px 정도까지면 무난하다.

* [[2]]: 그렇다할 추가 기능이 없는 일반적인 윈도우즈판 소프트웨어. 별도의 프레임워크 없이 CPU만 사용하여 변환하기 때문에 연산 속도가 매우 느리다. 일부 파생 프로그램과 연동이 가능하다. 경로상에 한글이 들어가면 변환이 안되는 오류가 있다.
* [[3]]: 상기한 koroshell의 개선판. 경로상의 한글이 들어가도 변환이 가능하며 기본적으로 OpenCL 프레임워크를 사용하기 때문에 연산 속도가 koroshell에 비해 훨씬 빠르다. 또한 한꺼번에 여러 개의 파일이나 폴더를 변환할 수 있다.[* 폴더나 이미지를 여러 개 끌어다 놓으면 순차적으로 처리된다.] 변환 도중 Snowshell 창을 선택하고 ESC키를 눌러 변환을 중단할 수 있다. 1.4버전 부터는 후술할 waifu2x-caffe를 이용한 고품질 변환을 지원한다.[* [[4]]를 다운받아 waifu2x-caffe 폴더에 넣으면 된다.][* 1.5버전 부터는 TTA 모드 On/Off가 가능하게 되었다.] 1.6 버전부터는 2.0배 이상의 고배율 변환을 지원하며[* 30배 이상도 가능한것이 확인되었다.], Option String 지원으로 각 컨버터의 고급 설정들을 함께 사용할 수 있게 되었다. 1.6.4버전 기준으로 파일 이름이나 경로가 너무 길면 업스케일링이 안 되는 버그가 있다. (파일이름이 알파벳 120글자인 파일을 업스케일링 시도했더니 실패했음) 한국어버전은 일본어가 포함된 파일은 업스케일링이 안 된다.  또한 1000개 넘는 파일을 연속으로 업스케일링 시도하면 1~2개는 빼먹고 업스케일링 하는 경우가 많다.[* 빼먹은 파일 확인하는 방법: 원본사진을 전부 복사(ctrl+C)해서 output폴더에서 붙여넣기하고, 동일이름 파일 건너뛰기를 선택하면 업스케일링이 안 된 이미지파일이 무엇인지 알 수 있다.]
* [[5]]: 2배를 초과하는 확대율을 지원하며 TTA 모드를 사용하면 연산 속도가 8배 느려지는 대신 품질이 약간 향상된 이미지를 얻을 수 있다. 또한 CUDA 가속을 지원하는 Compute Capability 2.0 이상의 NVIDIA GPU를 사용할 경우 GPU 연산을 통해 CPU 사용시보다 훨씬 더 빠르게 변환이 가능하며 여기에 더해 Compute Capability가 3.0 이상이라면 cuDNN 가속을 통해 CUDA 가속만 사용할 때보다도 훨씬 더 빠르고 가볍게 변환이 가능하다. 다만 64비트만 지원되며 32비트는 사용이 불가능하니 주의. [Capability 버전 확인 페이지]
* [[6]]: 이미지 여러 개를 동시에 처리할 수 있으나, 그만큼 시간이 걸린다. 그리고 공식 사이트 기반이 아니기 때문에[* Waifu2x 개발자가 [측과는 관계없다]고 언급하기도 했다.] 당연히 복원력은 공식 사이트가 낫다. 직접 같은 이미지를 공식 사이트와 여기에 돌려보고 비교해보자.


기초 이론

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

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

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

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

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

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

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

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

도트 게임류를 업스케일링하는 건 2Xsai 필터와 별 차이가 없다.

응용 - 동영상 고품질 확대

단순히 사진 뿐만 아니라 동영상을 확대하는 기술도 나오고 있다. 2016년에 튜토리얼까지 나온 기술이다.

실시간 재생은 불가능하다. 대략 현재 최신 최고가 그래픽 카드로도 4K까지 확대하는데 속도가 절대 30fps급이 안 나온다. 그래픽 카드와 장면에 따라 다르지만, 2~3 프레임 당 1초는 잡아야 한다. 애시당초 4K 동영상을 보는 것조차도 그래픽 카드 소모율이 좀 나오는데, 거기다가 연산량이 많은 신경망으로 실시간으로 확대는 무리다. 대신 미리 4K로 업스케일링하고 볼 수 있다. 고전 애니 같이 사람이 그린 그림의 경우에는 효과가 꽤나 탁월하다. 리마스터링 하기 힘든 마이너 작품을 더 좋은 품질로 볼 수 있다. 고전 드라마를 확대하면 고품질 수채화 느낌이 나서 호불호가 갈린다. 글자는 선명해지고, 영상은 다시 그린 듯한 느낌이 난다는 평가가 있다. 기존의 다른 영상 업스케일링 방식보다는 확실히 더 좋다는 평가가 많다.

자세한 내용은 Waifu2x video로 검색. https://github.com/K4YT3X/video2x 이미 한국인 유튜버도 업스케일링한 작품을 다수 올려놓았다. 쉽게 따라 할 수 있는 방식도 있으니 확인 바람. 4K로 업스케일하는 것뿐 아니라 예전 시대의 저화질 영상을 풀HD수준으로 만드는 경우도 있다. [애니메이션을 1080p로] [사례]

음악도 64kbps를 wav로 업스케일링해서 용량 뻥튀기하는 웹하드 업로더도 있는데 이제는 개인이 마음대로 비디오까지 업스케일링해서 용량 뻥튀기해서 재업로드 할 가능성이 생겼다기 보다도 이미 남의 콘텐츠들이 업스케일되서 재업로드되고 있다.

분류:그래픽 툴분류:인공지능