Skip to content

heeyeonkoo99/Capstone_Design1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

DNN을 이용한 디노이징과 초해상도 영상 복원기법 (Capstone design 2021-2)

팀명 : 8팀

팀구성 총인원 : 총 2명

  • Student list
구분 성명 학번 소속학과 학년 연락처 이메일
학생 오수빈 2017104004 컴퓨터공학과 4 000-0000-0000 se05168@khu.ac.kr
학생 구희연 2018102774 컴퓨터공학과 4 000-0000-0000 rndus0819@khu.ac.kr

COVID 19의 영향으로 영상 컨텐츠 소비량이 증가하면서 영상 압축과 SR(super resolution)의 필요성이 커지고 있다. 따라서 이 연구에서는 디지털 이미지 압축으로 인한 노이즈를 제거하고 SR을 실현하는 딥러닝 모델들을 만들어 성능을 평가하고 가장 성능이 좋은 모델을 선별한다.

연구배경

최근 COVID-19의 영향으로 영상 인코딩 및 디코딩 기법에 대한 중요도가 커졌다. 대부분의 활동이 비대면으로 전환되면서 화상통화의 수요가 증가했기 때문이다. 화상통화는 각각의 참여자들이 실시간으로 생성하는 영상과 음성 데이터들을 제한된 짧은 시간 안에 인코딩 및 디코딩 하는 것이 요구된다. 그 과정을 거쳐 복원된 영상에는 원본과 다른 왜곡이 포함될 수 있다. 화상통화 뿐만 아니라, 사람들이 집에 있는 시간이 늘어나면서 유튜브, 넷플릭스, 웨이브 등 동영상 스트리밍 서비스의 사용량이 증가했다. 동영상 스트리밍 서비스 또한 인코딩 및 디코딩을 거친 결과물을 사용자들이 보게 된다. 마찬가지로 왜곡이 포함될 수 있다. 이것을 압축 왜곡이라고 한다. 또 다른 문제점은 전송된 영상의 크기와 사용자가 사용하는 디스플레이의 크기의 간극에 있다. 일례로, 넷플릭스는 크롬 브라우저에서 최대 화질 720p를 지원한다. 영상에 따라 최대 화질이 다르기도 하다. 사용자가 비교적 낮은 해상도의 영상을 4k 모니터에 연결하여 보기를 원한다면 화질 저하가 발생한다. 그렇다면 저해상도 영상을 고해상도로 바꾸는 과정이 필요하다. 이것을 초해상도(super resolution)라고 한다. 압축 왜곡을 해소하고 초해상도를 실현하면 생산자와 소비자들은 더 쾌적한 환경에서 영상 콘텐츠를 주고받을 수 있다. 이 연구에서는 딥러닝을 이용하여 압축 왜곡을 해소하는 방법, 딥러닝을 이용하여 초해상도를 실현하는 방법을 연구하고, 두 과제를 동시에 해결하는 모델을 연구한다.

관련 연구

HEVC및 VVC

VCEG와 MPEG의 협력팀인 JVET(Joint Video Exports Team)에서는 2013년도에 비디오 압축 표준기술인 HEVC(High Efficiency Video Coding)/H.265를 차세대 최종 표준안으로 승인시켰다. 이후 2020년에는 HEVC의 2배 이상의 부호화 성능을 목표로 한 VVC표준화를 시작하였으며 구성된 인코딩 알고리즘의 품질(표준 범위에 속하지 않음)에 따라 HEVC보다 최대 10배의 인코딩 복잡도가 예측되며, 디코딩 복잡도는 HEVC보다 약 두 배는 될 것으로 예측된다.

DNN기반 압축 왜곡 제거

노이즈(Noise)란 잡음을 뜻하며, 원하지 않는 데이터를 의미한다. 즉, 다른 데이터를 간섭하거나 의도하지 않은 왜곡을 의미한다고 볼 수 있다. 노이즈는 알고리즘을 방해하는 주된 원인이 되며 빛의 세기, 장면 전환, 피사체의 움직임, 카메라의 성능, 디지털 이미지 정보 압축 등 다양한 이유로 인하여 발생한다. 또한 데이터의 품질을 저하시킬뿐만 아니라 알고리즘의 성능과 정확도 등에도 영향을 미친다. 결국, 알고리즘의 연산량을 줄이고 성능과 정확도를 높이기 위해 노이즈를 제거하는 과정을 진행해야 한다. 이러한 과정이나 작업을 디노이즈(Denoise)라 한다. 디노이즈는 주로, 입력 데이터나 출력 데이터의 불필요한 데이터를 제거하거나 값을 변경하여 데이터를 선명하게 만드는 역할을 한다. 이와 관련하여 입력영상을 의도적으로 압축왜곡과정을 거치게 한다음, 딥러닝 기반의 디노이징기법을 적용하고자 한다.

