waifu2x

 

[image]
github 링크
(공식 사이트를 겸한) 웹 버전 사이트
1. 개요
2. 2D 복원기술
3. 공식 웹
4. 파생 소프트웨어
5. 기초 이론
6. 응용 - 동영상 고품질 확대


1. 개요


이름의 뜻은 와이프를 2배로(...). Super-Resolution Convolutional Neural Network (SRCNN)를 응용하여 2D 그림을 업스케일링해 주는 사이트이다. 컴퓨팅에는 NVIDIACUDA을 사용. 사이트에서의 서비스도 지원한다. 애니메이션, 일러스트 등 2D 기반 매체에 대해서 딥 러닝된 인공지능을 토대로, 해상도 복원 서비스를 제공하는 사이트이다. 반복된 이미지 처리 CNN 학습을 기초로 발전된 이미지 및 동영상 알고리즘을 사용하면서, 받은 이미지를 다시 리사이징해서 그린다는 표현이 더 맞을 정도로 놀라운 복원력을 자랑한다.

2. 2D 복원기술


[image]
[image]
이 복원기술은 '''일러스트 분야'''에서 더 두드러지는데, 작은 이미지를 2배 확대했을 경우 Lanczos3보다 더 깨끗한 결과물이 나온다. jpg 특유의 열화, 노이즈, 픽셀깨짐 현상이 없고, 세부 디테일이 말끔하게 복원된다. 새로 그렸다고 해도 믿을 수준이다. 더 놀라운 점은 2번째 사진[1]을 보면 펜선의 강약 조절 또한 살아있고, 전체적인 퀄리티가 포토샵 등 프로그램보다도 우월하다는 것이다.
소스 공개로 홈페이지에서 제공하는 서버판과 소스만 뿌린 PC판이 있는데, 복원능력은 서버판 보다는 PC에서 waifu2x-snowshell이나 waifu2x_caffe를 이용하는 것이 더 좋다. 기본적인 설정 상태에서도 화질이 더 좋으며 TTA 모드를 이용할 경우 화질 차이가 더 심하게 난다.[2]
서버판의 경우 유저들이 확대시킨 이미지를 통해 waifu2x 확대 신경망을 학습시킨다는 설이 퍼져 있으나 실은 그렇지 않다. 신경망 학습을 위해서는 처리한 결과물과 비교할 정답이 있어야 한다.따라서 waifu2x 신경망 학습 과정에는 작은 이미지와 4000px 이상의 매우 큰 원본 이미지가 필요하기 때문에 유저가 넣은 이미지와 Ai가 만들어낸 결과물으로는 신경망을 학습시킬 수 없다.
현존 2D 복원력은 98% 정도며 사진은 복원능력이 아직까지 미비한 상태라 복원하면 마치 수채화처럼 변해버린다.
색 공간을 맞춰놓더라도 icc profile같은 일부 메타데이터는 지원되지 않으므로 색상이 변할 수 있다.

3. 공식 웹


웹 버전 사이트
사용법은 아래와 같다.
  1. Image choosing을 눌러 이미지를 선택한다.
  2. Style의 경우 그림이나 CG, 일러스트라면 Artwork, 사진이라면 Photo를 선택한다.[3]
  3. Noise Reduction - 극상의 깔끔함을 원한다면 Super(tmp)를 선택. 다만 변환 작업이 다소 걸린다.
  4. Upscaling - 최대 2배까지 가능. 예를 들어 800x600 크기의 이미지를 넣었다면 1600x1200으로 리사이징되어 출력된다.
