MixConv:Mixed Depthwise Convolutional Kernels

|

MixConv:Mixed Depthwise Convolutional Kernels

Original paper: https://arxiv.org/pdf/1907.09595.pdf

Authors: Mingxing Tan, Quoc V. Le (Google brain)

  • 참고 글
    • https://www.youtube.com/watch?v=252YxqpHzsg&feature=youtu.be
    • https://www.slideshare.net/JinwonLee9/pr183-mixnet-mixed-depthwise-convolutional-kernels
    • https://medium.com/@tantara/mixnet-on-tensorflow-lite-94520a89b791

Introduction

  • 최근 convolution network design의 트렌드는 네트워크의 정확도와 효율을 모두 높히는 방향으로 연구가 활발히 진행되고 있음
  • 이로 인해 다양한 종류의 depthwise convolution들이 연구되어 최근의 CNN모델들에 적용되고 있는 추세
    • MobileNets, ShuffleNets, NASNets, AmoebaNet, MnasNet, EfficientNet 등등
    • 대부분의 모델들에서 depthwise convolution들을 사용함
  • 예전의 CNN들은 주로 3x3 conv layer들을 많이 사용했지만, 최근엔 5x5나 7x7같이 큰 커널 사이즈를 갖는 conv layer들을 많이 사용함
    • 큰 커널을 사용하는것이 모델의 정확도나 효율 관점에서 더 좋다는 연구결과들이 있음
  • 본 논문에선 “큰 커널을 사용할수록 정확도가 향상되나?” 라는 fundamental한 질문을 던졌음
    • Conv layer에서 큰 크기의 커널을 사용할경우 파라미터나 연산량이 증가하더라도 더 디테일한 high-resolution pattern들을 학습할 수 있게 됨
    • 반면 작은 크기의 커널을 사용할 경우 low-resolution 패턴을 학습하게 됨
    • 이로 인해 큰 크기의 커널을 사용할수록 네트워크가 더 정확하게 동작 할 수 있게 됨
    • 저자들은 커널 크기가 계속 커질수록 정확도도 계속 높아질것인가에 대한 질문을 한 것임
views
  • 위 그림에서 왼쪽은 MobileNet v1의 ImageNet Top-1 정확도 결과를, 오른쪽은 MobileNet v2의 정확도 결과를 보여줌
    • x축은 커널 크기, y축은 정확도를 의미
  • 그림에서 보이는것처럼 커널 크기가 커지더라도 일정 수준 이상으로 커지게 되면 오히려 정확도가 감소하게 되는 것을 확인 할 수 있음
    • MobileNet v1의 경우 7x7 커널 크기를 썼을 때 가장 성능이 좋았으며, v2의 경우 9x9가 가장 이상적인 커널 크기
  • 커널의 크기가 input resolution까지 커지는 극단적인 경우를 생각해보면 이는 마치 fully-connected network처럼 동작하는것과 같게 됨
    • 입력 영상의 각 픽셀(값)과 커널 파라미터가 1:1 매칭되기때문에 fc layer와 동일함
    • 따라서 커널 크기가 extreme하게 계속 커지는것은 성능향상에 도움이 될 수 없음!
      • 위 실험결과를 볼 때, 각 네트워크들은 해당 네트워크 구조가 갖는 optimal한 커널 크기 point가 존재함
  • 따라서 정확도와 효율의 향상을 위해선 high-resolution 패턴을 학습할 수 있게 해주는 큰 크기의 커널과 low-resolution 패턴을 학습 할 수 있게 해주는 작은 크기의 커널 모두 필요

Efficient ConvNets

  • 최근들어서 CNN의 효율을 높히기 위한 다양한 연구들이 수행됨
  • 특히 mobile-size CNN들에서 depthwise convolution의 인기가 매우 높음
  • 일반적인 regular convolution과 다르게, depthwise convolution(=channel-wise convolution)은 각각 채널별로 다른 커널을 이용해 conv 연산을 수행하므로 파라미터 사이즈와 연산량을 줄일 수 있음
    • Regular conv는 $k\times k\times c\times n$개의 파라미터를 이용해 $w\times h\times n$ 크기의 feature map을 생성
      • k: kernel size, c: channel, n: output channel
      • 자세한 내용은 후술
    • Depthwise conv는 $k\times k\times 1\times c$개의 파라미터를 이용해 $w\times h\times c$ 크기의 feature map을 생성
      • 크기를 regular conv와 동일하게 할 경우, 위 연산 후 poin-wise conv로 채널수만 n으로 맞춰주면 됨
      • 이게 MobileNets의 depth-wise separable conv로, 추가되는 파라미터는 $w\times h\times c\times n$개로, 출력 크기는 regular와 같아지지만 실제 연산량 및 파라미터 수는 크게 감소
        • $k\times k\times 1\times c+w\times h\times c\times n$
      • 자세한 내용은 후술

Multi-Scale Networks and Features

  • 이미 multi-branch 구조를 갖는 Inception 계열, Inception-ResNet, ResNext, NASNet등의 CNN들이 다양하게 제안되어왔음
  • 각 layer에서 multi-branch 구조를 사용함에 따라 단일 convolution layer에서 다양한 연산(다양한 크기의 커널)을 적용시키는게 가능해짐
  • 유사하게 DenseNet이나 FPN(feature pyramid network)등에선 서로 다른 layer들에서 생성된 feature map들을 묶어 multi-scale feature map을 만들어 사용함
    • 위 구조는 multi-branch 구조가 아니라 skip-connection과 같이 input을 네트워크의 다른부분에서 가져와서 concat해 multi-scale feature map을 생성시킴
  • 대부분 기존의 연구들은 이처럼 네트워크의 주된 구조(macro-architecture)를 변경/변형하는 식으로 다양한 conv 연산들을 활용함
  • 본 논문에선 네트워크 구조를 그대로 주고, 그 구조 안에서 약간의 변형을 적용시켜 기존의 network들을 좀 더 효율적이게 만드는 방법에 대해 연구함
  • AutoML, NAS
  • 최근엔 사람이 만든(hand-crafted) 모델들보다 NAS를 이용해 만든 네트워크들의 성능이 훨씬 좋음
    • 네트워크 디자인을 자동화하고 알아서 (사람이 지정해준 기준에 따라)더 나은 디자인을 선택하도록 하기 때문
  • 새로운 연산이 추가될 경우, NAS의 search space에 추가해주면 NAS가 알아서 최적의 구조를 찾아줌
    • 논문의 저자들도 제안하는 conv 방식(MDConv)을 search space에 추가하고, 효율성과 정확도를 높히는 방향으로 NAS가 최적의 네트워크 구조를 찾도록 했으며, 이를 MixNets(S, M, L)로 정의함