Down sampling

down sampling은 말그대로 sampling rate를 낮추는 것을 말하고, 영상에서 이 용어가 쓰일 때는 영상의 해상도를 낮추는 것을 뜻한다. 영상을 가로세로 절반의 크기로 축소할 때는 홀수 혹은 짝수 번째의 픽셀을 제거하면 된다. 이 경우 high frequency이던 영역에서 축소 후 영상이 왜곡되는 현상이 일어나는데, 이를 aliasing이라고 한다. downsampling은 아날로그 신호를 sampling하는 것과 다르므로, sampling rate를 조정하여 Nyquist Theorem을 따르기 쉽지 않다. 따라서 downsampling 전에 미리 lowpass filtering을 적용시켜 high frequency 부분을 제거하면 aliasing이 일어나지 않는다. 가로세로 절반씩 축소하는 것이 아닌 경우, 가령 5x5 크기의 영상을 4x4 크기의 영상으로 축소시킬 때는 단순히 픽셀을 삭제하여 영상을 축소시킬 수 없다. 이때는 원래의 5x5 그리드에 4x4 그리드를 정중앙을 일치시켜 위치시키고, 4x4 그리드의 점들의 intensity 값을 해당 점 주변에 있는 5x5 그리드 점들의 intensity 값들을 통해 계산해야 한다. 이것을 interpolation이라고 한다. 이때 사용되는 방법은 여러가지가 있는데, bilinear 방식은 인접한 4개의 점들의 intensity 값들과 그 점들과 계산하고자 하는 점의 상대적 위치를 고려하여 계산하는 방식이다. bicubic 방식은 인접한 16개의 점들을 사용하는데, 점들의 intensity 값들을 이용하여 4차식을 만들고 그것에 계산하고자 하는 점의 위치를 대입하여 계산한다. 이 외에도 nearest(가장 가까운 점의 intensity 사용), lanczos 알고리즘(sinc 함수 사용) 등이 있다.

모델 선택

Image Denoising: MPRNet
Super Resolution: EDSR

프로젝트 결과

데이터 생성

COCO DATASET을 기반으로 640X480 사이즈의 데이터를 기반으로 했다. 이때 VVC의 reference software인 VTM을 사용하여 QP 22, 27, 32, 37, 42 총 5번의 압축을 진행하여 각각의 QP별 압축왜곡이 들어간 데이터를 생성했다. 이후 압축 왜곡이 발생한 이미지에 다운샘플링을 적용한다. python의 pillow 모듈을 사용했다. bicubic downsampling을 사용했고, 가로세로 1/2 비율로 줄였다. image

Image Denoising 앵커실험

본격적으로 디노이징 앵커실험을 진행하기전 MPRNet이 실제로 논문에서 쓰인것처럼 PSNR 39.71이 나오는지 확인하기 위해 기존 코드를 변경하지 않고 똑같이 사용된 데이터, 80 epoch, patch의 개수등의 조건을 맞춰서 돌려본 결과 논문과 성능이 거의 같게 나온 것을 확인할 수 있었다. 그 후 앵커 실험을 진행하게 되었는데 우선 QP 42로 압축 왜곡이 들어간 데이터부터 진행을 하였다. 이전에 데이터를 5개의 폴더로 정리해서 만들었지만 시간관계상 22,32,42 이렇게 3개의 데이터로 실험을 진행하도록 했다. 실험조건은 1000장의 train data, 250장의 validation data, 250장의 test data의 개수를 일반적인 training / validation data의 비율을 맞춰서 각각 20 epoch, 8 batch size의 조건을 맞춰서 진행했다. QP가 높을수록 양자화 계수가 높아지는 것이기 때문에 더 많이 노이즈가 낄수밖에 없고, 반대로 QP가 낮을수록 원본의 이미지와 가까워지게 된다. 그래서 앵커실험을 진행한 결과 QP에 따라 PSNR결과를 시각화한후 아래와 같이 QP가 높을수록 PSNR이 자연스레 낮게 나오는 결과를 확인하게 되었다.
image

Super Resolution 앵커실험

