2017년 5월 19일 금요일

CNN, Convolution

Convolutional Neural Network

Background

  • 기존 다계층 신경망(MLP, multi-layered NN)의 문제점
    • 입력데이터가 조금만 달라지더라도(이미지 크기 변화; 회전; 변형 등), 새로운 학습을 하기 않으면 좋은 성능이 나오지 않음
      • 따라서 많은 raw data로 이루어진 학습 데이터를 매번 학습하기에는 많은 자원 및 시간 소요.
      • Training Time; Network Size; Number of free parameters
    • 종래 MLP는 입력 이미지의 모든 픽셀 값이 위치에 상관없이 동일 수준의 중요도를 갖는다고 전제함. 
      • 이러한 이미지에서의 공간적 데이터 특징(즉, local receptive field)을 무시하여 fully connected network을 이용할 경우, free parameter(즉, weight, bias)의 개수가 많아지고, overfitting 가능성이 높아짐.
      • CNN에서는 visual cortex(시각 대뇌 피질)을 본따, 이미지 내의 픽셀들이 그 주변에 있는(즉, 공간적으로 인접한) 픽셀들과만 연관성이 높을 뿐(locality = local connectivity)이며, 그것을 느낄 수 있는 수용영역(receptive field)의 크기가 제한적이라는 점을 활용하고 있음.
  • CNN이 갖는 특징
    • 공간적으로 인접한 신호들에 대한 correlation 관계(locality)를 비선형 필터(=convolutional kernel)를 이용하여 추출
    • 여러 개의 필터를 적용함으로써 다양한 local 특징(=feature map) 추출 가능
    • Subsampling(pooling)을 통해 입력 데이터 크기를 줄여나감; 반복적인 필터링과 결합함으로써 global feature를 얻을 수 있음
      • 이 때, 전체 입력에 대해 적용하는 free parameter(weight, bias) 공유를 통해 parameter 수를 줄여서 학습시간 및 overfitting을 낮춤
    • 즉, 입력 데이터의 위상(topology) 변화에 무관한(또는 강인한) 항상성(invariance) 있는 특징(salient feature)을 도출할 수 있음.
    • 그러나, CNN 역시 depth가 깊어지게 되면 다음의 문제를 겪게됨.
      • vanishing/exploding gradient로 인해 학습 속도 떨어짐.
      • 파라미터 수의 증가로 인한 overfitting 가능성 및 에러 발생 높아짐.

Concepts

Terms

  • convolutional kernel = filter = patch
  • receptive field
    • 정보처리와 관계되는 세포에 대해 응답을 일으키는 자극의 영역. 외부 자극이 전체적인 영향을 주는 것이 아니라, 특정 영역에만 영향을 준다는 의미.
    • ConvNet 관점에서 receptive field의 크기 = kernel의 크기 = w x h x d

Convolution


  • 1x1 convolution
    • C2개의 feature map을 그보다 적은 수의 C3개의 (즉, C2>C3) feature map으로 줄일 수 있어 다음 단계에서 처리해야 하는 파라미터 개수(=연산량)을 감소시킬 수 있음
    • 단순한 matrix multiply를 적용할 수 있게 되어 더 빠른 계산 가능

CNN Basic

  • Conv Nets: A Modular Perspective (2014. July): [매우 친절한 설명]
    • convolutional layer: 입력 데이터를 특정 segment 별로 살펴봐서, certain features를 찾는 과정.
    • pooling layer: 직전 layer의 small blocks에서의 feature를 병합
      • max-pooling layer: kind of “zoom out”; takes the maximum of features over small blocks of a previous layer. The output tells us if a feature was present in a region of the previous layer, but not precisely where.
  • ConvNet Layers and Architectures
    • 개략적인 설명.
  • Michael Nielsen's book chapter 6. Deep learning
    • CNN의 세부적인 개념 설명.