Regular(Normal) Convolution

views
  • 일반적인 경우로, output channel인 n개만큼의 커널들을 이용해 sliding window로 구해진 feature map을 만들어내는 과정
    • 위 그림에서 순서대로 input, kernels(weight parameters), output feature map

Dilated(Atrous) Convolution

views
  • 일반적인 convolution과 동일하지만 dilation rate를 조절해 파라미터 증가 없이/혹은 최소화하여 conv의 receptive field(RF)를 늘릴 수 있음
    • 주로 image segmenataion에서 많이 사용함

Group(ed) Convolution

views
  • Input의 channel을 몇 개의 토막으로 나눠서 연산해 feature map을 만드는 경우
  • 위 그림은 group=2인 경우이며, 각 group에 대해 최종 결과는 생성된 feature map들을 concat해 완성됨
  • AlexNet이 GPU 메모리때문에 채널을 나눠서 연산을 했는데, 나중에 보니 이로인한 정확도 향상이 유의미했기때문에 ResNeXt나 ShuffleNet 등에서도 사용된 방법

Depthwise(Channel-wise) Convolution

views
  • Group convolution에서 group 수= input 채널 수, filter 수 = input 채널 수 인 경우와 동일함
  • 각 커널들은 depth 방향으로 1의 크기만을 갖고, 각 채널별로 연산되 만들어진 feature map들이 depth(channel) 방향으로 concat되어 최종 결과 feature map이 완성됨
views
  • 위 그림처럼 filter 개수를 조절해서 출력 채널 수를 늘릴 수 있음
    • Regular conv와 동일한 크기의 feature map을 만들게 하려면 depthwise conv에서 kernel들을 depth(channel)방향으로 원하는만큼만 쌓으면 됨
    • 연산량과 파라미터수 측면에서 동일 크기의 feature map을 만들 때 훨씬 이점이 큰 방식

Mixed Depthwise Convolution (MDConv)

  • 본 논문에서 제안하는 방식으로, depthwise conv에서 다양한 크기의 커널을 써서 depthwise conv를 수행함
    • 자세한 내용은 후술

Vanilla Depthwise Convolution

views
  • 위 수식은 총 m개의 채널이 있는 경우를 의미함

MDConv

  • 본 논문의 핵심 아이디어로, 앞의 group conv에 depthwise conv를 섞음
  • MDConv는 group으로 나뉜 입력 channel에 대해 각 group별 다른 kernel size를 적용시켜 depthwise conv를 수행
  • Input tensor $X$가 $g$개의 그룹으로 나뉠 때, 나뉘어진 tensor를 $\hat{X}$라고 하면 아래와 같음
    • $<\hat{X}^{(h, w, c_{1})}, …, \hat{X}^{(h,w,c_{g})}>$
      • 채널이 $c_1$부터 $c_g$로 총 g개로 나뉘어진 꼴
      • $c_1+c_2+…+c_g=c$
  • 이 때의 출력은 아래와 같이 정의됨
views
views
  • 각 그룹별로 k는 커널의 크기를 의미함
    • 순서대로 3x3, 5x5, …, 11x11의 커널 크기를 사용해 group conv를 수행
    • 각 group은 서로 다른 커널 크기를 사용함
    • 서로 다른 group에서 만들어진 feature map을 최종적으로 concat해 출력 feature map을 완성
  • 커널 크기가 달라질 경우 spatial 방향으로 feature map의 크기가 달라지는데??
    • Padding을 조절해서 같은 크기의 feature map이 만들어지도록 함
views
  • 좌측 상단의 일반적인 depthwise convolution과 다르게, 제안하는 MDConv는 그룹별로 모두 다른 커널 크기를 적용시켜 생성된 feature map을 concat
  • 아래는 Tensorflow를 이용한 MDConv 구현 코드

Design Choices

  • Group Size 가 g일때, $g=1$인 경우는 일반적인 depthwise convolution과 동일함
  • MobileNets 구조인 경우 $g=4$로 설정하는것이 일반적으로 가장 합리적인 선택이며, NAS를 이용해 생성된 모델들의 경우엔 1~5 사이의 다양한 값들을 이용할 때 더 좋은 정확도를 보임

Kernel Size Per Group

  • 이론적으로 각 그룹은 임의대로 결정된 커널 크기를 가짐
  • 논문의 저자들은 커널 크기를 3부터 2씩 증가시키며 3, 5, 7, 9, … 로 각 그룹이 사용하도록 설정함
    • 즉, 커널 크기는 2i+1로 결정됨
      • $g=4$인 경우 MDConv가 사용하는 커널 크기는 3x3, 5x5, 7x7, 9x9가 됨

Channel Size Per Group

  • 두 개의 채널 분리(channel partition) 방법이 있음
    • Equal partition(주로 사용됨)
      • 각 그룹의 채널을 동일하게 할당함.
      • $g=4$이고 input channel이 32일 때, {8, 8, 8, 8}로 채널이 분리됨
    • Exponential partition
      • 각 그룹의 채널이 2의 n승수대로 줄어들며 분할됨 (커널이 커질수록 채널이 점점 감소)
      • $g=4$이고 input channel이 32일 때, {16, 8, 4, 4}로 채널이 분리됨