먼저 EDSR을 어떻게 실행하는지 알아보기 위해 EDSR 논문과 같은 조건에서 training을 시켰다. data set, epoch 수, patch size 등 모든 option을 같게 하고 논문에 기재된 성능과 같은 성능이 나오는지 실험했다. data set은 논문과 같이 DIV2K, Set5, Set14, B100, Urban100을 사용했다. residual blocks 수는 16, feature map 수는 64, batch size는 16이었다. learning rate의 초기값은 10^(-4)이며, 2×10^5minibatch마다 반으로 줄어든다. 논문에 기재된 성능(psnr)은 baseline만 학습시켰을 때 div2k에서 35.03이었고, test set에서는 Set5, Set14, B100, Urban100에서 각각 38.11, 32.92, 32.32, 32.93이었다. baseline만 학습시켜 본 결과, 성능이 논문에 기재된 baseline만 학습시켰을 때의 성능과 유사하게 나오는 것을 확인할 수 있었다.

imageimage
이후 연구에서 확보한 data set을 이용하여 앵커 실험을 실시하였다. 입력으로 각각 QP 22, 32, 42로 압축 왜곡이 일어난 이미지에 downsampling을 한 data set을 사용했으며, target은 각 이미지의 원본이었다. training하는 동안 training set과 validation set에 대한 loss를 그래프로 나타냈으며, validation set이 증가하기 시작하는 시점의 epoch 수를 최종 epoch 수로 설정했다.
image

결론

모델을 선정하고 해당 모델을 training 및 test 하는 것까지 성공했으므로, 앞서 3.1에서 제시한 두 구조를 실행하여 성능을 비교한다. 그러려면 각 구조의 모델들을 어떤 data set으로 training할 것인지에 대한 명세서가 필요하다. 다음처럼 용어를 정의한다.
원본 이미지 : I
I에 압축 왜곡과 다운샘플링이 적용된 이미지 : I ̂_LR
I에 압축 왜곡을 적용한 이미지 : I ̂
I에 다운샘플링을 적용한 이미지 : I_LR
구조1에서 I ̂_LR 가 MPRNet을 통과하여 denoising 된 이미지 : I_LR^'
구조2에서 I ̂_LR 가 EDSR을 통과하여 super resolution 된 이미지 : I ̂_SR
최종 결과 : I_SR^'
다음은 구조1에 대한 training 및 test 명세서이다.
MPRNet을 training할 때는 입력은 I ̂_LR, target은 I로 한다.
EDSR을 training할 때는 입력은 I_LR, target은 I로 한다.
트레이닝 된 MPRNet과 EDSR을 이용하여 최종결과를 만든다.
이때는 MPRNet에 I ̂_LR를 입력하여 I_LR^'를 만들고, EDSR에 I_LR^'를 입력하여 I_SR^'를 만든다.
다음은 구조 2에 대한 training 및 test 명세서이다.
EDSR을 training 할 때는 입력은 I ̂_LR, target은 I로 한다.
MPRNet을 training 할 때는 입력은 I ̂, target은 I로 한다.
트레이닝 된 EDSR과 MPRNet을 이용하여 최종결과를 만든다.
이때는 EDSR에 I ̂_LR를 입력하여 I ̂_SR를 만들고, MPRNet에 I ̂_SR를 입력하여 I_SR^'를 만든다.
각 구조에 대한 결과물이 나오면, 원본과 각 결과물을 비교한다. 이때 비교 기준은 PSNR과 subjective comparison이다. 평가가 끝나면 두 모델 중 어느 것이 더 좋은 성능을 보이는지 결정할 수 있을 것이다.

기대 효과

이 연구를 기반으로 얻는 것이 많을 것이라 느끼는데 크게 2가지 점을 예상한다. 우선 일차적으로 두 가지 방법에 대한 연구를 직접적으로 진행하면서 이전보다 딥러닝을 이용한 영상 노이즈처리에 대한 이해를 깊이 할 수 있을것이다. 앞서 언급되었다시피 영상 컨텐츠에 대한 이용량은 매해가 갈수록 증가하고 있다. 이 시점에서 영상처리에 대한 이해도를 높일수 있다는 것은 중요한 포인트일 것이다. 이차적으로 이 연구에서 더 나아가 객체인식의 기술을 사용하여 응용하는 부분까지 나아갈 수 있다는 점이다. 어떤 영상을 입력으로 받고나서 압축 등의 요인으로 발생한 노이즈, 저해상도의 문제를 해결한 후에 복원된 영상으로 yolo와 같은 object detector를 사용하여 원본에서의 객체인식과 큰 차이 없도록 객체인식을 하는 연구까지 나아갈 수 있다.

About

deep learning model

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published