2018-11-09 18:38:49

내가 석사 기간동안 주요 연구했던 분야는 이미지 품질 평가(image quality assessment, IQA)이다. 막 시작한 박사 과정 중에도 이 분야에 대해서 중점적으로 연구할 것 같다. 이미지 품질 평가는 말 그대로 이미지의 품질을 평가하는 것이다. 디지털 이미지의 경우 전송하고, 압축하고, 처리하는 과정 속에 이미지가 훼손되곤 한다. 왜곡 현상이 심하면 이미지를 이용하는 사람들의 만족도는 그만큼 떨어질 수 밖에 없다. IQA는 이미지가 눈으로 보기에 얼마나 훼손되었는가를 평가하는 연구분야이다. 실제로 왜곡되었지만 눈으로 잘 감지되지 않은 경우도 있다. 우리가 평가하는 것은 단순히 숫자적으로 얼마나 왜곡되었는가가 아니라, 지각적으로 즉 감지하기에 얼마나 왜곡되었는가이다. 


IQA는 이미지 및 비디오 품질 모니터링, 이미지 노이즈 제거와 이미지 복구 등 여러 분야에서 적용되고 있다[4]. 구체적인 예를 들면, 2D IQA 알고리즘 중 하나인 VIF의 경우 넷플릭스 VMAF 비디오 품질 모니터링 시스템에 활용되고 있다[2]. 또 다른 2D IQA 알고리즘 SSIM 역시 비디오 품질 평가 시스템에 널리 활용되고 있다[3].  


IQA에 관해 좀 더 자세한 설명을 원한다면, 이전 포스팅의 초반부를 참고하세요. =>

http://bskyvision.com/177


다른 영상 처리 분야들과 마찬가지로, IQA에서도 머신러닝과 딥러닝이 차지하고 있는 위치는 상당하다. 대부분의 영상 처리 분야들은 다음과 같은 방식의 알고리즘들을 갖고 있다. 이미지를 주파수 영역으로 변환하거나 엣지 정보만을 도출하는 등 나름의 전략으로 우선 전처리(preprocessing)한 후에 전처리된 이미지로부터 일련의 특성을 도출하고, 그 특성과 라벨을 이용해서 머신러닝 또는 딥러닝을 훈련시켜 회귀(regression) 문제 또는 분류(classification) 문제를 다룬다. 라벨이 없는 경우에는 데이터 내의 특성만을 가지고 군집(clustering) 문제를 다루기도 한다. 참고로 라벨값의 유무에 따라 회귀 문제와 분류 문제는 지도학습에 속하고, 군집 문제는 비지도학습에 속한다. 


오늘 이 포스팅에서는 특별히 3D IQA 분야에서 머신러닝 및 딥러닝이 어떻게 활용되어 왔는가를 정리하려고 한다. 



▶ Support vector machine (SVM) 


SVM은 데이터를 선형으로 분리하는 최적의 선형 결정 경계를 찾는 지도학습 알고리즘이다. 클래스가 다른 데이터들을 가장 큰 마진으로 분리해내도록 정중간에 있는 선 또는 면을 찾아내는 것이다. 그 선 또는 면을 결정 경계라고 부른다. SVM이 회귀 분석에 사용될 때는 support vector regressor (SVR)로 불리곤 한다. 


SVM에 대한 자세한 설명은 링크된 포스팅을 참고하자.

=> http://bskyvision.com/163 



1) Chen M J, Cormack L K, Bovik A C. No-Reference Quality Assessment of Natural Stereopairs[J]. IEEE Transactions on Image Processing, 2013, 22(9):3379-3391.


Chen 등은 먼저 3D 지각을 고려하기 위해 Disparity 맵과 Uncertainty 맵을 산출했고, 2D 지각을 고려하기 위해 Cyclopean 맵을 산출했다. Disparity 맵은 시차를 나타내는 맵이고, Uncertainty 맵은 좌우 두 눈으로 얻은 이미지들의 유사하지 않은 정도를 나타내는 맵이다. Cyclopean 맵은 사람의 좌, 우 두 눈으로 각각 얻은 두 개의 이미지를 뇌에서 하나로 융합해낸 것을 모델링한 이미지이다. 


저자들은 이 세 개의 맵에서 지각품질과 관련된 특성을 도출한 다음, 이 특성들을 SVM에 넣어주어 스테레오 이미지가 대칭적으로 왜곡되었는지 비대칭적으로 왜곡되었는지를 먼저 확률적으로 판단했다. 좀 더 정확히 말하면, 스테레오쌍이 대칭적으로 왜곡되었을 확률과 비대칭적으로 왜곡되었을 확률을 각각 구한 것이다. 