CNN hyper-parameter


  • Filter = convolutional kernel
    • 필터의 개수
      • (시스템의 균형을 잡아준다는 의미에서,) 각 layer에서의 연산 시간/량을 일정하게 유지하는 방향: 각 layer의 연산 시간 = (pixel 개수) x (필터 개수) x (필터당 연산시간)
    • 필터의 크기
      • 입력 이미지가 큰 경우, (또는 첫번째 계층의 경우) 11x11, 15x15 등 큰 크기의 필터가 이용됨
      • 32x32, 28x28 등 이미지의 경우 5x5가 주로 사용됨
      • 큰 크기의 필터 1개 사용하는 것보다는 작은 크기의 필터 여러개를 중첩 사용하는 것이 낫다고 함.(즉, 7x7 1개 보다는 3x3 필터 3개 중첩이 낫다고 함): non-linearity에 대한 특징을 좀더 잘 찾아낼 수 있으며, 연산량도 더 적어지기 때문이라고 함.
    • 필터의 stride
      • convolution 수행 시 건너뛰는 픽셀의 수
      • 입력 이미지의 크기가 클 경우, 연산량을 줄이기 위한 목적으로 입력 계층에 가까운 계층에 적용
      • 일반적으로는 stride는 1로 둔 뒤, pooling을 통해 subsampling을 거치는 방식의 결과가 낫다고 함.
    • zero-padding
      • convolution 연산의 경우 경계 처리문제로 인해, 출력되는 feature map의 크기가 입력 이미지보다 작아지게 됨.
      • 입력의 경계면에 0을 추가함으로써, convolution 후의 이미지 크기를 입력의 크기와 동일하게 유지할 수 있음.
      • 또한 경계면의 정보까지 살릴 수 있음

    Papers

    • Backpropagation applied to handwritten zip code recognition (LeCun, 1989)
      • CNN이 처음 소개된 논문; 필기체 Zip Code 인식을 위한 프로젝트에서 출발.
    • Gradient-based learning applied to document recognition (LeCun; Bengio, 1998)
      • CNN 구조(LeNet-5)를 설명
      • 32x32 필기체 입력 데이터를 10개의 클래스로 분류
    • Hierarchical neural networks for image interpretation (Behnke, 2003)
      • CNN 개념 일반화
    • Best practices for convolutional neural networks applied to visual document analysis (Simard, 2003)
      • CNN 개념 확대.
    • ImageNet Classification with Deep Convolutional Neural Networks (Krizehvsky; Hinton, 2012)
      • AlexNet
    • Visualizing and understanding convolutional networks (2013)
      • ZF Net
        • CNN 특정 구조라기 보다는 (CNN 동작 구조를 이해하기 위한) deconvolution을 이용한 visualization 기법; 즉, CNN 중간 계층에서의 동작이 이미지 공간에서 어떻게 진행되었는지 mapping하여 가시화.
        • max-pooling으로 인한 max-location에 대한 switch 정보 유지하여 un-pooling 문제 해결.
      • Visualizing 기법 관련 후속 논문
        • Return of the Devil in the Details: Delving Deep into Convolutional Nets (Chatfield, 2014)
        • deepViz: Visualizing Convolutional Neural Networks for Image Classification (Bruckner, 2015)

    Artifacts

    ILSVRC 

    • ImageNet Large Scale Visual Recognition Challenge
      • 이미지 인식 분야 성능 우열을 가리는 대회(2010~)
        • image classification의 경우, 1000개 class별로 1000개 입력만 주어지므로 다양한 방식으로 이미지 데이터 개수를 늘리는 방식이 같이 고려됨.
      • 3개 분야
        • image classification: top-5 에러율(5개 후보 중 하나만 맞으면 맞는 것으로 인정)
        • single-object localization: 물체가 존재하는 영역까지 파악. 최대 5개까지의 bounding box에서 ground truth와 50% 이상 영역이 일치하면 맞다고 봄
        • object detection: 200 class 학습 데이터를 이용하여, 이미지에 존재하는 object를 가능한 많이 추정하되, false positive에 대해서는 감점을 주는 방식. mean Average Precision(mAP)로 결과를 평가.
      • ImageNet: a very large dataset with lots of image categories
    • 주요 우승자
      • 2012: AlexNet (8 layers)
      • 2013: ZF Net, OverFeat (5/6 layer)
        • 2014: GoogleNet (22 layers), VGG (19 layers), SPPNet
        • 2015: ResNet (152 layers)
        • 2016: ResNeXt
        • 2017: Xception, Stochastic depth&ResNet (1202 layers), DenseNet

      CNN Frameworks (Image Classification)

      • LeNet (LeCun)
        • LeNet-1 (1990)
          • 28x28 입력 이미지, convolution-subsampling-FC 연결 구조, 5x5 filter, max-pooling.
          • 3000 free parameters (12만개의 free parameter가 필요한 종래 FC 구조에 비해 훨씬 적은 규모이며, 학습 결과도 낫다고 함)
        • LeNet-5
          • 32x32 입력이미지, filter 개수 늘어남, FC 크기 커짐.
          • 6만 free parameters
          • average-pooling
      • 'AlexNet' (Krizehvsky; Hinton, 2012) 
        • Stride 개념(1단계 계층에서 stride 4를 이용함), Convolution-Convolution 연속 적용
        • ReLU, DropOut, overlapped pooling, response normalization, data augmentation
          • ReLU: sigmoid 및 tanh 함수에 비해 학습속도 빠르고(6배 정도), back-propagation 결과 단순; non-linear한 성질로 활성화됨; 입력의 normalization 불필요하지만, 출력된 결과를 pooling하기에 앞서서 normalization 필요(response normalization -> 강한 자극이 주변의 약한 자극 전달을 막는 효과; lateral inhibition)
          • DropOut: voting 효과 및 co-adaption 회피 효과; FC 계층 처음 2개에만 50% 비율로 적용.
          • overlapped pooling: 3x3 window를 stride 2로 사용했음. (일반적으로는 2x2 window를 사용해서 겹치지 않도록 건너뛸 경우, 이미지 크기의 가로/세로 각각 절반씩 총 1/4로 줄어든다.)
          • data augmentation: 적은 연산으로 데이터 늘리기. 
            • 1) 256x256 원본 이미지에서 10개의 224x224 이미지 부분을 선택; 최종 결과에서는 softmax 출력 평균을 채택.
            • 2) 원본 이미지의 컬러 RGB 값에 (PCA를 사용하여) 랜덤변수를 더하여 색상 변화
          • GPU
            • convolution layer: 전체 연산량의 90~95%, 파라메터 5%, data parallelism(여러 입력 feature map에 동일한 filter 연산 수행)에 적합
            • fully connected layer: 연산량의 5~10%, 파라메터 95% (많은 파라메터로 인해 overfitting에 빠지기 쉬움), model parallelism에 적합
        • 5개의 convolution, 3개의 FC layers, 중간중간의 max-pooling.
          • 224x224x3  컬러이미지를 1000개 클래스로 분류
          • 2개의 GPU (GTX580) 적용 고려한 병렬 구조
          • 총 5개의 convolution 계층과 3개의 fully-connected 계층으로 구성.
        • 65만개 nodes, 60M free parameters, 0.63B connections: 한번 학습하는 데 7일 넘게 소요.
      • ‘Network in Network’ (Lin et al. (2013)
        • Mlpconv 계층을 제안. 해당 계층 내에서 neuron 간의 복수의 layer를 가질 수 있다는 것을 제시. 
          • (CNN의 convolution layer가 local receptive field에서 linear feature를 추출하는 데 우수한 반면,) non-linear feature를 추출하기 위한 방안으로 featuremap 개수를 늘리는 종래 방식 대신, micro neural network을 설계하여, 종래 filter 대신 MLP를 이용한 convolution 방식을 제안함.
        • (NIN으로 효과적인 feature 추출이 가능하므로) 최종 계층으로 FC 대신에 Global average pooling을 이용함.
        • 1x1 convolution (=1 layer fully-connected neural network)
          • 여러 개의 featuremap으로부터 비슷한 성질을 묶어내어, 결과적으로 차원을 줄이는(=연산량을 줄이는) 효과를 제공함.
      • ZF Net (2013)
        • (Visualizing 기법을 통해,) AlexNet의 hyper-parameter를 수정하여 성능 개선(3% 이상); convolution layer 크기를 확대.
        • AlexNet에서는 일부 feature에 몰리거나, aliasing 문제도 발생하는 반면, ZFNet은 필터들에서 다양한 feature가 고르게 나타남.
        • 1개의 GPU (GTX580)을 70 epoch, 12일간 학습.
          • AlexNet의 첫번째 convolution 계층의 11x11 필터 (stride 4) 대신 7x7 필터 사용(stride 2).
          • 필터의 크기가 작고 stride가 작게 설정될 때 결과가 낫다는 것을 확인함.
          • 2개의 GPU에 인위적으로 다른 처리를 하는 시도가 불필요함을 보임.
        • layer 별로 feature 습득 시간이 다름을 확인.
          • 앞쪽 layer가 몇번의 epoch에 feature가 수렴되는 반면, 뒤쪽 layer는 40~50 epoch이 되어야 feature가 보이기 시작.
        • 뒤쪽 layer로 갈수록 이미지 크기/위치변화/회전변화에 invariance 확보.
          • 개체의 정확한 위치까지도 파악 가능.
      • GoogLeNet (Szegedy, 2014)
        • (AlexNet에 비해 전체 망의 깊이는 깊어졌지만) Inception Module 개념 도입을 통해 전체 free parameter 수 감소(1/12) 가능: 9개의 인셉션 모듈 사용.
          • AlexNet: 60M -> GoogLeNet: 5M 
          • (Inception: 남에게 어떤 생각을 주입하거나 생각을 읽어내는 개념을 차용하여), DNN을 이용하여 데이터로부터 중요한 정보를 얻어내는 것에 연상된 이름으로 판단됨.
          • 동일 layer에 서로 다른 크기를 가진 convolution filter를 적용; 1x1 convolution을 이용하여, 차원을 줄였기(dimensionality reduction) 때문에 가능한 구조. (참고)
        • auxiliary classifier (=SuperVision)
          • 망이 깊어지면 vanishing gradient 이슈로 인해 학습 속도 저하 및 overfitting 문제가 발생한다. 
          • Re-LU 활성함수이용시, (sigmoid 또는 cross-entropy보다는 낫지만) 여전히 작은 값들이 곱해지다 보면 0 근처로 수렴되는 상황이 나올 수 있음.
          • 학습을 위한 도우미로서 'reguarizer'와 같은 역할; auxiliary classifier가 batch-normalize되었거나 drop-out layer를 가질 경우, 최종 계층의 classifier 결과가 향상된다고 함.
        • factorizing convolutions
          • 커다란 크기의 filter(=convolution kernel)를 여러 계층의 작은 크기 filter로 대체하여 연산량 절감 가능.
          • 5x5 convolution을 2단의 3x3 convolution으로 구현할 경우 25개의 free parameter를 18개로 대체하므로 28%의 연산 절감이 가능하다고 함; 같은 방식으로 7x7을 3단의 3x3으로 구현시 49 -> 27 (45% 절감).
          • 3x3을 1x3과 3x1로 분해할 경우, 9 -> 6 (33% w절감).
        • Testing
          • 하나의 테스트 이미지(256x256)를 4개 크기로 변화시킨 뒤, 3개씩의 정사각형 부분을 선택하여, 6장의 224x224 크기를 선택하여 좌우반전 --> 4x3x6x2 = 144개의 이미지 생성하여 voting 결과를 이용.
      • VGGNet (Simonyan, 2014)
        • Oxford
        • 3x3 convolution, 2x2 max pooling 으로 구성된 (GoogLeNet 보다) 단순한 구조
          • (AlexNet에서의 커다란 필터를 사용하는 대신) 균일한 크기의 3x3 filter로만 receptive field를 설정함.
          • depth가 성능에 어떤 영향을 주는 지 확인하기 위한 6개의 구조를 살펴본 결과 (ILSVRC-2012 데이터의 경우에는) depth 16에서 최적의 결과가 나오는 것을 확인
          • 메모리와 파라미터 개수(133M ~ 144M)가 많이 필요하다는 것(그리고, GoogLeNet의 3배 연산량 소요)이 단점; 대부분의 파라미터(122M)는 FC 계층 3개에서 발생함.
        • 이슈
          • Local Response Normalization(LRN)이 별 효과가 나타나지 않았다고 함.
          • 1x1 convolution이 적용되기는 하지만, 차원을 축소하기 위한 목적보다는, 차원을 그대로 유지하면서, ReLU를 통해 추가적인 non-linearity를 확보하려는 목적.
          • vanishing/exploding gradient 문제를 해결하기 위해, 구조A(11개 계층)의 학습 결과(특히, 앞의 4개 계층과 마지막 FC 계층)를 pre-training 모델로서 보다 깊은 계층을 가진 구조의 parameter 초기값 설정에 이용함.
          • (다양한 크기의 이미지에 대응할 수 있도록) 학습 입력 이미지의 scale을 무작위로 변화한 뒤(scale jittering) 무작위로 224x224를 선택; 
          • 테스트 데이터에 대한 multi-crop data augmentation(1장 -> 150장) 기법과 dense evaluation 개념을 함께 적용하여 성능 개선 시도.
        • 관련 논문
          • Deep inside convolutional networks: Visualising image classification models and saliency maps (Simonyan, 2013)
          • Understanding Deep Image Representations by Inverting Them (Mahendran, 2015)
      • ResNet (He, 2015)
        • Deep residual learning for image recognition (He, 2015)
          • DNN의 계층이 adding 됨에따라(=network depth가 깊어질수록) 성능이 저하되는 현상에 대한 대응. -> x와 H(x) 간의 관계를 학습하기 보다는, x와 H(x)의 차이(residual)를 학습하도록.
        • residual framework
          • 깊어진 망에서도 쉽게 최적화가 가능함; 늘어난 깊이로 인해 정확도가 개선됨
          • CNN의 depth를 100개 이상 깊게 늘리면서도 학습 효율을 떨어뜨리지 않는 방안 고민의 결과
          • residual learning: 입력의 작은 움직임(residual)을 학습한다는 관점
          • 몇 개의 layer를 건너 뛰면서, 입력과 출력이 연결(shortcut)되는 구조이므로 (파라미터가 늘어나는 것도 아니면서) 연산량 증가가 미미하면서도, forward/backward path가 단순해지는 효과.
        • 152 layers, Top-5 오차율 3.57%
          • classification, localization, detection 분야 모두 우승.
          • GoogLeNet (오차율 6.7%)보다 성능 2배 개선
        • 특징
          • VGG Net 설계 구조 활용: 대부분 3x3 convolutional kernel 이용. 복잡도(연산량)를 줄이기 위해, max-pooling, FC, dropout을 최대한 배제함
          • Feature map 크기가 절반으로 작아지는 경우, 연산량의 균형을 맞추기 위해 필터의 수를 2배로 늘림; Feature map 크기를 줄이기 위해서는 (pooling을 사용하는 대신) convolution에서의 stride 크기를 2로 취함.
          • 2개의 convolution layer마다 shortcut connection 연결.
          • 학습 초기 단계에서 residual net의 수렴 속도가 plain network 보다 빠름.
          • 최종 결과 제출시 2개의 152 layer 결과를 조합한(또는 depth를 서로 달리하는 6개 모델을 이용한) ensemble 결과를 제출했다고 함.
          • CIFAR-10에 대한 110/1202 계층에 대한 실험을 통해, 천 개 이상의 계층이 구성될 경우에도 어느 정도의 성능이 나오지만, 망의 깊이를 고려한 데이터 양의 부족으로 인한 overfitting 발생이 된 것으로 판단됨 --> Identity mappings in deep residual networks (He, 2016)에서 pre-activation 기법(=activation을 short-cut connection 앞쪽에 배치하여 regularization 효과 높임)을 통한 개선된 ResNet 방안 제시됨; identity skip connection (shorcut connection에 어떠한 변형도 가하지 않은 경우) 속도나 성능이 최적임을 확인.
          • Faster R-CNN의 개념이 ResNet으로 다시 이어진다고 간주됨.
        • bottleneck architecture
          • 2단의 3x3 convolution 계층을 1x1 - 3x3 - 1x1 세 개의 계층(병목 형태 구조)로 변경하여, 연산량(연산시간)을 절감
        • 참고: Deep Residual Networks with 1K Layers 
          • 1000 계층 pre-trained model 오픈소스 (Torch 기반)
      • Google Inception
        • 연산 비용을 늘리지 않으면서도 NN을 scale up 할 수 있는 방안을 탐구
        • Rethinking the inception architecture for computer vision (Szegedy, 2015)
          • inception 모듈 내에 convolution (최종 계층의 stride 2) 및 pooling (stride 2)을 나란히 배치한 뒤 concat하여, 효율성과 연산량을 절감. -> 학습모델스스로 어떤 convolution/pooling을 하는 게 좋은 결과가 나오는 지를 결정할 수 있도록 하자. 이때, 연산량이 늘어나는 문제를 해결하기 위해 1x1 convolution 적용해보자.
          • 즉, 단순하게 pooling layer를 적용하는 것보다, convolution layer와 나란히 적용하는 게 효과적이라는 것을 확인
        • Inception-V2 (2015)
          • 42개 layer.
            • Inception-V1에 BN(batch normalization)을 반영한 기본 모델.
            • 'BN-Inception'
          • 299x299x3 입력 지원; (종래 7x7 convolution을) 3단의 3x3 convolution으로 대체 및 convolution kernel 인수분해 방식 적용.
          • batch-normalized auxiliary classifier 적용시 regularization 효과 극대화.
        • Inception-V3
          • 144개 multi-crop 데이터 적용.
          • Inception-V2에 convolution factorization, label smoothing, auxiliary classifier, BN을 결합시킨 모델
        • Inception-V4
          • Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning (Szegedy, 2016)
          • Stem (9 layers): 299x299x3 입력 이미지를 35x35x384의 feature map로 생성.
          • 3가지 형태의 inception 모듈 (A, B, C), 2가지 형태의 reduction 모듈 사용.
        • Inception-ResNet
          • Inception 구조에 ResNet 개념 접목을 통해 ResNet 보다 성능이 좋다는 것을 보임; Inception-V3보다 학습속도도 빠름(=훨씬 적은 epoch에서 최적 성능 나타나기 시작)
          • V1, V2: Stem에 적용된 layer 구조가 다름 (즉, V1의 stem은 단순 구조, V2의 stem은 inception-V4와 동일); ResNet-V2의 필터 개수가 더 많음.
          • ResNet의 residual connection 구조에 1x1 convoluton을 적용하여 일부 변경.
          • Inception-V4와 3개의 Inception-ResNet-V2 ensemble을 했을 때, Top-5 error 3.1%라고 함.
      • ResNeXt
        • Aggregated Residual Transformations for Deep Neural Networks (Xie; Girshick; He, 2017)
          • convolution 빌딩 블록의 개수(=cardinality)를 늘려서 분류 정확도를 향상.
          • depth 또는 channel 수를 늘리는 것보다 cardinality를 키우는 것이 낫다는 결과.
          • bottlenet block에서 그룹별 convolution 구조를 이용하여 sparse한 연결이 이루어 질 수 있도록 했다고 함.
      • Xeption
        • extreme inception
          • spation correlation (= width x height과 cross-channel correlation (=depth)을 독립적으로 다루도록 함. -> 즉, 종전방식 처럼 한번에 depth를 묶어서 보는 대신, 크기에 대한 convolution 먼저 한 뒤, depth convolution을 수행하는 방식을 제안.
          • depthwiase separable convolution = depthwise convolution + pointwise convolution (=1x1 cross-channel convolution)
      • DenseNet
        • Densely Connected Convolutional Networks (Huang, 2016)
          • 즉, layer가 순차적으로 연결될 뿐만 아니라 건너뛰면서 연결될 수 있도록 함.
          • ResNet의 영향 및 stochastic depth 개념(저자의 다른 논문; ResNet을 1202계층까지 쌓았음)에서 영향을 받았음; 

      Object detection

      • 배경
        • 물체를 인식하기 위해서는 'feature extraction'과 'object classifier' 두 가지 기능이 갖추어져야 함.
          • feature 추출: 종래에는 gradient 기반 vision 알고리즘(SIFT, HOG) 이용됨
          • object 검출: SVM, DPM 이용됨.
      • Regions with CNN features(=R-CNN
        • Rich feature hierarchies for accurate object detection and semantic segmentation (Girshick, 2014)
          • 버클리. 
        • (AlexNet, 2012) classification 결과를 참고하여, detection 분야에 CNN 적용
          • 종래 이미지 low-level gradient 속성에 대한 인식 알고리즘(SIFT, HOG)에 비해 좋은 결과 도출.
        • 입력 데이터로부터 2000개의 후보 영역(region proposal)을 생성(Selective Search) 한 뒤, warping(늘리기)/crop(잘라내기)을 사용하여 224x224 크기로 변형하여 CNN에 입력 후 CNN feature vector를 얻어냄; 이후 linear SVM fitting을 이용하여 해당 영역을 분류(bounding box regressor)함
          • Selective Search (Uijlings, 2013): segmentation의 장점과 exhaustive search 장점을 골고루 활용 (즉, segmentation을 통해 후보 영역의 seed를 설정한 뒤, 이를 기준으로 exhaustive search를 수행) ; 단순 정보(색상, texture) 뿐 아니라 내재된 계층 구조까지 활용하는 기법 (즉, 영상이 표현하고 있는 계층 구조를 통해 크기에 상관없이 대상을 찾아냄); 더불어 다양한 컬러 공간(RGB -> HSV[색상,채도,명도]) 이용; 개체 detection을 위한 후보 영역 검출을 위해 2013~2015 주목을 받다가, Faster R-CNN 등장 이후 인기가 감소함.
          • Efficient Graph-Based Image Segmentation (Felzenszwalb, 2004): 의미있는 부분으로 효율적인 segmentation 수행; grid graph weighting, nearest neighbor graph weighting 제시.
        • ILSVRC 데이터를 이용하여 CNN pre-training을 통해 파라미터 초기화한 뒤, PASCAL VOC(Visual Object Class)를 이용하여 fine tune 수행.
          • detection 성능을 58%까지 끌어올림.
        • 문제점
          • 이미지 크기를 224x224 크기로 맞추기 위해 이미지 변형 및 손실이 발생하여 성능 저하 요인 존재.
          • 2000개의 region proposal에 대한 순차적인 CNN 수행으로 인해, 학습 및 실행 시간이 많이 소요. --> 성능은 뛰어나나 속도가 느림; PASCAL VOC07 데이터 5천장 학습에 2.5일 소요 및 수백GB 저장 공간 요구; K40 GPU 이용했을 경우, Object detection 1장 수행에 47초 소요.
          • region proposal, SVM 튜닝 등이 GPU 사용에 적합하지 않음
        • 후속 연구로 Fast R-CNN (Girshick, 2015), Faster R-CNN (Ren; He; Girshick, 2015) 발표됨.
      • Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition (=SPPNet) (He, 2014)
        • AlexNet 구조에서, convolution layer는 sliding window로 인해 입력 크기에 영향을 받지 않으며, FC layer가 큰 영향을 받는다는 점에 주목.
          • 입력 이미지를 crop/warp 하는 대신에, convolution의 결과를 spatial pyramid pooling을 수행하여 FC layer에 전달하는 방식을 이용; 즉, spatial bin으로 불리는 M개의 영역을 피라미드 방식으로 계산한 결과를 concatenation 시킨 뒤, 사전에 설정된 크기로 FC에 전달.
          • Bag of Words (BoW) 개념: 특정 개체를 분류하는 있어, 굵고 강한 특징에 의존하는 대신, 여러개의 작은 특징을 사용하여 개체를 구별.
        • 오직 1번만 convolution 과정을 거친 뒤, 피라미드 방식의 pooling을 수행하기 때문에, R-CNN에 비해 (학습 3배 빠르고, 실제 적용시는) 10~100배 빠른 성능을 보인다.
      • Fast R-CNN (Girshick, 2015)
        • 목표
          • 검출 정확도(mAP)가 R-CNN/SPP Net보다 좋을 것; single-stage 학습 수행; 학습 결과를 모든 layer에 업데이트; feature caching을 위한 별도 저장 공간 불필요하도록.
        • 특징
          • 입력 이미지에 대한 ConvNet 연산 1회 수행을 통해 RoI pooling 계층(=Single-level pooling)에서 후보 영역을 뽑아낸 뒤 FC계층에 넣음.
          • R-CNN/SPP Net에서 mini-batch를 128개(128장 이미지에서 하나씩 128개 RoI를 선택 = resion-wise sampling)로 수행했었으나, (원본 입력 이미지 크기에 대한 scale 처리를 따로 하지않는) Fast R-CNN에서는 hierarchical sampling 기법을 통해 2장의 이미지로부터 64개의 샘플을 뽑아 128개의 RoI를 정하도록 설정. --> 학습 과정에서 학습 결과를 공유할 수 있게되어 연산 속도가 빨라진다고 함.
          • (PASCAL VOL 이미지 데이터에 대한) detection 성능이 70% 수준 근처까지 올라왔다고 함.
          • 다음의 그림에서처럼, 출력부분의 softmax는 class를 구별하고, bbox regressor는 개체의 위치 정보를 구하는 역할을 수행한다.


      • Faster R-CNN
        • Faster R-CNN: Towards real-time object detection with region proposal networks (Ren; He; Girshick, 2015)
        • 목적:
          • Fast R-CNN이 종래 R-CNN에 비해, 이미지 처리 속도를 크게 향상시켰으나, test time에 (region proposal 고려시) 2초가 걸리는 것을 더욱 개선할 필요가 있음.
          • (Region proposal을 위한 별도 과정을 거치는 대신에,) ConvNet에 region proposal을 위한 특수 용도의 네트워크(RPN)을 추가하였음; 즉, RPN에서 object가 있을만한 영역에 대한 proposal을 생성함.
        • 특징
          • Region proposal network: conv feature map에 대한 각각의 sliding window에서 scale과 aspect ratio를 달리하는 조합(=anchor)를 구하여 k개의 후보 영역을 지정하여 256/512 차원의 벡터 정보로 전달.
          • 종래 Selective Search, Edge Box 방식의 후보영역 선택 방식에 비해 성능 개선이 가능하다고 함: 즉, VGG 프레임워크 기준으로, SS + Fast R-CNN에 약 2초가 소요된 반면, RPN + Fast R-CNN은 0.2초가 소요됨.
          • 이후, Faster R-CNN의 기법은 ResNet이 object detection으로 적용됨에 있어 더욱 발전적으로 활용된다고 함.
      • Network on Conv feature map (=NoC)
        • Object Detection Networks on Convolutional Feature Maps (Ren; He; Girshick, 2016)
          • CNN을 이용한 feature 추출 방법이 종래 computer vision 알고리즘에 비해 성능이 우수하다는 점을 이용하여, ResNet으로 구현 적용; Region proposal  및 RoI pooling 부분 역시 ConvNet으로 구현 가능.
          • object classifier에 대한 부분을 NoC라고 명명하고, 어떻게 구현해야 최적의 성능이 나올 수 있는 지 실험을 통해 확인; FC 2~3개 만을 이용하는 종래 방식에 비해, Conv를 거쳐 maxout를 결합한 방식이 FC 앞쪽에서 들어올 경우 결과 개선이 가능하다는 것을 확인
        • 특징
          • ResNet의 Conv 계층 앞부분을 feature extractor로 활용하고, Conv 계층 후반부 및 Classifier를 Fast R-CNN 구조로 변형하고 구현함으로써, VGG-16(73.2%)을 사용했을 때보다 정확도 개선(76.4%). 


      • Mask R-CNN
        • ResNeXt를 활용.
        • RoIAlign 방식으로 후보영역 추출
        • 클래스별 마스크 분리

      single-object localization

      • OverFeat
        • OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks (Sermanet, LeCun, 2013)
        • Testing
          • multi-crop voting 방식(서로 겹치는 부분이 있더라도 ConvNet 연산을 전부 새롭게 해야함) 대신 dense evaluation 방식 이용.
          • offset을 오밀조밀하게 구성한 non-overlapped pooling을 통해, resolution이 낮아지는 문제를 해결.
        • 1-pass로 연산 가능한 구조
          • 이후 등장한 SPP Net역시 1-pass 구조를 취하고 있으며, OverFeat의 성능과 속도에 크게 앞선 결과를 도출하였음.
        • FC layer에 대한 해석 (by LeCun, 2015)
          • = convolution layer with 1x1 convolution kernel and a full connection table = "fully connected layers" really act as 1x1 convolutions = ConvNets에 굳이 fixed-sized input이 요구될 필요가 없음
          • 즉, FC 계층에 들어가는 feature map의 크기를 고정시키기 위한 노력이 불필요하다고 해석함. 따라서, 입력 이미지의 크기가 다를 경우, slide를 조절하여, 일정한 resolution으로 크기가 들어오도록 조절 가능하고, voting을 통해 판단함.