본문 바로가기

Material Recognition

Encoding based Material Recognition (1)

반응형

첫 번째 재질 인식 논문 포스팅입니다.

이번 포스팅에서는 최근 2-3년 간 재질 인식 분야에서 좋은 성능을 내고 있는 네트워크 형태에 대해 정리를 해보려고 하는데요, 바로 Encoding Layer 기반의 네트워크입니다.

총 두 가지 논문을 살펴볼텐데요, 리스트는 다음과 같습니다.

  • Deep TEN: Texture Encoding Network (Zhang et al, CVPR 2017)
  • Deep Texture Manifold for Ground Terrain Recognition (Xue et al. CVPR 2018)

두 가지 논문을 정리한 후에는 몇 가지 golden-standard dataset에서 좋은 성능을 보인 최신 논문 (ICCV 2019)에 대해 살펴보는 것으로 마무리를 지을까 합니다. 우선 이번 포스팅에서는 Deep TEN에 대해 대략적인 아이디어와 개념에 대해 살펴보도록 하겠습니다.

시작에 앞서 잠깐 TMI를 드리자면,  2017 CVPR에 Deep TEN과 함께 소개되었던 DAIN(Differential Angular Imaging Network)과 더불어 모두 같은 연구실에서 나온 논문입니다. 미국 Rutgers 대학의 Kristin Dana 교수 산하 연구실인데 최근 좋은 성능을 보이는 재질 인식 논문들은 거의 모두 여기서 나왔다고 해도 무방합니다. 

순간 울컥하는 시기심을 누르고 본격적으로 논문 리뷰를 시작해보겠습니다. 참고로 재질 인식 분야에 관심이 생기신다면 위의 DAIN 논문도 한 번 읽어보시길 추천드립니다. 기회가 되면 저도 리뷰 올리겠습니다.

Deep TEN - Base Idea 

먼저 객체 인식과 비교할 때 재질 인식이 가지는 가장 큰 특징이 무엇일지 생각해보는 걸로 시작하겠습니다.

일반적인 객체 인식에서 shape, spatial arrangement와 같은 정보가 주요한 feature로서 작용하는 것과는 달리, 객체 인식은 반대로 shape-invariant한 정보를 추출하는 데에 목적을 둡니다. 논문에서도 scene understanding, object recognition 등의 task와 비교해 texture recognition이 가지는 차이점을 언급하고 있습니다.

의자(혹은 의자의 재질)을 인식하는 경우를 생각해 보겠습니다. 기존 객체 인식 목적의 deep learning network가 하는 일은 추출된 각 local feature 같의 spatial arrangement를 보존하면서 이 상대적인 연관관계를 통해 의자의 외형을 특정짓는 일입니다. 하지만 재질인식에서 이와 같은 방식을 사용하게 되면, 의자의 외형에 dependent한 feature가 추출되기 때문에, 좋은 재질 feature라고 볼 수 없겠죠. 

그래서 이 논문은 재질을 특정지을 수 있는 spatially-invariant, order-less한 feature의 필요성을 주장합니다. 그렇다면 어떻게 그런 feature를 얻느냐. Deep TEN은 기존 dictionary learning / feature distribution 에서 그 해답을 찾았습니다. 

BoW(Bag of Words) 기법

논문을 좀 더 잘 이해하기 위해, 잠시 기반 지식을 짚고 넘어가겠습니다. BoW 기법은 이름에서 추측할 수 있듯이, 특정 단어(word)들의 조합과 갯수로 대상을 특정짓는 기법입니다. 기존에는 문서 분류 분야에서 많이 사용되었는데요, 예를 들어 특정 논문을 읽는다고 할 때 'texture', 'material', 'surface' 같은 단어가 많이 발견된다면 이 논문은 '재질'에 관련된 문서일 확률이 높아지겠죠. 이미지 인식에 적용되어도 얘기는 크게 다르지 않습니다.