그 다음에 대칭적으로 왜곡된 스테레오쌍에서 도출된 특성으로 훈련된 SVR과 비대칭적으로 왜곡된 스테레오쌍에서 도출된 특성으로 훈련된 SVR을 이용해서 각각의 품질 점수를 회귀분석을 통해 얻었다. 그들은 스테레오쌍의 대칭 왜곡과 비대칭 왜곡 확률을 가중치로 삼아 두 개의 품질 점수를 가중합해서 최종 품질 점수를 계산했다.


정리하자면, 그들은 스테레오쌍이 대칭적으로 왜곡되었는지, 비대칭적으로 왜곡되었는지를 확률적으로 판단하기 위해 SVM을 사용했고, 품질 스코어를 구하기 위해 회귀분석을 시행하는 SVR을 사용했다. 



2)  Su C C, Cormack L K, Bovik A C. Oriented correlation models of distorted natural images with application to natural stereopair quality evaluation.[J]. IEEE Transactions on Image Processing, 2015, 24(5):1685-1699.


Su 등은 먼저 스테레오 쌍을 이용해서 convergent cyclopean 이미지를 산출한 후에, 공간 영역 일변량() 특성, 웨이블릿 영역 일변량 특성 및 이변량 밀도 및 상관 NSS 특성을 도출했다. 그 도출한 특성들로 SVR을 훈련해서 회귀분석을 실시함으로 품질 점수를 예측했다. 



3) Ko H, Song R, Kuo C C J. A ParaBoost Stereoscopic Image Quality Assessment (PBSIQA) System[J]. Journal of Visual Communication & Image Representation, 2017.


Ko 등은 우선 다양한 왜곡 현상을 몇 개의 유형으로 한정지어 분류한 다음, 유형별로 품질 평가기들을 만들었다. 그러고 난 후 거기에서 얻은 중간 점수들을 하나로 통합하였다. 왜곡 유형별로 하나씩, 총 9개의 SVR이 유형별 품질 평가기로 사용되었다. 그들은 거기서 얻은 9개의 중간점수들을 특성으로 삼아 또 다른 하나의 SVR을 훈련시켜 최종 점수를 얻었다. 




▶ k-nearest neighbors (kNN)

지도학습 중의 하나인 kNN의 기본적인 개념은 이름에서부터 잘 드러난다. 어느 그룹에 속하는 것인지 알고 싶은 새로운 데이터로부터 k개의 가장 가까운 이웃들을 찾아라! 왜 k개의 가까운 이웃들을 찾는가? 찾은 k개의 데이터 중에 더 많은 수의 데이터가 포함된 그룹을 새로운 데이터의 그룹으로 판단하겠다는 것이다. 


만약 k가 1이면 새로운 데이터를 중심으로 가상의 원 (2차원인 경우) 또는 구(3차원인 경우)를 확장해 가다가 만나는 첫번째 데이터의 그룹을 새로운 데이터의 그룹으로 삼는다. k가 9이면 9개의 데이터를 만날 때까지 원이나 구를 확장시킨다. 그 중 만약 7개가 어떠한 한 그룹에 속하는 데이터라면 새로운 데이터도 그 그룹으로 판단한다. 즉, kNN에서 k는 새로운 데이터가 속한 그룹을 알아내기 위해 인접 데이터를 k개 찾겠다는 뜻이다[1]. 이때 k는 항상 홀수로 설정되어야 한다. 만약 짝수가 가능해서 k=4로 설정했는데 2개는 이 그룹에, 2개는 다른 그룹에 속하면 판단할 방법이 없기 때문이다.



1) Zhou W, Yu L. Binocular Responses for No-Reference 3D Image Quality Assessment[J]. IEEE Transactions on Multimedia, 2016, 18(6):1077-1084.


Zhou와 Yu는 양안 에너지 반응 맵과 양안 경쟁 반응 맵을 만들어서 양안 시각 인지를 시뮬레이션한 후, 두 맵의 지역 패턴들을  품질 평가를 위한 특성으로 활용했다. 특성 도출 후에 품질 점수를 얻기 위해 kNN을 사용했다. kNN을 어떻게 사용했는지 좀 더 자세히 설명하겠다. 그들은 테스트할 스테레오쌍에서 특성을 도출한 후, kNN을 통해 5개의 인접 데이터를 찾았다(저자들이 k = 5로 설정했기 때문에). 이때 그 5개의 인접데이터와 테스트 스테레오쌍의 데이터 사이의 거리도 각각 계산된다. 5개의 인접 데이터 모두 각각의 라벨값을 갖고 있는데, 새로운 데이터의 라벨값을 예측하기 위해 그 라벨값들에 거리값들을 가중치로 곱한 후 더해줬다. 다시 말하자면, kNN에 의해 찾아진 5개의 데이터 중 가까울수록 데이터의 라벨값에 더 큰 영향력을 줘서 새로운 데이터의 라벨값을 예측했다.  




 Deep belief network (DBN)