Dilated Convolution

  • 큰 커널을 사용하기 위해 파라미터수를 유지하는 dilated convolution을 적용시켜봄
  • 하지만 정확도 결과는 별로였다고 함
views

실험 결과

MDConv Performance on MobileNets

  • ImageNet classification 결과
views
  • 위의 각 그래프에서 점들은 커널 사이즈를 의미하며, 왼쪽에서 오른쪽으로 3, 5, 7, 9, 11의 커널 크기를 사용했을때의 연산량과 정확도임
  • MobileNet v1과 v2 모두 일반적인 depthwise conv말고 MDConv 적용시켰을 때(커널 크기를 섞어 썼을 때) 성능이 제일 좋았음

Object detection

views
  • 대부분의 경우 제안하는 모델을 backbone으로 썼을 때 정확도가 높았음
    • 또한 파라미터수는 오히려 줄음

Ablation Study

  • MDConv for Single Layer
    • MobileNet v2에 대해 각 레이어를 MDConv로 대체했을 때의 정확도 변동률을 보여줌
      • MobileNet v2는 원래 3x3 conv만 사용하지만 실험 처음에 9x9에서 가장 효율이 좋았으므로 해당 레이어를 9x9 depthwise conv로 바꿨을 때의 정확도 변동을 실험함
      • 동일하게 9x9 depthwise conv말고 MDconv3579(커널 크기 3, 5, 7, 9)로 바꿨을 때의 정확도 변동을 실험
views
  • 실험 결과를 볼 때, stride=2일 때 kernel size를 키우거나 MDConv를 적용시켰을 때의 정확도 향상이 가장 좋았음
  • 전반적으로 MDConv를 적용시켰을 때의 정확도 향상이 가장 좋았음

Channel Partition Methods & Dilated Convolution

views
  • 위 그림에서 초록 선은 exponential partition, 빨간 선은 equal partition, 파란 선은 dilated conv 적용시켰을 경우를 의미
    • 각 point들은 오른쪽으로 갈수록 partition 갯수가 많아지거나, dilated rate가 커져 RF가 증가하게 됨을 의미
  • Channel partition의 경우 base model의 경우에 따라 exp가 나을수도, equal이 나을수도 있음
  • Dilated convolution은 성능향상에 도움 되지 않음

MixNets

  • 앞에서 MDConv에 의한 효과가 검증 되었으니, NAS(AutoML)를 이용해 MixNet을 찾아냄
    • MDConv-based model을 찾도록 함
  • 최근의 연구들과 동일하게 논문에선 ImageNet train set을 이용해 직접적으로 3개의 모델을 NAS가 뽑도록 함
    • ImageNet validation set과 transfer learning dataset 결과를 이용해서 선택
    • 정확하고 연산량이 적을수록 score를 크게 부여하여 고르게 함

Architecture

  • 네트워크의 초기엔 연산량 보존을 위해 작은 크기의 커널들을 사용하게 했으며, 뒤쪽으로 갈수록 정확도 향상을 위해 큰 크기의 커널 사이즈를 사용함
  • MixNet-M이 더 큰 커널을 사용하며, 이로 인해 정확도는 좋지만 연산량(FLOPs)이 더 큼
views

MixNets Performance on ImageNet

views
  • 위에서 확인 가능하듯이 제안하는 MixNets가 파라미터를 적게 사용하면서도 높은 정확도를 보임
  • 논외로, 우측 그림에선 전반적으로 hand-crafted model들보다 AutoML을 사용해 만들어진 모델들의 성능이 좋은것을 확인 할 수 있음

Transfer Learning Performance

  • 요즘 논문들 추세로, 제안하는 방법의 성능을 classification + object detection + transfer learning으로 3단계로 검증함
views
  • 실험에선 MixNet S와 M만 사용(왼쪽 점이 S, 오른쪽 점이M)
  • 위 그림에서 CIFAR-10과 CIFAR-100의 실험 결과가 가장 유의미함
    • 다른 모델과 확연하게 차이날정도로 결과가 좋은것을 알 수 있음

Conclusion

  • 논문에선 depthwise convolution의 kernel size에 대한 영향력을 실험했고, 그 결과 단일 kernel size 사용의 한계점을 확인했음
  • 논문에선 단일 conv operation에서 다양한 kernel size를 사용할 수 있는 MDConv를 제안함
  • MDConv는 일반적인 depthwise convolution을 간단하게 교체해 기존의 모델들에 손쉽게 적용 가능하며, 정확도가 향상되고 모델의 효율이 좋아짐(정확도는 커지고 모델 파라미터수와 연산량은 줄어듦)
  • 마지막으로, NAS를 이용해 MixNets(S, M, L)를 제안했으며, MixNets은 최근의 mobile CNN들과의 성능 비교했을 때 정확도와 효율 측면에서 매우 뛰어난 성능을 보였음

Self-training with Noisy Student improves ImageNet classification

|

Self-training with Noisy Student improves ImageNet classification

Original paper: https://arxiv.org/pdf/1911.04252.pdf

Authors: Qizhe Xie, Eduard Hovy, Minh-Thang Luong, Quoc V. Le

Introduction

  • 앞에서 다뤘던 EfficientNet 논문을 기반으로 ImageNet 데이터셋에 대해 SOTA 성능을 갱신
  • 실험 결과를 먼저 보면 아래와 같음
views
  • EfficientNet의 실험 결과 그래프와 굉장히 유사한 모양의 그래프
  • EfficientNet의 성능이 기존 방법들에 비해 월등히 높아 성능 향상이 적은것 같지만, 그래도 SOTA 성능
  • 또한 SOTA 성능 달성을 위해 사용한 방법이 굉장히 간단해서 의미있는 결과임
  • 본 논문은 NAS처럼 AutoML로 만들은 네트워크를 사람이 튜닝해 성능을 개선시키고, Web-scale의 수십억 장의 데이터를 활용해 self-training 하도록 하는 방식으로 최고성능을 달성