시작은 우선 복수의 대상 객체(이미지)로부터 feature 를 추출하는 것으로 시작합니다. 기존에 제시되었던 여러 feature extraction 기법들을 이용해 feature를 추출하고, 추출된 feature들에 clustering을 적용합니다. 생성된 각각의 cluster는 해당 cluster를 정의하는데 핵심적인, cluster의 center에 위치하는 대표 feature들을 갖게 됩니다. 이 대표 feature들이 바로 code book(dictionary)를 구성하는 'code'가 됩니다.  이 때, '몇 개의 cluster'로 feature space를 정의하는지에 따라 code book을 구성하는 code의 갯수도 달라지겠죠. 만일 적은 수의 code로 space를 정의한다면 아주 significant한 몇 개의 feature를 바탕으로 classification을 수행할 것이고, 많은 수의 code로 space를 정의한다면 좀 더 복잡하되 서로 구분이 명확하지 않은 복수의 feature로 classification을 수행하게 될 것 입니다.

이제 새로운 이미지 A가 들어왔다고 가정해보겠습니다. code book을 생성할 때 적용했던 feature extraction 기법들을 동일하게 적용하고 나면, 이미지 A에 해당하는 복수의 feature들이 추출되었을 것입니다. 이제 이 feature들을 기존 code 들이 정의된 feature space상에 대입해, 좀 더 가까운 (비슷한 값을 가지는) code 들이 무엇인지를 파악하게 됩니다. 이렇게 이 이미지 A가 가지고 있다고 판단되는 코드들을 파악해, 이 코드들의 distribution(histogram)을 만들어 classification을 수행하는 게 바로 image classification에서 사용되는 dictionary 기반 학습 기법입니다.

이 기법은 Deep TEN 논문이 주장한대로 (code 의 갯수로 distribution을 생성하기 때문에) order-less, spatially-variant 한 feature를 추출할 수 있다는 장점이 있지만, 반대로 feature 들 간의 spatial arrangement 정보를 잃어버린다는 단점이 있습니다. 이 부분에 대해서는 두 번째 논문 (Deep Texture Manifold)에서 다루고 있으니 다음 포스트에서 좀 더 자세히 설명하겠습니다.

참조: https://darkpgmr.tistory.com/125

Residual Encoding Model

다시 Deep TEN으로 돌아오겠습니다.

위에 설명한 것과 같은 dictionary learning 기반 방식을 재질 인식에 적용하려는 시도는 이전에도 있었습니다. 가장 잘 알려진 예가 2015년 CVPR에서 발표된 Deep filter bank 방법인데요, 해당 논문은 기존에 사용되었던 여러 feature extraction 방식(SIFT 등)과 encoder(VLAD, Fisher Vector)들을 혼합해 발표 당시 몇 가 재질 데이터셋에 대해 state-of-the-art를 기록했습니다.  하지만 이 논문은 여전히 아래와 같은 두 가지 한계점을 가진다는 것이 Deep TEN의 지적입니다.

  • pre-trained CNN, dictionary learning, encoding 등 별도의 알고리즘 component들이 각자 생성된 뒤 합쳐지는 형식을 가지고 있음 (즉, end-to-end가 아님)
  • feature 와 encoder는 모두 이전 학습시 사용된 데이터에 의해 고정된 이후 사용되기 때문에, cluster 생성만 할 뿐, labeled data가 주는 이점을 반영하지 못함.

Deep TEN은 이런 문제점들을 Residual Encoding Layer를 통해 해결했습니다. 이제부터 그 개념을 하나씩 살펴보겠습니다.

H. Zhang, J. Xue, and K. Dana. Deep ten: Texture encoding network. In The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), July 2017.

전체 흐름을 이해하기에 앞서, 논문이 사용하는 'residual vector'에 대해 설명하고 넘어가겠습니다. 

N개의 descriptor(feature)로 구성된 visual Descriptor set X = {x1, x2, ...., xi} 와 K개의 codeword로 구성된 codebook set C = {c1, c2,....,ck} 를 가정해보겠습니다. 이 때, 각 codeword에 대해 descritor xi 는 연관관계를 정의하는 weight aik (i 번째 descriptor와 k번째 codeword 간의 weight)와 residual vector rik = xi - ck 로 표현할 수 있습니다.  이런 개념을 바탕으로 residual encoding model이 하는 일은 k개의 codeword에 대해 다음과 같은 aggregation operation을 수행하는 일입니다.