DBN은 입력층과 은닉층으로 구성되어 있는 제한된 볼츠만 머신(restricted Boltzmann machine; RBM)을 블럭을 쌓듯이 층층이 쌓인 형태도 연결된 신경망이다[1]. DBN은 피드포워드 신경망의 한계를 극복하기 위해 만들어졌다. 피드포워드 신경망의 경우 층수가 많아지면서 경사 감소 소멸(gradient decent vanishing) 문제로 인해 제대로 훈련을 시키는 것이 어려웠다. 따라서 RBM을 비지도학습인 사전 학습(pre-training)을 통해 가중치를 어느 정도 정확해에 근접한 값으로 보정해 놓는다. 이때 RBM을 훈련시킬 때 사용되는 방법이 contrastive divergence (CD)이다. 그러고 나서 마지막에 튜닝 과정(fine-tuning)을 통해 정확해에 가장 가까운 최종 가중치를 계산하도록 했다. 



1) Shao F, Tian W, Lin W, et al. Toward a Blind Deep Quality Evaluator for Stereoscopic Images Based on Monocular and Binocular Interactions[J]. IEEE Trans Image Process, 2016, 25(5):2059-2074.


Shao 등은 단안(monocular) 상호작용과 양안(binocular) 상호작용을 고려하여 3D 이미지의 품질을 결정하는 방법을 제안했다. 단안 이미지들로 1개의 DBN을 훈련시켰고, cyclopean 이미지로 또 다른 DBN을 훈련시켰다. 그리고 좌, 우 단안 이미지들을 이미 훈련된 단안용 DBN에 입력시켜 두 개의 로컬 단안 품질 점수를 얻었고, 두 종류의 cylopean 이미지들을 이미 훈련된 양안용 DBN에 넣어주어 두 개의 로컬 양안 품질 점수를 얻었다. 이 4개의 로컬 품질 점수는 단안, 양안 상호작용을 고려하는 weighting 전략을 통해 하나의 최종점수로 통합되었다. 




 Stacked auto-encoders (SAE)


SAE는 큰 틀에 있어서 DBN과 비슷하다. SAE에서는 RBM 대신에 auto-encoder들이 층층이 쌓여진다. 역시 사전 학습과 튜닝을 통해 훈련된다. auto-encoder는 입력층의 노드의 갯수보다 은닉층의 노드의 갯수를 적게 설정한다. 입력값은 인코더를 통해 은닉값으로 인코딩되고, 이 은닉값은 다시 디코더를 통해 디코딩된다. 이때 auto-encoder는 디코더를 통해 디코딩된 값이 입력값과 최대한 같아지는 방향으로 훈련시킨다. 은닉층의 노드의 갯수가 입력층보다 더 적기 때문에 은닉값은 입력값의 차원을 축소시킴과 동시에 더 추상적인 값을 보유하게 된다. 이런 방식으로 한 층이 훈련되면 은닉층을 거쳐 나온 출력값을 두번째 auto-encoder의 입력으로 삼아 두번째 auto-encoder를 훈련시킨다. 사용자가 원하는 수의 층을 가질 때까지 이 과정을 반복한 후에 fine-tuning으로 최종적으로 전체 네트워크의 가중치를 조정해준다. 



1) J. Yang, K. Sim, X. Gao, W. Lu, Q. Meng and B. Li, "A Blind Stereoscopic Image Quality Evaluator with Segmented Stacked Autoencoders Considering The Whole Visual Perception Route," in IEEE Transactions on Image Processing.


이 논문은 최근에 Accept된 내가 주저자로 참여한 논문이다. 사람이 3D 이미지를 눈으로 보고 뇌로 처리해서 최종적으로 품질 점수를 매기는 신경생물학적 시스템을 모델링했다. 우리가 두 눈으로 본 이미지는 망막신경절(retinal ganglion cell)을 거치게 되는데 그곳에서 엣지 정보가 추출된다. 그렇게 동작하는 이유는 이미지 내의 많은 정보중에서도 엣지가 가장 핵심적인 정보이기 때문이다. 또한 그곳을 지나 lateral geniculate nucleus에서는 색과 관련된 정보가 처리된다. 이후에 V1에 도달해서는 좌, 우 정보가 융합되기 시작하고, 이미지를 구성하고 있는 점, 선과 같은 기초적인 특성들이 도출된다. 그리고 V2, V3, MT 등 여러 기관을 지나 전두엽에 도달할 때까지 그 기초적인 특성은 점차 더 의미있는 추상적인 특성으로 변화된다. 이 변화과정을 나는 SAE로 모델링했다. 최종적으로 전두엽에 도달한 추상화된 특성들은 품질 평가를 내리는 자료로 활용되고, 나는 이것을 SVR로 모델링했다.  