Self-training with Noisy Student

  • 본 논문의 핵심 아이디어는 아래 사진으로 간단하게 설명 가능

Self-training

views
  • Labeled 데이터셋인 ImageNet을 이용해 teacher model을 학습시킴
  • 그 뒤, Unlabeled dataset인 JFT-300M을 teacher model에 흘려보내 prediction값을 구한 되, 이를 pseudo label로 사용함
  • 이렇게 얻은 JFT-300M 데이터셋의 pseudo label 과 기존에 사용하던 ImageNet의 label을 이용해 student model을 학습시킴
  • 여기서 student model의 학습에 noise성분을 추가해서 학습시킴
  • 이 과정을 반복하며 iterative하게 학습시키면 알고리즘이 끝남

  • Teacher-student 구조를 보면 Knowledge Distillation을 떠올릴 수 있음
  • 하지만 다양한 Knowledge Distillation 방법들과 달리 teacher model로 추론된 pseudo label을 추가적으로 student network가 학습하게 된다는 차이점이 존재

Noise 기법

  • Self-training 기법 외에도 Noisy Student Model이 이 논문의 또다른 핵심 아이디어
  • Student Model을 학습시킬 때 아래와 같은 Random한 학습 기법들을 사용함

Fix train-test resolution discrepancy

  • 최근 좋은 성능을 보인 Fixing the train-test resolution discrepancy 또한 적용시킴
    • 첫 350epoch동안 작은 resolution으로 학습
    • 이 후 1.5epoch동안 unaugmented labeled images에 대해 큰 resolution으로 fine-tuning 시킴
  • 위 방법을 제안한 논문과 유사하게 fine-tuning동안 shallow layer를 freeze시켜서 실험함

Iterative Training

  • 반복적으로 새로운 pseudo label을 만들고, 이를 이용해 student model을 학습시키는 방법
    • 이 과정에서 약간의 트릭이 들어감
  • 트릭에 사용된 3가지 EfficientNet의 모델은 각각 B7, L0, L1, L2이며 뒤로 갈수록 모델의 size가 커지는것을 의미함
  • 각 모델에 대한 세부 구조는 아래에서 확인 가능
views
  • 처음엔 teacher와 student 모두 EfficientNet-B7로 학습시킴
  • 그 뒤, teacher는 EfficientNet-B7, student는 EfficientNet-L0로 학습
  • 다음에 teacher는 EfficientNet-L0, student는 EfficientNet-L1로 학습
  • 다음에 teacher는 EfficientNet-L1, student는 EfficientNet-L2로 학습
  • 마지막으로 teacher는 EfficientNet-L2, student는 EfficientNet-L2로 학습

실험결과

  • Appendix의 추가 결과 외에 본문에 있는 결과 위주로 설명됨

ImageNet result

views
  • ImageNet 데이터셋에 대해 다른 선행 연구들을 모두 제치고 가장 높은 Top-1, Top-5 Accuracy를 달성
  • 가장 좋은 성능을 보였던 Noisy Student(L2)는 기존 SOTA 성능을 달성했던 모델들보다 더 적은 파라미터수를 가지며, 학습에 사용된 Extra Data의 크기도 더 적고, Label도 사용하지 않고 달성한 결과라 더 유의미함
views
  • 위 그림은 Iterative Training을 적용시키지 않은 결과
  • EfficientNet-B0부터 EfficientNet-B7까지 Noisy Student 알고리즘으로 학습 시켰을 때의 결과를 보여줌
  • 제안하는 알고리즘들이 모든 경우에서 효과적임을 보여줌

Robustness 실험결과

  • 모델의 신빙성, robustness측정을 위한 test set인 ImageNet-C, ImageNet-P, ImageNet-A를 이용한 실험결과