수식 1

즉, 특정 code word에 대해 이번 input에서 얻어낸 N개의 모든 descrptor와의 weight와 residual vector를 곱해 더함으로써 고정된 길이 (code word의 길이 k) 의 encoded representation을 얻어내는 것입니다. 그 결과, 이제 이 encoding layer는 input의 갯수와 무관하면서 order-less한 일종의 'pooling'을 수행할 수 있게 되었습니다.

이 encoded representation이 어떤 역할을 하는지, 논문에서 제공한 간단한 예시를 통해 이해해보겠습니다.

 

어떤 이미지 A에서 descriptor xi 가 많이 관찰되었다고 가정해보겠습니다.  이는 곧, descriptor xi가 center에 분포하고 있는 특정 cluster center ck에 가깝다는 뜻이 됩니다. 그렇다는 것 곧, 이 descriptor xi 와 codeword ck 사이를 정의하는 residual vector rik = xi - ck 가 작다는 것을 의미합니다.  잠시 weight aik 를 정의하는 식을 살펴보겠습니다.

수식 2

수식 2는 각 descriptor에 대해 codeword를 soft assign하는 수식입니다. Soft-weight assignment 는 서로 다른 cluster 들이 대략적으로 비슷한 크기를 가진다고 가정한 뒤(논문에서는 이 점을 들어 Encoding Layer가 Gaussian Mixture Model의 simplified version이라고 볼 수 있다고 말하고 있습니다), scaling(smoothing) factor sk 가 학습될 수 있도록 네트워크를 디자인해 좀 더 정확한 modeling이 가능하도록 했습니다. 이 식에 따르면 위에서 언급된 예시의 경우, descriptor xi의, ck가 아닌 다른 codeword(j != k) 대한 residual vector(rij)에는 상대적으로 작은 weight가 할당되게 됩니다. 

여기까지가 Deep TEN이 가지고 있는 기본 아이디어라고 할 수 있을 것 같습니다. 위에서 설명한 것 같은 구조적 특징으로 인해 생긴 Deep Ten의 인상적인 기능(?)을 설명하는 것으로 포스팅을 마무리 짓겠습니다.

  • Pooling Layer: CNN의 기존 pooling layer들이 고정된 receptive field를 사용하며 특정 크기의 input size만 받아들일 수 있는 것과 달리, residual encoding layer는 input을 고정된 길이의 distribution으로 변화시키기 때문에, arbitrary input size를 받아들일 수 있다는 장점이 있습니다.
  • Multi-size Training: 위의 장점에서 더 나아가 Deep TEN은 fixed length feature representation을 이용해 multi-size training을 시도했습니다. 352x352, 320x320의 두 가지 사이즈의 이미지로 training시켰을 때, network의 performance가 상승한다는 것이 논문의 실험을 통해 증명되었습니다.
  • Joint Deep Encoding: 논문이 제시한 residual encoding layer는 conv layer의 앞단에서 domain-independent한 feature를 추출하는 역할을 합니다. 논문은 서로 다른 두가지 재질 데이터셋에 대해 두 개의 분리된 encoding layer로 추출한 convolutional feature들이 서로 공유되도록 네트워크를 설계, performance가 소량 상승한다는 것을 증명했습니다.

Deep TEN은 결과적으로 최근 널리 사용되는 몇 가지 재질 데이터셋 (MINC-2500, GTOS, KTH, 4D-Light)에 대해 발표 당시 기준 STOA를 찍은 논문입니다. 좀 더 자세하게 리뷰했다면 더 좋았을 텐데 좀 급하게 마무리 한 감이 있어 아쉽네요.

Joint Encoding과 구체적인 implementation detail에 대해서는 기회가 된다면 나중에 보충하도록 하겠습니다. 부족한 글 읽어주셔서 감사합니다. 잘못된 부분들은 지적해준시다면 감사히 받겠습니다.

다음 포스팅에서는 Deep TEN의 한계점을 보완한 Deep Texture Manifold for Ground Terrain Recognition 논문을 다뤄보겠습니다. 

 

 

반응형

'Material Recognition' 카테고리의 다른 글

Encoding based Material Recognition(2)  (0) 2019.11.28