웹 버전은 아직까지 5MB 이상 파일은 변환이 불가능하며, 단순 노이즈 제거는 3000x3000px, 업스케일링은 1500x1500px 크기까지만 가능하다. 하지만 JPG 파일이 5MB가 넘는 경우는 드물어서 큰 문제는 아니다. 또한 용량 경량화를 많이 거쳐서 노이즈가 심하다면, 복구해도 노이즈가 많이 남아 있고, 실제와도 차이가 다소 있는 편이다.
침고로 이미지 용량과 사이즈 제한은 윈도우즈 PC판을 사용하면 해결이 가능하며 waifu2x-snowshell이나 waifu2x-caffe을 사용할 경우 여기에 더해 확대율 제한 없이 확대가 가능하다.[4]
한편 이용자가 크게 늘어 서버가 과부하 되는 현상[5]이 늘어난 것도 있었지만, 한 중국인이 waifu2x를 이용한 어플리케이션을 만들었는데 앱에 광고를 집어넣어 영리 활동을 했을 뿐만 아니라 이게 왜 잘못이냐는 둥 적반하장격 태도를 보여(#) 2017년 7월 30일에 reCAPTCHA가 도입되었다. 한 번 인증하면 되는 게 아닌 변환 시마다 일일이 인증해줘야 한다.
2018년 3월부터 8월까지 서버가 불안정해 접속이 되었다가 안 되었다 하는가 하면 10월부터 reCAPTCHA를 눌러도 계속 인증 대기 중인 상태로 돌아가는 일이 잦다. 그렇기 때문에 개인 컴퓨터 사양이 그럭저럭 괜찮다면 waifu2x-snowshell이나 wafu2x-caffe를 이용하면 빠르고 편리하게 변환 할 수 있다.
또한 서버가 불안정한 이유를 밝혔는데, 설명하자면 이렇다.

waifu2x 사이트는 EC2 GPU 스팟 인스턴스에 의해 호스팅됩니다. 최근에 EC2는 GPU 인스턴스가 충분하지 않아 임의로 스팟 인스턴스를 중지합니다.

이 문제를 해결하는 방법은 On-Demand 인스턴스를 사용하는 것이지만 한 달에 1,600 달러가 필요합니다.

- #197 "Is it down?"에서 발췌


4. 파생 소프트웨어


Waifu2x 및 이를 기반으로 다른 개발자들이 제작한 파생 소프트웨어 목록
윈도우즈판은 웹 버전에서의 대량 변환시 발목을 잡던 리캡차가 없고 오프라인에서도 사용이 가능하다는 것이 장점이지만 웹 버전에서 서버가 대신 해주던 모든 연산을 사용자의 CPU와 GPU가 도맡아야 하기 때문에 컴퓨터의 사양이 좋지 않다면 주의할 필요가 있다. waifu2x_snowshell의 caffe모드 기준으로 10000px를 넘어가는 이미지를 넣으면 램을 밑도끝도없이 8GB를 넘어 가용램 한계까지 자기 혼자서 쳐묵쳐묵한다! 당연히 CPU로만 때우면 매우 오랜 시간이 걸리기 때문에 GPGPU를 사용해야 하며, 실용량 300W 미만급 묻지마 파워 가지고 이짓 하다간 컴퓨터 박살나기 딱 좋기 때문에 주의해야 한다. 자신의 컴퓨터 사양에 맞춰서 목표 해상도를 상정하고 사용하는 것이 좋다. 램 8GB 환경 기준으로 약 5000px 정도까지면 무난하다.
기본적으로 waifu2x와 파생 소프트웨어들은 CLI 환경에서 명령어로 제공되는데, 아래의 소프트웨어는 GUI(프론트엔드)로 이를 일반 사용자의 입장에서 손쉽게 다룰 수 있도록 도와준다.
이름
GPU 가속 지원
속도
특징
waifu2x_Snowshell
OpenCL, CUDA, cuDNN,
Vulkan[6]
매우 빠름
한국어 지원
드래그 앤 드롭으로 변환
폴더 변환 지원
대기열 변환 지원
2.0배 이상의 고배율 변환 지원
TTA 모드 지원[7]
GPU가 없어도 변환 가능
NVIDIA/AMD/Intel GPU 모두 지원
32/64비트 모두 지원[8]
waifu2x-caffe
CUDA[9], cuDNN[10] [11] [12]
빠름
한국어 지원
폴더 변환 지원
2.0배 이상의 고배율 변환 지원
TTA 모드 지원
하드웨어 가속에 NVIDIA GPU가 요구됨
64비트만 지원
waifu2x-ios
CoreML, Metal
빠름 - 매우 빠름[13]
iOS, iPadOS, macOS 지원
iPhone, iPad의 Neural Engine 지원으로 매우 빠른 속도[14]
Intel, AMD 그래픽카드 모두 지원 (NVIDIA GPU는 macOS에서 미지원으로 논외)
네이티브로 동영상 업스케일링 지원
waifu2x-multi
X (Web)
느림
대기열 변환 지원
공식 웹 기반이 아니므로 최신 학습모델이 적용되지 않을 수 있음[15]
유료로 인스턴스를 대여하여 작업할 수 있음[16]
waifu2x_win_koroshell
X
매우 느림
드래그 앤 드롭으로 변환
일부 파생 프로그램과 연동이 가능
경로상에 한글이 들어가면 변환이 안되는 오류가 있음

5. 기초 이론


Image Super-Resolution Using Deep Convolutional Networks 논문
기존의 이미지 축소 기술은 이미 포토샵이나, 그림판의 리사이징 기능을 통해 픽셀 정보를 손상시키거나 압축시키는 경우여서 간단했지만, 이미지를 반대로 확대할 경우 상당한 문제가 있었다.
축소하는 과정에서 이미 일부 픽셀의 정보가 사라져버린 것. 이걸 어떻게 살리느냐가 이미지 업계의 최대의 변수였다
보통 평소에 사용한 필터를 컴퓨터 수식으로 나타내면 부정방정식이 되어버리는데, 이 결과값의 변수가 너무 많아진다는 점이 최대의 난적이었다. 하지만 어떻게든 컴퓨터는 기존의 정보를 활용해 픽셀을 채워넣어야 했고, 이것이 초창기 딥 러닝 알고리즘의 기본 목적이 되었다.
이 기초 논문은 이 비어있는 조각을 Convolutional Neural Network(CNN)를 사용해서 픽셀 공간을 계산하겠다는 이론을 제시했고, CNN은 그림에서 점, 선, 면 등의 요소를 추출해내는 성질을 가지고 있는데, 이를 바탕으로 손실된 디테일에 원래 어떤 내용이 있어야 할지를 스스로 판단해서 복원한다는 것. 한마디로 이미지를 받았다면 확대한 만큼 딥 러닝으로 부정방정식 연산과 이미지 배치열을 통해 배운 내용으로 채워넣는 방식이다.
사실 대단히 기초적인 컨볼루션 네트워크. 일종의 denoising autoencoder라고 정의할 수 있다.
참고로 Waifu2x는 이 논문에 나온 신경망보다 '''더 큰 신경망'''을 자랑한다. 또한 만화, 애니메이션 등 2D 이미지로만 학습이 되어있다.
도트 게임류를 업스케일링하는 건 2Xsai 필터와 별 차이가 없다.

6. 응용 - 동영상 고품질 확대


단순히 사진 뿐만 아니라 동영상을 확대하는 기술도 나오고 있다. 2016년에 튜토리얼까지 나온 기술이다.
기본적으로 waifu2x 기반으로 진행되는 프로그램이라 CPU 혹은 NVIDIA 그래픽 카드가 필요하고, CPU를 사용하는 경우는 3분 짜리 720x480 해상도 영상도 거의 반나절을 넘게 작업해야하니 수초 짜리 GIF 수준의 작업이 아닌 이상 메인스트림급 NVIDIA그래픽카드가 필수적이다.
실시간 재생은 불가능하다. 그래픽 카드와 장면에 따라 다르지만, 2~3 프레임 당 1초는 잡아야 한다. 대신 미리 4K로 업스케일링하고 볼 수 있다. 고전 애니 같이 사람이 그린 그림의 경우에는 효과가 꽤나 탁월하다. 리마스터링 하기 힘든 마이너 작품을 더 좋은 품질로 볼 수 있다. 고전 드라마를 확대하면 고품질 수채화 느낌이 나서 호불호가 갈린다. 글자는 선명해지고, 영상은 다시 그린 듯한 느낌이 난다는 평가가 있다. 애니메이션에 한정하면 기존의 다른 영상 업스케일링 방식과 비교했을 때 압도적[17]으로 뛰어나다. 특히 원본의 디테일이 이미 충분히 좋을 경우 거의 마법에 가까울 정도의 결과물이 나온다.
자세한 내용은 Waifu2x video로 검색. video2x 이미 한국인 유튜버도 업스케일링한 작품을 다수 올려놓았다. dandere2x도 있다. dandere2x는 video2x보다 쉽게 설치, 변환할 수 있지만 대신 품질은 video2x보다 낮다. 4K로 업스케일하는 것뿐 아니라 예전 시대의 저화질 영상을 풀HD수준으로 만드는 경우도 있다. 144p 애니메이션을 1080p로 업스케일한 사례
한편으로, 동영상의 모든 프레임을 PNG나 BMP, WebP등의 무손실 포맷으로 추출하고 업스케일하여 동영상으로 재전환하는 방법도 있다. 동영상을 직접 전환하는 방법이 나오기 이전부터 알음알음 전파되던 방법인데, 인코딩 툴을 크게 가리지 않고 상기한 파생 소프트웨어 중 마음에 드는 것을 골라 쓸 수도 있는 호환성 좋은 방법이라 여전히 사용하는 사람들이 있다. 단, 전환 과정에서 색공간을 정확하게[18][19] 바꾸지 않으면 컬러 쉬프트가 일어난다는 점, 하드디스크 용량이 많이 필요하다는 점[20], 아무래도 시간이 더 오래 걸린다는 점[21]이 단점이다.
구작 DVD를 업스케일하면 경우에 따라서는 같은 작품의 블루레이에 준하거나 오히려 뛰어넘는 화질[22]이 나오기도 한다. 소장한 고전 DVD들을 업스케일하고 싶은 사람은 꼭 한번 시도해보자. 단, 영상에 아티팩트가 있을 경우 해당 아티팩트까지[23] 같이 업스케일되므로 업스케일 전 보정은 하는 것이 좋다.
간단한 튜토리얼

[1] 원본은 이 그림이다.[2] 256px 이하의 작은 이미지를 2048px급으로 확대시켜 비교해 보면 다소 차이가 있다.[3] Style에 Photo가 선택되어 있으면 상단의 타이틀이 w ~ifu2x로 바뀐다.[4] waifu2x-caffe github에서 설명하기로는 2배 이상 확대 시 확대를 여러 번 반복하는 식으로 작동한다고 한다. 또한 2, 4, 8배 사이로 확대 비율을 지정할 경우 큰 사이즈로 먼저 확대해서 축소하는 식으로 작동한다고 한다.[5] 다운로드 에러가 뜨거나 13바이트짜리 파일로 깨져서 출력되는 경우도 잦았고, 이용자가 너무 많이 몰린 바람에 사이트가 아예 다운되는 경우도 있었다.[6] 백엔드인 waifu2x-ncnn-vulkan이 1/2 배율만 지원하기 때문에, Vulkan 가속을 사용할 경우 두 가지 배율만 선택할 수 있다. 속도는 제일 빠르다. 버전 v2.2에 추가되었다.[7] Test-Time Augmentation, 8배 오래걸리지만 0.18 PSNR 정도의 품질 향상[8] 32비트에선 기능이 제한되지만 주요 기능은 사용이 가능하다[9] Compute Capability 2.0 이상의 NVIDIA GPU[10] Compute Capability 3.0 이상의 NVIDIA GPU, CUDA 드라이버 설치 및 cudnn64_7.dll 파일을 waifu2x-caffe 폴더에 복사하는 작업이 필요하다. cuDNN 환경변수 설정을 마쳤다면 굳이 복사할 필요는 없다. NVIDIA 개발자 홈페이지에서 받을 수 있으나 회원가입을 해야 한다.[11] Compute Capability 버전 확인 페이지[12] cuDNN 재배포가 가능하게 되어 waifu2x-caffe 1.2.0.3 버전부터 cuDNN 파일이 포함되어 있으므로 더이상 따로 다운로드 받지 않아도 된다.[13] iPhone, iPad의 Neural Engine 사용시[14] iPhone 11 Pro 기준 웬만한 그래픽카드를 따라잡거나 능가하는 퍼포먼스[15] Waifu2x 개발자가 개발 측과는 관계없다고 언급하기도 했다.[16] 작업량이 너무 많거나 PC 성능 문제로 이미지/비디오 처리가 부담스럽다면 적절한 대안이 될 수 있다. 최소 비용은 분당 $0.05이지만, 고가 인스턴스로 갈수록 가격 대비 성능이 좋게 책정되어있며 최소 10분 이상 대여할 분량의 크레딧이 있어야 인스턴스를 시작할 수 있으므로 주의.[17] 인공신경망 자체는 이미 nnedi라는 디인터레이서 겸 업스케일러에서 사용되고 있었고, 업스케일러 중에 가장 좋은 평가를 받고 있었다. 하지만 그조차도 Waifu2X와 비교하면 한참 뒤떨어진다.[18] DVD의 SD 영상을 HD/FHD로 업스케일하는 예를 들면, TV Range의 YUV420 Rec.601에서 Full Range RGB24로 전환하면서 이미지를 추출한 후 이것을 업스케일한 뒤 재조립해 동영상을 만들면서 TV Range의 YUV420 Rec.709로 변환하면 된다. 소스의 색 저장 방식이 무엇이었는지, SD(Rec.601), HD/FHD(Rec.709), UHD(Rec.2020) 중 어디에서 어디로 변환하는 것인지 등에 따라서 설정값이 조금 달라지기 때문에 최소한의 기반 지식이 필요하다. WebP의 경우 YUV420 포맷을 유지하면서 이미지 추출이 가능하니 참고할 것. JPG 또한 같은 장점이 있지만 손실 압축인데다 인코더에 따라 손실 정도가 제각각이라 잘 쓰이지 않는다.[19] 제아무리 정확하게 변환한다 하더라도 동영상과 이미지의 색 저장 방식이 다르기 때문에 분명 차이가 생기기는 한다. 하지만 프레임 단위로 비교하더라도 인간이 감지할만큼 큰 변화는 일어나지 않는 모양이다. 정 불안하면 업스케일된 이미지에서는 명도값만 뽑아오고 색상값은 리사이즈한 영상에서 뽑아 합치는 방법도 있다.[20] 영상마다 조금씩 다르지만, PNG 포맷을 기준으로 24분짜리 480p 23.976fps 영상의 용량이 대략 10에서 20기가, 이것을 720p로 업스케일하면 25에서 30기가가 된다. 따라서 480p를 720p로 업스케일하려면 50기가 정도는 있어야 안전하다.[21] 프레임이 담긴 폴더를 분할한 후 동시에 업스케일을 진행하는 방법으로 속도를 조금 올릴 수는 있다.[22] 어디까지나 DVD가 주류였거나 블루레이로 넘어가는 과도기 시절 영상에 한정한 이야기이다. 결국 그 영상들도 SD나 HD 소스를 FHD로 업스케일해서 만들어진 것이기 때문이다.[23] 자잘한 노이즈는 나중에 잡을 수도 있겠지만, 계단 현상, 고스팅, 닷크로울링, 레인보우, 크로마 블리딩 등 따로 이름이 있고 고유의 보정 방법이 있는 아티팩트들은 대부분 업스케일되면 보정 난이도가 크게 오르거나 아예 불가능한 사태가 벌어진다. 첨언하자면, Waifu2X 자체의 노이즈 제거 기능은 가능한 안 쓰는 것이 좋다. 노이즈는 영상의 연속된 프레임에서 쉬지 않고 움직이는 것이 보통이기 때문에 이미지를 오로지 한 장씩만 들여다보며 처리하는 Waifu2X의 디노이즈는 이상하게 일렁이는 무늬를 만들거나 프레임 간 격차를 발생시킬 수 있다.