views
  • ImageNet-C, ImageNet-P 데이터셋은 (Benchmarking Neural Network Robustness to Common Corruptions and Perturbations)[https://arxiv.org/pdf/1903.12261.pdf] 에서 제안되었으며, 영상에 blurring, fogging, rotation, scaling등 흔히 발생 가능한 왜곡등의 변화요소를 반영시켜 만든 데이터셋
  • ImageNet-A 데이터셋은 (Natural Adversarial Examples)[https://arxiv.org/pdf/1907.07174.pdf]에서 제안됐으며 기존 classification network들이 공통으로 분류를 어려워하는 실제 natural image들을 모아 만든 데이터셋
views
  • 각 데이터셋에 대한 자세한 실험결과는 위 사진에서 확인 가능함
  • ImageNet-C의 평가에 사용된 mCE 지표와 ImageNet-P의 평가에 사용된 mFR 지표는 낮을수록 좋은 결과를 의미함
    • 본 논문에서 제안하고 있는 방식이 기존 모델들 대비 좋은 성능을 보여주고 있음(mCE와 mFR 모두 가장 낮음)
  • ImageNet-A에 대해선 가장 높은 정확도를 보여줌
    • Noisy Student 방식처럼 외부의 데이터셋을 사용하는 ResNeXt-101 WSL모델은 ImageNet-A의 Top-1 accuracy가 매우 낮음(Top-1 acc 16.6%)
    • 논문에서 제안하는 Noisy Student(L2)의 경우 굉장히 높은 정확도(Top-1 acc 74.2%)를 보임
    • EfficientNet-L2 역시 괜찮은 정확도(Top-1 acc 49.6%)를 보임
    • 이는 EfficientNet 자체가 natural adversarial example에 꽤 견고한 모델임을 보여주며, 견고한 baseline architecture에 Noisy Student를 적용시킨다면 결과가 훨씬 더 좋아질 수 있음을 의미함

Adversarial Attack 실험결과

  • Adversarial attack에 얼마나 robust하게 버티는지 평가한 실험
    • Adversarial attack은 네트워크가 오작동하게 만드는 noise 성분으로 생각하면 됨
      • 사람이 보기엔 adversarial attack을 당한 영상도 전과 동일하게 판단되지만, 딥러닝 네트워크는 adversarial attack받은 영상은 전혀 다른것으로 판단
      • 참고: https://www.slideshare.net/NaverEngineering/ss-86897066
  • Adversarial attack에 많이 사용되는 FGSM공격을 EfficientNet에 가했을 때 성능을 측정하고, EfficientNet에 Noisy Student를 적용시켰을 때의 성능을 비교
views
  • 기본 EfficientNet과 Nosiy Student가 적용된 모델을 비교했을때, 전반적으로 Noisy Student 모델이 adversarial attack에 robust함을 보여줌

결론

  • ImageNet 데이터셋의 accuracy 증가에 초점을 맞춰 수행한 연구지만, 부가적으로 모델의 robustness가 매우 증가한점이 인상깊음

Image Style Transfer Using Convolutional Neural Networks

|

Image Style Transfer Using Convolutional Neural Networks

Original paper: https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Gatys_Image_Style_Transfer_CVPR_2016_paper.pdf

Authors: Leon A. Gatys, Alexander S. Ecker, and Matthias Bethge

  • 참고 글
    • https://blog.lunit.io/2017/04/27/style-transfer/
    • https://www.popit.kr/neural-style-transfer-%EB%94%B0%EB%9D%BC%ED%95%98%EA%B8%B0/

Introduction

  • Style transfer는 content image와 style image를 이용해 content image의 화풍을 style image대로 바꾸는 작업
    • 이미지의 주된 형태는 content image를 따름
    • 스타일은 style image와 유사하게 바꿈
views
  • 위 그림에서 주택사진을 content image로 했을 때, 각 style image에 따른 실험 결과를 보여줌
    • 주택의 형태와 배치는 유지되면서 각 화풍만 작품(style image)과 유사하게 바뀜
  • Neural network를 이용한 style transfer의 과정은 아래와 같이 두 분류로 구분됨
    • ImageNet 등으로 pretrained된 네트워크를 이용한 방법
      • Content image와 style image를 네트워크에 통과시킬 때 나온 각각의 feature map을 저장
      • 새롭게 합성될 영상의 feature map이 content image와 style image로부터 생성된 feature map과 비슷한 특성(분포)을 갖도록 영상을 최적화
        • 장점: 이미지 2장(content, style image)으로 style transfer 가능
        • 단점: 매번 이미지를 새롭게 최적화해야하므로 시간이 오래걸림
    • Style transfer network를 학습시키는 방법
      • 서로 다른 두 도메인(content image와 style image)의 영상들이 주어졌을 때, 한 도메인에서 다른 도메인으로 바꿔주도록 네트워크를 학습시킴
        • 장점: 네트워크를 한 번 학습시킨 후 새로운 이미지에 적용할 땐 feed forward만 해주면 됨(빠름)
        • 단점: 새로운 네트워크를 학습해야 하므로 각 도메인 별로 다수의 영상이 필요하며, 네트워크 학습에 많은 시간이 소요됨
      • GAN 모델을 이용하는 방법

Image Style Transfer Using Convolutional Neural Networks

views
  • 본 논문에서 제시한 방법은 content에 대한 정보를 담고있는 $I_{content}$와 style을 담고 있는 $I_{style}$을 입력으로 받음
  • 이 두 영상으로부터 각각의 특성을 담고 있는 새로운 영상인 $I_{output}$을 만들어내는것이 최종 목적

  • 이를 위해 ImageNet pretraineyd network를 사용해 $I_{content}$, $I_{style}$에 대해 각각의 feature map을 추출
  • $I_{output}$의 feature map과는 content가 비슷해지도록, $I_{style}$과는 style이 비슷해지도록 $I_{output}$의 픽셀들을 최적화(optimize)
    • 모든 과정에서 네트워크 자체의 weight parameter들은 변하지 않음(feed forward만 수행)

사용된 네트워크

  • 논문에서는 특징 추출용 feature extractor로 ImageNet pretrained VGG19를 사용
views
  • Pretrained network에 아래의 처리를 수행
    • 네트워크 정규화(네트워크 가중치 정규화)
    • Average pooling 적용(원래의 max pooling 대신 적용)

네트워크의 어느 부분에서 만들어진 feature map을 사용할 것인가

views
  • 실제로 CNN의 깊은 부분(뒷단)에서 추출된 feature map과 얕은 부분(앞단)에서 추출된 feature map은 서로 다른 특성을 가짐

Content feature

  • 입력 이미지 p와 convolution layer l에 대해 아래와 같이 feature map, F를 만들어 낼 수 있음
views
views
레이어별 feature
  • 위 그림에서 conv1_2(a), conv2_2(b), conv3_2(c), conv4_2(d), conv5_2(e) 레이어에서 입력 이미지를 재구성한 영상을 보여줌
    • 레이어가 깊어질수록(d, e) 픽셀 수준의 정보는 사라지지만 입력 이미지가 가진 semantic 정보는 그대로 유지됨(추상화가 많이 이루어짐)
    • 반면 얕은 레이어일수록(a, b, c) 입력 이미지와 거의 동일함
    • 따라서 얕은 레이어에서 생성된 feature map을 이용해 content feature를 추출

Style feature

  • Style feature는 “Texture Synthesis Using Convolutional Neural Networks, Leon A. Gatys”의 Gram matrix를 기반으로 생성
    • Style과 texture는 공간정보와 무관해야 함
    • 따라서 각 레이어의 feature map 사이의 상관관계(correlation)를 나타내는 Gram matrix를 사용
  • 레이어 l에서의 Gram matrix는 아래와 같이 정의됨
    • Style image: $\vec{a}$
    • Layer: $l$
    • $F^l$: l번째 layer의 feature map
    • $G_{ij}^{l}$: $\sum_k F_{ik}^{l}F_{jk}^{l}$
    • Gram matrix at layer $l$, $G^l$: $[G_{ij}^{l}]$
  • Style feature의 경우 단일 레이어가 아니라 여러 레이어에서 나온 feature map들의 상관관계를 동시에 고려함
  • 이를 통해 이미지가 전역적으로 가진 레이아웃 정보가 아닌, 정적인(stationary) 정보를 다수의 스케일을 고려한 정보를 얻을 수 있음
  • 위의 레이어별 feature 그림에서는 ‘conv1_1(a)’, ‘conv1_1, conv2_1(b)’, ‘conv1_1, conv2_1, conv3_1(c)’, ‘conv1_1, conv2_1, conv3_1, conv4_1(d)’, ‘conv1_1, conv2_1, conv3_1, conv4_1, conv5_1(e)’ 레이어에서 입력된 이미지를 재구성한 결과를 보여줌
    • 깊은 레이어에 대한 정보가 많이 포함될수록 이미지가 가진 전역적인 레이아웃 정보가 아닌, 마지 이미지가 줌인 되는듯한 스타일을 얻어내는 것을 확인 할 수 있음

Loss function의 정의

  • 실제 style transfer 알고리즘은 아래와 같음
views
Style transfer 알고리즘
  • Content image p, style image a에 대해 합성할 이미지인 x를 noise image로 초기화
  • 각 이미지 p, a, x를 ImageNet pretrained VGG19에 foward pass 수행
  • 이미지 p와 x에 대해서 content feature 기반의 content loss 계산
  • 이미지 a와 x에 대해서 style feature 기반의 style loss 계산
  • Content loss와 style loss를 합해 total loss 계산
  • Total loss를 back propagation해서 noise image x를 업데이트
    • 여기서 네트워크 자체의 weight parameter는 업데이트 되지 않으며, 생성하려는 입력 이미지 x의 픽셀 값들만 아래와 같이 업데이트됨
    • $\vec{x}=\vec{x}-\lambda\frac{\partial L_{total}}{\partial \vec{x}}$

Content loss

  • Content image p와 합성할 이미지 x 사이의 content loss는 아래와 같이 계산
    • 먼저 content image p에 대해
    • Content image p를 네트워크에 feed forward
    • Content image p를 입력으로 feature map들이 계산된 네트워크에서 레이어 l의 feature map을 P라고 할 때, P는 아래와 같이 정의됨
      • $P^l$, where $P_{ij}^{l}$ is the activation value of $i^{th}$ filter at position $j$ in layer $l$
    • 마찬가지로 합성할 영상 x에 대해서도 동일하게 정의
    • 합성할 영상 x를 네트워크에 feed forward
    • 합성할 영상 x를 입력으로 feature map들이 계산된 네트워크에서 레이어 l의 feature map을 F라고 할 때, F는 아래와 같이 정의됨
      • $F^l$, where $F_{ij}^{l}$ is the activation value of $i^{th}$ filter at position $j$ in layer $l$
  • 레이어 l에서의 content loss는 아래와 같이 정의됨
    • $L_{content}(\vec{p}, \vec{x}, l)=\frac{1}{2}\sum_{i, j}(F_{ij}^l-P_{ij}^l)^2$

Style loss

  • Style image a와 합성할 이미지 x 사이의 style loss는 아래와 같이 계산됨
    • Style image a에 대해
    • Style image a를 네트워크에 feed forward
    • Style image a에 대한 레이어 l에서의 Gram matrix A는 아래와 같이 정의됨
      • $A^l$, where $A_{ij}^l$ is the inner product between $F_i^l$ and $F_j^l$ in layer $l$
    • 동일하게 합성될 영상 x에 대해
    • 합성될 영상 x를 네트워크에 feed forward
    • 합성될 영상 x에 대한 레이어 l에서의 Gram matrix G는 아래와 같이 정의됨
      • $G^l$, where $G_{ij}^l$ is the inner product between $F_i^l$ and $F_j^l$ in layer $l$
  • 레이어 l에서의 style loss는 아래와 같이 정의됨
    • $E_l=\frac{1}{4N_{l}^{2}M_{l}^{2}}\sum_{i,j}(G_{ij}^{l}-A_{ij}^{l})^2$, where $N_l$ is number of feature maps at layer $l$, $M_l$ is height $\times$ width of feature maps at layer $l$
  • Style feature의 경우 여러 레이어를 동시에 사용하므로 total style loss는 아래와 같음
    • $L_{style}(\vec{a}, \vec{x})=\sum_{l=0}^{L}w_l E_l$, where $w_l$ is weighting factors of the layer to the total loss

Total loss

  • Content loss와 style loss를 결합한 total loss는 아래와 같음
    • $L_{total}(\vec{p}, \vec{a}, \vec{x})=\alpha L_{content}(\vec{p}, \vec{x})+\beta L_{style}(\vec{a}, \vec{x})$
  • 여기서 content loss와 style loss에 대해 각각 가중치를 적용시킴
    • 가중치를 어떻게 하느냐에 따라 조금 더 content를 살릴지, style를 살릴지 결정 할 수 있음
views
가중치 조절에 따른 합성된 이미지 x의 결과
  • Style loss에 가중치를 크게 주면(좌측 상단) 스타일 중심적인 이미지 x가 생성됨
  • Content loss에 가중치를 크게 주면(우측 하단) 컨텐츠 중심적인 이미지 x가 생성됨

구현

  • https://www.popit.kr/neural-style-transfer-%EB%94%B0%EB%9D%BC%ED%95%98%EA%B8%B0/

Image Classification 연구동향

|

Image Classification 연구동향

Image Classification 연구동향

  • 2012년 AlexNet을 기점으로 많은 종류의 classification network들이 제안됨
  • 시간이 흐를수록 연구방향이 바뀌고 있기에 그 흐름을 간단히 정리하면 아래와 같음
    • 2012년 - 2016년: AlexNet, VGG, GoogLeNet, ResNet, DenseNet, SENet 등 사람이 이런저런 시도를 하며 그럴싸한 네트워크를 디자인
    • 2016년 말 - 2018년: AutoML을 이용한 Neural Architecture Search(NAS)를 이용해 최적의 구조를 찾고, 탐색에 필요한 시간을 획기적으로 줄이고, 줄인 만큼 큰 구조를 만들어내는데 집중
      • Neural Architecture Search with Reinforcement Learning (2016.11)
      • NASNet, ENAS, PNASNet, DARTS, AmoebaNet 등 많은 연구 수행
    • 2018년 - 2019년 초중반: AutoML에서 찾은 구조를 기반으로 사람이 튜닝을 하며 성능을 향상시킴
      • GPipe, EfficientNet 등 많은 연구 진행
    • 2019년 초중반: 수십억장의 web-scale extra labeled images등 무수히 많은 데이터를 잘 활용하여 ResNext로도 SOTA 달성
      • Billion-scale semi-supervised learning for image classification (2019.05)
      • Fixing the train-test resolution discrepancy (2019.06)
    • 2019년 말(현재): Labeled web-scale extra images대신 web-scale extra unlabeled images를 써서 self-training을 활용해 SOTA 달성
  • 2016년 NAS 연구가 처음 공개된 이후 많은 논문들이 쏟아져나옴
  • NAS 연구 초반엔 비현실적인 GPU cost를 요구하는 네트워크 구조들이였기에 꿈만 같은 연구로 여겨졌음
  • 하지만 불과 1년만에 하나의 GPU로 하루만에 학습을 시킬 수 있는 방법들이 제안되며 연구가 굉장히 활발하게 수행됨

  • AutoML로 찾은 모델을 사람이 튜닝하여 성능을 대폭 개선시키는 연구들도 활발히 수행됨
  • 2019년엔 Web-Scale의 수십억 장의 데이터를 활용해 모델의 임계 성능을 끌어올리기도 함

  • Image Classification 분야는 다른 분야에 비해 굉장히 많은 연구가 굉장히 빠르게 진행되는 중
  • 현재 ImageNet Top-1 Accuracy가 가장 높은 결과가 87.4% 수준으로, 머지않아 90%를 넘기는 논문이 나올 것으로 예상됨

Gaussian YOLOv3:An Accurate and Fast Object Detector Using Localization Uncertainty for Autonomous Driving

|

Gaussian YOLOv3:An Accurate and Fast Object Detector Using Localization Uncertainty for Autonomous Driving

Original paper: https://arxiv.org/pdf/1904.04620.pdf

Authors: Jiwoong Choi, Dayoung Chun, Hyun Kim, and Hyuk-Jae Lee (서울대, 서울 과기대)

  • 참고 글
    • https://hoya012.github.io/blog/Tutorials-of-Object-Detection-Using-Deep-Learning-GaussianYOLOv3/
  • 공식 코드
    • C 기반의 코드
    • https://github.com/jwchoi384/Gaussian_YOLOv3
  • ICCV2019에 발표된 논문으로, Yolo v3 기반의 기존 object detection모델이 갖는 문제를 개선하기 위한 연구를 수행한 논문
  • 자율주행 환경에서 사용하기 위해선 object detection 모델이 실시간으로 동작해야 하면서도 높은 정확도를 가져야 함
  • 이러한 관점에서 어떻게 연구를 수행했는지 설명

Indroduction

  • ICCV2019에 40편 이상 되는 object detetion 논문들이 accept 됨
    • 최근 핫한 연구분야
  • 여러 논문들이 나오면서 정확도 지표는 과거 R-CNN, OverFeat들에 비해 굉장히 높아졌음
  • 하지만 object detection을 실생활에 적용하는 대표적인 case인 자율주행에 대해서는 실시간 동작이 필수요소
    • 일반적으로 실시간 동작을 위해선 30FPS의 동작이 필수
  • 논문에서는 실시간 동작이 가능한 1-stage detection model인 YOLOv3를 기반으로 연구를 수행

  • 또한 자율주행에서는 mislocalization(False Positive, 오탐지)가 굉장히 위험한 결과를 초래할 수 있음
    • False Positive로 인해 차량이 갑자기 급정거를 하며 사고로 이어질 수 있기 때문
  • 하지만 대부분의 논문들은 오로지 mAP 수치만 높히려고 하지, False Positive 자체를 줄이는 것을 목표로 하지 않음
  • 이 논문에서는 정확도(mAP)를 높이면서 동시에 자율주행에 맞게 False Positive를 줄이는 방법을 제안

  • 이 논문에서 주목할 점
    • Object detection 알고리즘들의 output은 bounding box coordinate, class probability 인데, class에 대한 정보는 확률 값으로 출력되지만 bounding box coordinate들은 deterministic한 값을 출력하기 때문에 bounding box의 예측 결과에 대한 불확실성을 알 수 없음
    • 저자는 이러한 점에 주목해서 bounding box coordinate에 Gaussian modeling을 적용하고 loss function을 재설계해 모델의 정확도를 높히고 localization uncertainty를 예측하는 방법 을 제안

Gaussian YOLOv3

Gaussian Modeling

  • Gaussian YOLOv3의 설명에 앞서 기존의 YOLOv3에 대해 정리한 그림은 아래와 같음
views
  • Network 구조는 YOLOv3 논문등을 확인
  • YOLOv3의 예측 결과는 각 image grid마다 4개의 bounding box coordinate, objectness score, class score가 한 묶음이 되어 하나의 예측 box를 그리게 됨
    • Objectness score는 이 bounding box 안에 object가 존재하는지를 나타내는 확률값
    • Class score는 존재하는 object가 모든 class별로 해당 class일 확률을 나타내는 값
    • Bounding box coordinate를 구성하는 t parameter들은 예측된 box의 중심 좌표, size를 나타내는 값이며 하나의 정해진 값을 나타냄
  • Objectness score, class score는 확률 값 이며 thresholding등을 통해 낮은 확률을 갖는 값들을 걸러낼 수 있음
  • Bounding box coordinate 는 확률 값이 아니기때문에 예측된 box의 좌표들이 얼마나 정확한지, 아닌지를 알 수 없음
  • 이를 해결하기 위해 bounding box coordinate를 구성하는 4개의 t parameter들에 Gaussian Modeling을 적용한 모델이 Gaussian YOLOv3
views
Gaussian Modeling for YOLOv3
  • 주어진 test input x에 대한 output y의 Single Gaussian Model은 위 그림의 (1)과 같이 나타 낼 수 있음
  • YOLOv3의 구조에 맞게 이를 적용한 방식은 (2)~(4)
    • 각 coordinate의 mean값은 예측된 bounding box 좌표를 의미
    • Variance 값은 uncertainty를 의미
  • 즉, variance가 작으면 확실한 bounding box라고 예측한 경우고, variance가 크다면 예측된 bounding box가 불확실한 것을 의미
  • Gaussian Modeling은 기존 YOLOv3의 detection layer만 수정하면 되고, 연산량 자체도 미미하게 증가하기 때문에 처리 속도가 거의 유지되면서도 정확도만 더 향상시킬 수 있음
    • 512x512 input 기준 YOLOv3: $99\times10^9$ FLOPS, Gaussian YOLOv3: $99.04\times10^9 FLOPS$

Reconstruction of loss function

  • 기존 YOLOv3은 bounding box regression에 sum of the squared error loss function을 사용
  • Gaussian YOLOv3은 bounding box coordinate에 Gaussian Modeling을 적용해 Gaussian parameter로 변환했기 때문에 이에 맞게 loss function을 재설계 해야 함
views
Loss function of Gaussian YOLOv3
  • 논문에서는 negative log likelihood(NLL) loss를 이용했으며, 이는 위 그림의 (5)에서 확인 가능
  • GT의 bounding box는 위 그림의 (6)~(9)를 통해 계산되며 각 식의 notation은 논문 참조

  • 기존 YOLOv3의 sum of the squared error loss는 학습 과정에서 noisy한 bounding box에 대한 패널티를 줄 수 없음
  • 새로 구성한 loss function의 경우 noisy bounding box에 대한 uncertainty를 반영하게 되면서 패널티 부여 가능해짐
  • 즉, 데이터셋이 noisy하더라도 uncertainty를 이용하기 때문에 믿을 수 있는 데이터에 집중하는 효과를 얻을 수 있음
  • 또한 전반적인 정확도 향상도 얻을 수 있음

Utilization of localization uncertainty

  • Detection criterion에 localization uncertainty를 적용
  • 예측한 bounding box안에 어떤 물체가 있는지 계산할 때 objectness score와 class score를 곱해서 사용하는데, 여기에 $(1-Uncertainty_{avg})$를 곱해줌
    • 이를 통해 False Positive를 줄이고, 전반적인 정확도를 향상 시킬 수 있음
    • Uncertainty는 각 coordinate의 uncertainty를 평균내서 사용

실험결과

실험 데이터셋과 실험환경

  • 논문에서는 자율주행 환경에 적합한 KITTI 데이터셋과 BDD 데이터셋을 이용
views
KITTI 데이터셋(좌측), BDD 데이터셋(우측) 예시
  • KITTI 데이터셋은 car, cyclist, pedestrian 3가지 class로만 구성되어있고, 7,481 장의 학습 셋과 7,518장의 테스트 셋으로 구성됨
  • 테스트 셋은 GT가 존재하지 않기때문에 학습 셋의 절만을 검증용 셋으로 사용함

  • BDD 데이터셋은 bike, bus, car, motorcycle, person, rider, traffic light, traffic sing, train, truck의 총 10가지 class로 구성
  • 학습, 검증, 테스트 셋이 각각 7:1:2로 나뉘어있음

  • 각 데이터셋마다 주로 사용되는 IoU thresholdㄱ밧은 선행 연구들과 동일한 값을 사용했으며, 학습에 사용한 hyper parameter, 실험환경 등은 논문 참조

실험결과

views
IoU vs Localization uncertainty on KITJTI and BDD validation sets
  • 위는 KITTI, BDD validation dataset중 car class에 대해 예측된 bounding box들의 IoU에 따른 localization uncertainty를 그래프로 나타낸 결과
  • IoU가 높을수록 localization uncertainty는 낮으며, 두 값이 반비례하는 경향을 보임
  • 이를 통해 제안하는 localization uncertainty가 실제로 예측된 bounding box의 confidence를 잘 나타내고 있음을 확인 가능
views
Gaussian YOLOv3 성능 비교
  • 기존 방법들과 성능을 비교할 때 더 좋은 mAP 점수를 보이며, 특히 baseline인 YOLOv3에 비해 1FPS가량의 미묘한 속도감소만으로 정확도를 크게 높일 수 있었음
  • Table4를 보면 YOLOv3 대비 True Positive도 늘었고 False Positive가 약 40%이상 감소된 것을 확인 가능
  • 즉, Bounding box coordinate에 uncertainty를 부여함으로써 False Positive를 줄이겠다는 논문의 목적이 잘 달성된 것을 확인 가능

  • 다만, bounding box coordinate에 uncertainty를 부여하면서 얻을 수 있는 효과중 하나인 noisy data에 robust해진다는 점을 실험적으로도 그런 경향을 확인할 수 없음
  • 이를 입증해기 위해선 noisy label을 담고 있는 object detection용 public dataset이 필요하기 때문에 본 논문에서는 실험 불가능하지만, 추후 이러한 데이터셋이 나온다면 적용해서 실험 결과를 살펴 볼 수 있음

결론

  • 자율주행을 타겟으로 실시간 동작하면서 동시에 자율주행에 치명적인 False Positive를 효과적으로 줄이는 방법을 제안
  • 대표적인 자율주행 데이터셋에 대해 높은 성능을 보여주고 있음을 확인 할 수 있음