Search

'ICCV'에 해당되는 글 2건

  1. 2019.10.31 ICCV 2019 Review 1
  2. 2019.10.24 "Network Slimming" Review

ICCV 2019 Review

카테고리 없음 2019. 10. 31. 20:11 Posted by woojeong

얼마 전 서울에서 열린 2019 ICCV에 다녀왔습니다. 그 중 가장 기억에 남는 논문들을 간단하게 정리하겠습니다.

SinGAN: Learning a Generative Model from a Single Natural Image (Shaham et al.) (paper)


ICCV 2019에서 Best paper award를 받은 논문입니다. 이름에서도 알 수 있듯이 하나의 이미지로 학습하는 generative model을 제안했습니다. SinGAN은 아래 그림과 같이 여러 단계의 fully convolutional GAN으로 이루어져 있는데, 각각의 GAN 모델은 이미지에서 다른 scale의 패치 분포를 학습합니다. 인풋으로 다른 노이즈를 줌으로써, 다양한 크기와 화면 비율을 가진 output을 만들 수 있습니다. 이 output 이미지의 전체적인 구조는 학습한 이미지와 비슷합니다. 하지만 위 그림처럼 산봉우리의 개수나 새의 대형이 달라지는 다양한 이미지들을 생성하게 됩니다.

 

 

저는 아래 사진의 결과가 흥미로웠는데요, 기존의 연구들이 사진의 texture만 모사할 수 있는 것과 달리 SinGAN은 input paint에 맞추어 실제와 같은 이미지를 만들어냈습니다. 

 

Semi-Supervised Learning by Augmented Distribution Alignment (Wang et al.) (paper)


이 논문에서는 Augmented Distribution Alignment라는 이름의 semi-supervised 학습 방식을 제안합니다. semi-supervised learning에서는 보통 labeled data가 unlabeled data보다 훨씬 적기 때문에 "Empirical Distribution Mismatch"라는 문제가 발생합니다. 위 그림에서 labeled data의 분포와(왼쪽 위), unlabeled data의 분포(가운데 위)가 다른 것처럼요. 이 논문에서는, 두 분포가 유사해지도록 adversarial training을 한 후 data augmentation을 하면 실제 분포와 더 유사한 샘플을 얻을 수 있다는 아이디어를 제안했습니다. ADA-net의 구조는 다음과 같습니다. 

 

 

Why Does a Visual Question Have Different Answers? (Bhattacharya et al.) (paper)

 


이 논문은 아이디어 자체는 간단하지만 흥미로운 태스크인것 같아서 소개하려고 합니다. Visual QA에서 사람도 잘 대답하지 못하는 문제일 경우, 모델은 어떻게 대처할까요? 예를 들어 위 그림의 두번째 이미지를 보면, 이 사진에 있는 식물이 뭐냐고 물어봤을 때 사람도 한번에 대답하기 어려울 것입니다. 이 논문에서 제시한 dataset에서는 대답이 갈리는 이유를 9가지로 분류합니다. 모호하거나(ambiguous), 답을 여러가지로 말할 수 있거나(synonyms), 주관적이거나(subjective)와 같은 것들이죠. 

이 이유를 맞추기 위해서 논문에서 제시한 모델입니다. 왜 이 질문이 어려운가? 에 대한 9개의 답중 하나를 고르는 classification을 수행합니다. 인풋으로 사진과 질문을 넣고, 이를 기반으로 질문의 답을 예측합니다. 질문의 답을 예측한 벡터가 구해지면, 이미지, 질문 벡터와 concat해서 최종 output을 구합니다. 제가 포스터를 구경할 때 많은 사람들이 "대답하기 어려운 이유를 알아내서 어디에 활용할 수 있나?" 라고 질문했는데요, 저도 그 부분이 궁금했습니다. 제 생각에는 input으로 이미지와 질문, 그리고 대답하기 어려운 이유를 같이 넣고 답을 generation하는 모델을 만들면 더 재미있는 태스크가 되지 않을까 합니다.

 

 

이상 ICCV에 발표되었던 논문 3개를 간단하게 정리해 보았습니다. 더 자세한 내용은 full paper를 참고해 주세요. 감사합니다.

"Network Slimming" Review

카테고리 없음 2019. 10. 24. 16:27 Posted by 랏츠베리

본 포스팅은 Deep Convolutional Neural Network의 running time 최적화를 위해 channel level pruning을 도입한 "Learning Efficient Convolutional Networks through Network Slimming" (ICCV 2017)를 리뷰하도록 하겠습니다. 포스팅에 앞서, 주제와 관련된 모든 연구 내용은 Learning Efficient Convolutional Networks through Network Slimming 참조했음을 먼저 밝힙니다.