▶ convolutional neural network (CNN)


CNN은 이미지에 내포되어 있는 여러 특성을 추출하기 위해, 그 특성들을 대표하는 필터 커널을 사용해서 컨볼루션을 취한다. 예를 들어, 수직 엣지 필터 커널을 사용하면 이미지의 수직 엣지 성분이 강조되고, 블러 필터 커널을 사용하면 이미지에서 같은 톤으로 이뤄진 배경과 같이 변화가 적은 부분이 추출된다. 이러한 필터 커널들을 사용해서 생성한 이미지들을 특성지도(feature map)라고 부른다. 필터 커널을 이용해 컨볼루션이 완료된 데이터는 ReLU와 같은 활성화 함수에 통과시켜 좀 더 판별력 있게 만든다. 


필터링 과정을 통해 입력 데이터 이미지의 특성은 추출했지만, 여러 개의 특성지도가 생성되면서 처리해야할 데이터 양은 그만큼 더 많아졌다. 이 문제를 해결하기 위해서 풀링(Pooling) 또는 서브샘플링(sub-sampling)이라는 과정이 적용된다. 풀링 커널을 이용해서 n x n 크기 내에 있는 데이터에서 대푯값을 취한다. 풀링 커널의 종류에는 최대 풀링, 평균 풀링, 확률적 풀링 등이 있다. 풀링 커널의 사이즈가 3 x 3이고 최대 풀링이라면, 특성지도에서 9개의 인접 데이터 중에서 가장 큰 하나만 선택하고 나머지는 버린다. 그만큼 데이터의 양이 줄어든다. 


필터링 -> 활성화 -> 풀링 과정을 거치면 픽셀 단위의 이미지에서 에지나 실루엣 들의 특성으로 이뤄진 특성지도가 완성된다. 그 다음에는 이러한 부분적인 특성을 모아 좀더 확대된 형체의 이미지를 구성한다. 이를 위해 이웃한 특성지도들을 여러 개 조합해서 새로운 입력 데이터를 만든다. 이제 또 다시 필터링 -> 활성화 -> 풀링의 과정을 반복한다. 이 과정을 몇번 반복할지는 사용자가 과제에 따라 결정할 수 있다. 

 

충분히 특성이 추출 및 압축되었을 때 입력 데이터가 어느 그룹에 속하는지 판별하는 분류 과정을 진행한다. 이를 위해 추가적으로 다층 신경망이 연결되고 피드포워드 및 역전파를 통해 학습이 진행된다. 



1) Zhang W, Qu C, Ma L, et al. Learning structure of stereoscopic image for no-reference quality assessment with convolutional neural network[J]. Pattern Recognition, 2016, 59(C):176-187.


Zhang 등은 스테레오 이미지로부터 얻은 이미지 패치들을 CNN에 입력해주어 자동적으로 특성을 도출한 다음에 그것을 이용해서 이미지 품질 점수를 산출했다. 이 알고리즘은 다른 방법들과 달리 사용자가 어떤 특성을 도출할지 고려할 필요가 없고, CNN이 알아서 이미지로부터 특성을 도출해준다는 특징이 있다. 




▶ 정리


이 글은 이러저러한 머신러닝, 딥러닝 알고리즘에 대한 간략한 소개와 몇몇 대표적인 알고리즘들이 IQA라는 분야에서 어떤 방식으로 사용되고 있는지 개괄적인 소개를 위한 것입니다. 쓰다보니 관련 연구자가 아니면 너무 어려운 용어와 개념이 많은 것 같네요. 좀 더 쉽게 이해할 수 있도록 차차 수정하겠습니다. 궁금증이 있다면 댓글을 남겨주세요.^^ 



<참고문헌>

[1] 김의중 지음, "알고리즘으로 배우는 인공지능, 머신러닝, 딥러닝 입문", 위키북스

[2] https://en.wikipedia.org/wiki/Visual_Information_Fidelity => VIF

[3] https://en.wikipedia.org/wiki/Structural_similarity#Application => SSIM

[4] Wang Z. Applications of Objective Image Quality Assessment Methods [Applications Corner][J]. Signal Processing Magazine IEEE, 2011, 28(6):137-142. => IQA 알고리즘의 응용 분야.