History


  Convolutional Neural Networks (CNNs)가 다양한 Computer Vision Task 처리에 중요한 솔루션으로 도입이 된 이후, 실제 응용된 어플리케이션에서 활용하려다 보니 Practical Issue가 광범위하게 발생하였습니다. 이들 중 실제 Light-weight device에서는 CNNs의 Computation Issue가 핵심적으로 보고되었는데요. 이를 해결하기 위해 Depp CNN Architecture의 발전은 Reinforcement Learning을 활용하는 수준까지 도달하였지만, 실제 응용되기엔 한계가 있었습니다. 이를 위해 다양한 경량화 기법들 즉, Weight Pruning이나 Filter or Channel Pruning과 같은 Model Reduction 효과를 극대화시키는 기술들이 소개되었고, 본 포스팅은 이 범주에서 Channel Pruning을 활용한 Reduction 효과에 대한 부분에 해당합니다.

 

Filter or Channel Pruning Effect


  Pruning 기법은 모델 내부의 Node 간의 Weighted Sum으로 구성된 커넥션들 중에서 불필요한 커넥션을 제거하는 기술입니다. 이를 통해, 중요하고, 필요하다고 고려되는 커넥션의 구성으로 최소화 함으로써, 모델 축소를 극대화하는 효과를 볼 수 있습니다. 하지만, 커넥션을 구성하는 Weight Parameter들은 대체로 Matrix 형태의 정형화된 데이터 구조로 관리되는데, 상기 기술로 인해 메모리 최적화와 같은 부수적인 경량화 효과를 얻기 위해서는 Sparse Matrix를 변형하여 관리할 데이터 구조가 요구되었습니다. 이에 따라, Weight Pruning은 아직까지 일반적으로 사용하는 경량화 디바이스에서 효율적으로 Running하지 못한다는 지적이 있었고, 기존에 활요하는 데이터 구조를 충분히 유지하며 딥러닝 모델의 경량화를 극대화하는 방향의 연구가 논의되었습니다.

  Filter 혹은 Channel Pruning은 Deep CNNs 구조에서 Computation이 가장 Dominant한 Convolutional Layer의 경량화를 목표로 하여, 이 Layer에 존재하는 Intermediate Feature Neurons의 개수를 최대한 줄이는 거시적인 관점에서의 Pruning을 의미합니다. 이 Pruning의 효과로는 기존의 Structured Data Structure를 그대로 유지하며, 이들의 개수를 제거하는 형태이기 때문에, 일반적인 디바이스에서도 경량화 효과를 충분히 느낄 수 있습니다.

 

Network Slimming


  본 포스팅에서 언급하는 Network Slimming이라는 연구는 Intermediate Feature Neurons의 개수를 최적화하는 방법론을 제안한 논문이며, Architecture의 한계에 따라 사용 가능 여부가 결정되지만, 저의 주관으로는 최적화 파이프라인 구현을 위해 상당히 간단하고 Fancy한 접근이었다는 면에서 좋은 점수를 받지 않았나 생각합니다.

  Network Slimming은 1) Deep CNNs의 학습 방식을 Stochastic Gradient Descent (SGD)를 활용하고 있고 이를 통해 Batch 단위 학습을 하고 있다는 점, 2) Layer 마다 Batch의 정규화가 요구되며 Batch Normalization Layer (BN)을 대부분의 네트워크 모델이 채택하고 있다는 점, 두 가지 측면을 Motivation으로 삼아 BN의 Trainable Variable인 Scaling Factor를 활용하여 Layer의 결과물인 Output Channel에서 불필요한 Channel을 찾아 제거하는 아이디어를 제안하였습니다. 이는 Scaling Factor가 학습 중인 시점에 Sparse 하게 되도록 L1-norm으로 Regularization을 하였는데요. 이 기법으로 인해 충분히 Channel 개수를 최적화하여 모델을 "Slim"하게 만드는 데 성공하였습니다.

 

Network Slimming

 

L1 Regularization on Scaling Factor in BN

 

Network Slimming


  Network Slimming의 Pruning 파이프라인은 전체 모델 구조에 대하여 하나의 Pruning Ratio를 활용하여 Dynamic Layer-Wise Pruning으로 처리하였고, 이를 여러 횟수 반복하여 Fine Tuning하였습니다.

Slimming Pruning Pipeline

 


  서술한 연구 내용 외에 추가적인 연구 결과나 이해가 필요한 부분이 있으면 직접 링크된 논문을 읽어보시고 댓글을 남겨주시면 답변드리겠습니다. 제가 작성한 PPT 자료를 업로드 해드리니 필요하시면 참고해주세요.