SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
CNN의 변천사
Produced by Tae Young Lee
CNN(Convolutional Neural Network)
CNN은 1989년 LeCun이 발표한 논문 (“Backpropagation applied to handwritten zip code recognition”)에서 처음 소개가
되었고, 필기체 zip code인식을 위한 프로젝트를 통해 개발이 됨 - 범용화에는 미흡하였음
2003년 Behnke의 논문 (“Hierachical Neural Networks for Image Interpretation”)을 통해 일반화가 되었으며, Simard의 논문
(“Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis”)을 통해 단순화되면서 개념 확대의
초석이 마련됨
MLP(Multi-Layer Perceptron)
필기체 인식을 위해, 위 그림처럼 256개의
입력단과 100개의 hidden-layer 및 26개의
출력단으로 구성이 되면 hidden layer가 1개만
있는 단순한 구조에서도 필요한 가중치(weight)
와 bias는 총 28,326개가 필요하게 된다.
폰트의 크기가 커지거나 hidden layer가 2단
이상이 되거나, 대소문자 구별이나 숫자까지
구별을 해야 한다면 파라미터의 개수가
엄청나게 많아지게 된다. 또한 글자의 크기가
달라지거나 글자가 회전되거나, 글자에 변형이
조금만 생기더라도 새로운 학습 데이터를
넣어주지 않으면 좋은 결과를 기대하기 어렵다.
MLP문제와 해결책
[ 문제점 ] 결과적으로 기존 multi-layered neural network는 글자의 topology는 고려하지 않고, 말 그대로 raw data에 대해
직접적으로 처리를 하기 때문에 엄청나게 많은 학습 데이터를 필요로 하고, 또한 거기에 따른 학습 시간을 대가로 지분해야
하는 문제점이 있다.
기존의 fully-connected multi-layered neural network를 사용하면, 3가지 측면에 문제가 발생함을 알 수 있다.
학습 시간 (Training time), 망의 크기 (Network size), 변수의 개수 (Number of free parameters)
[ 해결책 ] visual cortex 부분과 유사한 신경망을 만들고 싶어 했고, 그 결과가 바로 CNN(Convolutional Neural Network)이다.
CNN의 기본 개념은 visual cortex에 있는 receptive field개념에 기반을 하고 있다.
CNN의 구조와 과정
CNN의 과정은 크게 보면 위와 같은 3단계 과정으로 이루어진다.
1. 특징을 추출하기 위한 단계
2. Topology 변화에 영향을 받지 않도록 해주는 단계
3. 분류기 단계
특징을 추출하는 단계가 내부에 포함이 되어 있기 때문에 raw image에 대해 직접 operation이 가능하며, 기존 알고리즘과 달리 별도의 전처리
(pre-processing) 단계를 필요로 하지 않는다.
특징 추출과 topology invariance를 얻기 위해 filter와 sub-sampling을 거치며, 보통 이 과정을 여러 번을 반복적으로 수행하여 local feature로 부터
global feature를 얻어낸다.
이동이나 변형 등에 무관한 학습 결과를 보이려면, 좀 더 강하고 global한 특징을 추출해야 하는데, 이를 위해 통상적으로 (convolution + sub-sampling)
과정을 여러 번을 거치게 되면, 좀 더 전체 이미지를 대표할 수 있는 global한 특징을 얻을 수 있게 된다. 이렇게 얻어진 특징을 fully-connected
network를 통해 학습을 시키게 되면, 2차원 영상 정보로부터 receptive field와 강한 신호 선택의 특성을 살려, topology 변화에 강인한 인식 능력을 갖게
됨
CNN의 주요 Layer
여러 개의 다른 특징을 추출하고 싶다면, 다른 특징을 추출할 수 있도록 convolution kernel의 개수를 설정하면 된다.
다음 과정은 sub-sampling 과정이며, sub-sampling은 통상적으로 feature map의 크기를 줄여주면서, 이를 통해 topology invariance도 얻을 수가 있게
된다. 보통 1개의 feature map에 대해 1개의 sub-sampling연산을 수행한다. 이렇게 해서 local feature를 얻었다면, 그 local feature에 대해 다시
convolution과 sub-sampling을 수행하며, 이 과정을 통해 좀 더 global feature를 얻을 수 있게 된다. 여러 단의 (convolution + sub-sampling)과정을
거치면, feature map의 크기가 작아지면서 전체를 대표할 수 있는 강인한 특징들만 남게 된다. 이렇게 얻어진 global한 특징은 fully connected
network의 입력으로 연결이 된다.
CNN의 주요 layer는 convolution layer, sub-sampling(pooling) layer, fully-connected layer이다.
Convolution Layer
Lecun - “Gradient-based learning applied to document recognition”
Krizhevsky - “ImageNet classification with deep convolution neural network”
Convolution Layer의 hyper-parameter(1)
Convolution layer에 관련된 중요한 hyper-parameter가 바로 필터의 개수와 필터의 형태이다.
Convolution layer의 연산 시간
Tc(각 layer에서의 연산시간) = Np(출력 pixel의 수) X Nf(전체 feature map의 개수) X Tk(각 filter당 연산 시간)
필터의 개수를 정할 때 흔히 사용하는 방법은 각 단에서의 연산 시간/량을 비교적 유지하여 시스템의 균형을 맞추는 것
이를 위해 일반적으로 각 layer에서 feature map의 개수와 pixel 수의 곱을 대략적으로 일정하게 유지한다.
1. Filter의 개수
- Feature map의 크기 (즉, convolution layer의 출력 영상의 크기)는 layer의 depth가 커질수록 작아지기 때문에, 일반적으로 영상의 크기가 큰
입력단 근처에 있는 layer는 filter의 개수가 적고, 입력단에서 멀어질수록 filter의 개수는 증가하는 경향이 있다.
2. Filter의 형태
- 결과적으로 여러 개의 작은 크기의 필터를 중첩해서 사용하는 것이 좋다. 이는 작은 필터를 여러 개 중첩하면 중간 단계에 있는 non-linearity를
활용하여 원하는 특징을 좀 더 돋보이도록 할 수 있기 때문이다. 뿐만 아니라, 작은 필터를 여러 개 중첩해서 사용하는 것이 연산량도 더 적게
만든다.
3. Stride 값
- Stride는 convolution을 수행할 때, 건너 뛸 픽셀의 개수를 결정한다.
- Stride는 입력 영상의 크기가 큰 경우, 연산량을 줄이기 위한 목적으로 입력단과 가까운 쪽에만 적용을 한다.
- 통상적으로 보았을 때는 stride를 1로 하고, pooling을 통해 적절한 sub-sampling과정을 거치는 것이 결과가 좋다.
Krizhevsky의 논문처럼 큰 영상에 대해 CNN을 적용하는 경우 연산량을 줄이기 위해 1단계 convolution layer에서 stride를 1이 아닌 값을
적용하기도 한다.
Convolution Layer의 hyper-parameter(2)
32X32 INPUT 영상에 대해 Kernel 크기가 5X5인 convolution을 적용하면 feature map의 크기가 28X28로 줄어 든다.
14X14 영상에 대해 다시 5X5 convolution을 수행하면 결과는 10X10으로 줄어든다.
보통 convolution 연산을 하게 되면, 경계 처리문제로 인해 출력 영상인 feature map의 크기가 입력 영상보다 작아지게 된다.
Zero-padding은 작아지는 것을 피하기 위해 입력의 경계면에 0을 추가하는 것을 말한다.
만약에 입력 영상의 경계에 0을 2픽셀씩 추가하여 36X36 크기의 영상을 만들었다면 feature map의 크기는 32X32가 된다.
이렇게 zero-padding을 지원하면 영상 크기를 동일하게 유지할 수 있다.
그럼 zero-padding을 하는 이유는 무엇일까?
단순한게 영상의 크기를 동일하게 유지하는 장점 이외에도,
경계면의 정보까지 살릴 수 있어 zero-padding을 지원하지 않는 경우에 비해 zero-padding을 지원하는 것이 좀 더 결과가 좋다
CNN Architecture 변천사
LeNet - 1990년 Yann Lecun
AlexNet - Krizhevsky, Hinton 2012년 ImageNet ILSVRC대회 우승
구조는 LeNet과 유사하지만, convolutional layer 바로 뒤에 convolutional layer가 옴
ZF Net - ILSVRC 2013년 대회에서 우승 뉴욕대 Matthew Zeiler와 Rob Fergus에 의해 개발
AlexNet의 hyper-parameter 수정하여 성능을 좀 더 개선하였고 중간에 convolutional layer의 크기를 늘림
GoogLeNet - ILSVRC 2014년 대회에서 우승구글의 Szegedy 등에 의해 개발
“Inception Module”개념을 도입, 이것을 통해 망의 파라미터 수를 대폭 줄일 수 있게 됨
(참고로AlexNet은 60M 파라미터가 있지만, GoogLeNet의 경우는 4M 임)
VGGNet - ILSVRC 2014년 대회 2등 영국 옥스포드 대학교 Karen Simonyan과 Andrew Zissenrman에 의해서 개발
대량의 이미지를 인식함에 있어, 망의 깊이(depth)가 정확도에 어떤 영향을 주는지를 보여줌
망의 시작부터 끝까지 동일하게 3X3 convolution과 2X2 max pooling을 사용하는 단순한 구조에서 depth가 16일 때 최적의
결과가 나오는 것을 보여줌 단점이라면, 메모리 수와 파라미터의 수가 크다는 점
ResNet - ILSVRC 2015년 대회 우승 마이크로소프트의Kaiming He등에 의해서 개발됨
기존 DNN(Deep Neural Network)보다 layer 수가 훨씬 많은 Deeper NN에 대한 학습(training)을 쉽게 할 수 있도록 해주는
Residual framework 개념을 도입
ILSVRC - ImageNet Large Scale Visual Recognition Challenge의 약어
ImageNet - 세계 최대의 영상 데이터 베이스
LeNet-5 Architecture (1)
LeNet-5의 구조는 총 3개의 convolution layer, 2개의 sub-sampling layer 및 1개의 fully-connected layer를 갖고 있다는 것을 알 수 있다.
Convolution뒤에 sub-sampling이어지면서, 영상의 크기가 1/4로 줄어들게 된다.
C1은 convolutional layer이며 32X32 영상을 입력으로 받아 28X28 크기의 feature-map 영상을 만들어 낸다. 5X5 kernel을 사용하고, zero-padding을
지원하지 않기 때문에 boundary 정보가 사라지면서 28X28 크기의 feature-map 영상이 나오게 된다.
Convolution kernel의 계수(parameter)는 사전에 결정되는 것이 아니라, 최적의 결과를 낼 수 있도록 학습을 통해 결정이 된다.
C1 단계는 각 convolution kernel에서 (총 26 = 25+1)의 자유 파라미터가 있고, 그런 커널이 6개 있기 때문에 156개의 자유 파라미터 있음
S2는 sub-sampling을 수행하며, 2X2 크기의 receptive field로부터 average pooling을 수행하기 때문에, 결과적으로 28X28 크기의 feature-map 영상을
입력으로 받아, 14X14 크기의 출력 영상을 만들어 내며, 각각의 feature map에 대해 1개의 대응하는 sub-sampling layer가 있다. Average pooling을
수행하기 때문에 weight 1 + bias 1 로 각각의 sub-sampling layer는 2개의 파라미터를 갖고, 자유 파라미터의 개수는 총 12개 있다.
LeNet-5 Architecture (2)
C3는 C1과 동일한 크기의 5X5 convolution을 수행하며, 14X14 입력 영상을 받아 10X10 크기의 출력 영상을 만들어 낸다.
6개의 입력 영상으로부터16개의 convolution 영상을 만들어 내는데, 이 때 6개의 모든 입력 영상이 16개의 모든 출력 영상에 연결이 되는 것이 아니라,
선택적으로 입력 영상을 골라, 출력 영상에 반영이 될 수 있도록 한다. 이렇게 하는 이유는 연산량의 크기를 줄이려는 이유도 있지만, 결정적인 이유는
연결의 symmetry를 깨줌으로써, 처음 convolution으로부터 얻은 6개의 low-level feature가 서로 다른 조합으로 섞이면서 global feature로 나타나기를
기대하기 때문이다. 이 단계의 자유 파라미터의 개수는 1516개 = 25(커널)X60(S2의 feature map과 C3의 convolution에 대한 연결)+16(bias)의 결과
이다.
S4는 S2와 마찬가지로 sub-sampling단계이며, 10X10 feature-map 영상을 받아 5X5 출력 영상을 만들며, 이 단계의 자유 파라미터의 개수는 32(2X16)
개 이다.
C5는 16개의 5X5영상을 받아, 5X5 kernel크기의 convolution을 수행하기 때문에 출력은 1X1크기의 feature-map이며, fully connected 형태로 연결하여
총 120개의 feature map을 생성한다. 이전 단계에서 얻어진 16개의 feature-map이 convolution을 거치면서 다시 전체적으로 섞이는 결과를 내게 된다.
F6는 fully-connected이며 C5의 결과를 84개의 unit에 연결을 시킨다. 자유 파라미터의 개수는 (120+1)X84=10164가 된다.
AlexNet Architecture
AlexNet은 총 5개의 convolution layers와 3개의 full-connected layers로 구성이 되어 있으며, 맨 마지막 FC layer는 1000개의 category로 분류를 위해
활성 함수로 softmax 함수를 사용하고 있음을 알 수 있다.
AlexNet은 약 65만개의 뉴런, 6000만개의 free parameter 및 6억 3000만개의 connection으로 구성된 방대한 CNN구조를 갖고 있으며, 이렇게 방대한
망에 대한 학습을 위해 2개의 GPU(NVIDIA GTX580)를 사용하고 있다.
영상의 크기를 나타내는 width와 height 뿐만 아니라 depth를 갖는다. 보통 color 영상의 경우는 R/G/B 3개의 성분을 갖기 때문에 시작이 3이지만,
convolution을 거치면서 feature-map이 만들어지고 이것에 따라 중간 영상의 depth가 달라진다.
이것을 이해하면, AlexNet의 블록도에 있는 숫자의 의미가 파악이 가능하다.
AlexNet의 경우 입력 영상의 크기가 227X227X3 으로 영상의 크기가 매우 크다.
첫번째 convolution layer의 kernel 크기가 11X11X3 크기로 비교적 큰 receptive field를
사용하고 있고 stride의 크기를 4로 적용했으며, 96개의 feature-map을 생성하기 때문에 결과는
55X55X96=290,400 이 된다. 290,400개의 neuron으로 각 kernel은 11X11X3 = 363개의
weight 및 1개의 bias를 변수로 갖기 때문에 kernel 당 364개의 parameter이고, kernel이
96개이므로 364X94=34,944의 free parameter(LeNet 전체의 절반이상), connection의 숫자도
290,400X364=105,750,600으로 첫번째 layer에서만 1억개 이상의 connection이 만들어진다.
첫번째 convolution layer를 거치게 되면, 96개의 feature-map을 얻을 수 있다.
GPU-1에서는 주로 컬러와 상관없는 정보를 추출하기 위한 kernel이 학습이 되고,
GPU-2에서는 주로 color에 관련된 정보를 추출하기 위한 kernel이 학습이 된다.
두번째 convolutional layer는 5X5X48크기를 갖는 kernel을 사용하고 있다.
첫번째 convolutional layer에서 연산의 수를 줄이기 위해 stride를 4로 적용을 하여 자연스럽게
pooling을 한 것처럼 영상의 크기를 줄였다.
세번째 convolutional layer 연산을 하기 전에 response normalization과 pooling과정을 거쳐
영상의 크기를 27X27X256으로 줄였고, 3X3X256 크기를 갖는 kernel을 사용하여
convolution연산을 수행하고 384개의 feature-map을 얻는다.
이 때 GPU-1과 GPU-2의 결과를 모두 섞어 사용한다.
그 결과에 대해 response normalization과 pooling을 거쳐 13X13X384크기의 영상을 얻으며,
그 결과에 대해 4번/5번 convolution 블락도와 같이 적용이 된다.
최종 convolution을 거친 영상은 pooling과정을 거쳐 총 4096개의 fully connected net에 연결이
되고, 최종단은 1000개의 category에서 결과를 낼 수 있게 softmax함수가 적용됨
CNN의 구조에서 일반적으로 pooling은 convolution을 통해 얻은 feature-map 영상의 크기를 줄이기 위한 용도로 사용하며 average pooling 또는 max
pooling을 사용한다. Max pooling은 average pooling에 비해 최대값을 구해야 하기 때문에 연산량이 더 많지만, 최대 크기를 갖는 자극만 전달한다는
관점에서 보면, 생물학적인 특성과 좀 더 유사하다고 할 수 있다.
LeNet-5에서는 average pooling방식을 사용했고, AlexNet에서는 max pooling을 사용하였다.
아래 그림의 화살표 영역이 pooling layer에 해당된다. 통상적으로 pooling을 할 때는 겹치는 부분이 없게 하는 것이 대부분이며, pooling window의
크기도 2X2를 주로 사용하고, stride도 2를 사용하기 때문에 출력 영상의 크기가 가로/세로 각각 1/2로 줄어들게 된다.
하지만AlexNet은 2X2 window 대신 3X3 window를 선택하고, stride(건너뛰기)를 2로 하는 overlapped pooling 방식을 사용했다.
이 overlapped pooling 방식을 통해 top-1과 top-5 에러율을 각각 0.4%와 0.3% 줄일 수 있었으며, overfitting에 빠질 가능성도 더 줄일 수 있다고 주장을
하고 있다.
ZFNet 출현 배경
CNN의 구조를 결정하는 hyper-parameter는 어떻게 설정을 할 것인지, 또는 자신들이 개발한 구조가 과연 최적인지
판가름하는 것은 너무 어렵다. AlexNet의 경우 2개의 GPU를 사용하여 학습을 하는데 일주일 이상이 걸리는데, 10개가 넘는
hyper-parameter의 조합 중 최고를 찾아낸다는 것이 과연 가능한 일일까? 좋은 결과는 얻었지만, 이론적으로 설명하기가
어렵고, 최적의 구조인지도 확신할 수도 없는 상황이기 때문에 뭔가 CNN을 보다 잘 이해할 수 있는 수단이 필요했으며,
Matthew Zeiler는 이것을 “Visualizing 기법”을 사용하여 해결하려는 시도를 하였다. 이 후 많은 연구자들이 Zeiler의 논문에
자극을 받아 “Visualizing 기법”을 변형/발전시키는 논문을 발표하게 된다.
> Visualizing Convolutional Neural Networks for Image Classification (2015, Danel Brukner)
> Delving Deep into Convolutional Nets (2014, Ken Chatfield)
ZFNet은 특정구조를 가리키는 개념이 아니라, CNN을 보다 잘 이해할 수 있는 기법을 가리키는 개념으로 이해하는 것이
좋다.
CNN의 중간 layer를 사각화 하기 위해 Deconvolution을 사용하였으며, 가장 큰 난관인 max-pooling 결과에 대한
un-pooling문제를 해결하기 위해 switch라는 개념이 적용되었다. 각각의 intermediate 단에서의 feature가 원영상에서 어떤
영역에 해당하는지, local feature등이 layer가 올라감에 따라 global feature로 바뀌는 것에 대해서도 좀 더 잘 이해할 수 있게
되었다.
영상을 대표할 수 있는 특징은 아래와 같이 3가지로 분류가 가능하다.
Low-level feature : edge, corner, color
Mid-level feature : edge junction
High-level feature : object의 일부분이나 전체 object
ZFNet Architecture
GoogLeNet 출현배경
CNN의 성능을 향상시키는 가장 직접적인 방식은 망의 크기를 늘리는 것이다. (Deeper and Deeper)
여기서 망의 크기를 늘린다는 것은 단순하게 망의 layer 수(depth)를 늘리는 것뿐만 아니라, 각 layer에 있는 unit의 수(width)
도 늘리는 것을 의미한다. 특히 ImageNet 데이터와 같이 대용량 데이터를 이용해 학습을 하는 경우는 거의 필수적이라고 할
수 있다.
2013년까지는 CNN 망의 깊이가 10layer 미만이었지만,
2014년의 대표주자인 GoogLeNet과 VGGNet은 각각
22layer와 19layer로 깊어지게 된다. 물론 top-5 에러율도 각각
6.7%와 7.3%로 낮아지게 된다.
AlexNet의 결과가 나온 뒤 불과 2년 만에 에러율을 약 10%정도
낮추는 쾌거를 이루게 된다.
2015년 우승을 한 ResNet은 망의 깊이가 152layer로 더욱
깊어지게 되며, top-5 에러율도 3.57%로 더욱 낮아지게 된다.
망이 커지면 부작용이 나타난다. 망이 커지면 커질수록 free
parameter의 수가 증가하게 되어 overfitting에 빠질 가능성이
높아진다. 또한 망의 크기가 커지면 그만큼 연산량이 늘어나게
되어 필터의 개수가 증가하게 되면 연산량은 제곱으로
늘어난다.
GoogLeNet과 Inception
구글의 연구팀은 망을 더 깊게 하여 성능 향상을
꾀하면서도 연산량의 증가를 늘리지 않는 CNN
구조를 개발하기 위해 많은 연구를 하였다.
GoogLeNet의 핵심 철학 및 구조
GoogLeNet의 핵심 설계 철학은 주어진 하드웨어 자원을 최대한 효율적으로 이용하면서도 학습 능력은 극대화 할 수 있도록
깊고 넓은 망을 갖는 구조를 설계하는 것이다.
인셉션 모듈에 있는 다양한 크기의 convolution kernel(파란색)을 통해
다양한 scale의 feature를 효과적으로 추출하는 것이 가능함
인셉션 모듈 내부의 여러 곳에 사용되는 (노란색)1X1 convolution layer를
통해, 연산량을 크게 경감시킬 수 있게 되어, 결과적으로 망의 넓이와
깊이를 증가시킬 수 있는 기반이 마련 되었다.
이 인셉션 모듈을 통해 NIN(Network-in-Network) 구조를 갖는 deep CNN
구현이 가능하게 되었다.
GoogLeNet에는, 아래 그림과 같이 총 9개의 인셉션 모듈이 적용
Auxiliary classifier
망이 깊어지면서 생기는 큰 문제 중 하나는 vanish gradient
문제이며, 이로 인해 학습 속도가 아주 느려지거나
overfitting의 문제가 발생함
GoogLeNet에서는 이 문제를 극복하기 위해 Auxiliary
classifier를 중간 2곳에 두었다. 학습을 할 때는 이 Auxiliary
classifier를 이용하여 vanishing gradient 문제를 피하고,
수렴을 더 좋게 해주면서 학습 결과가 좋게 된다.
논문 리서치
> Deeply supervised nets
> Training Deeper Convolutional Networks with Deep
SuperVision
Liwei 연구팀은 초기(10~50)번 정도의 iteration을 통해
gradient가 어떻게 움직이는지 확인을 하고, 그 위치에
Auxiliary classifier를 붙이는 것이 좋다고 논문에서 밝혔다
Inception의 출현 배경
통상적인 CNN의 구조를 보면, convolutional layer 뒤에 pooling layer를 두고, feature-map의 grid(해상도) 크기를 줄이는 것이
일반적
하지만 inception module을 보면, 여러개의 convolution layer와 pooling layer가 나란히 있는 독특한 모양임
효과적으로 해상도(gird size)를 줄이는 방법
- grid 크기를 줄이는 대표적인 방식은 convolution을 수행할 때 stride를 1이상의 값으로 설정하거나 pooling을 사용하는
것
Szegedy(GoogLeNet 설계자중 한 명)는 자신의 논문(Rethinking the inception architecture for computer vision)에서 아래과
같은 구조를 제시 Pooling layer 및 convolution layer를 나란하게 배치하고, 최종
단에 stride 값에 “2”를 적용하게 되면, 결과적으로 5X5, 3X3
convolution을 통해 local feature를 추출하면서 stride 2를 통해
크기가 줄고, 또한 pooling layer를 통해서도 크기를 줄이고 그
결과를 결합하는 방식이다.
오른쪽은 왼쪽보다는 좀 더 단순한 방법으로 stride 2를 갖는
convolution을 통해 320개의 feature-map을 추출하고 pooling
layer를 통해 다시 320개의 feature-map을 추출함으로써효율성과
연산량의 절감을 동시에 달성할 수 있게 되었다.
R-CNN (Regions with Convolutional Neural Networks)
GoogLeNet에서는 단순하게 분류(classification) 성능만 개선한 것이 아니라, R-CNN(Reginons with Convolutional Neural
Networks)를 이용해 위치까지 포함한 object detection 성능을 개선하였다.
R-CNN 알고리즘이 발표되기 이전에 대부분 object detection에 주로 사용되던 방법은 SIFT(Scale Invariant Feature
Transform)이나 HOG(Histogram of Gradient)에 기반한 알고리즘이다. SIFT나 HOG는 대부분 영상 내에 존재하는
gradient성분을 일정 블락으로 나누고 그 경향성을 이용하여 대상을 검출하는 방식을 사용한다.
버클리의 연구팀은 DPM이나 HOG등을 이용한 Detection 연구를 꾸준히 해왔던 팀이며, 2012년 AlexNet의 연구 결과에
자극을 받아 classifcaion분야에서 얻은 괄목할만한 성과를 detection분야에 적용할 수 있는 R-CNN이라는 독특한 구조를
발표하게 된다.
Warped VOC를 이용해 CNN을 fine tuning을 한다. 이 때는 ground truth 데이터와 적어도
0.5IoU(Intersection over Union:교집합/합집합) 이상 되는 region들만 positive로 하고
나머지는 전부 negative로 하여 fine tunning을 시행한다. 이 때 모든 class에 대해 32개의
positive window와 96개의 background window를 적용하여 128개의 mini-batch로 구성을
한다.
마지막으로 linear classifier의 성능을 개선을 위해 hard negative mining방법을
적용하였다.
R-CNN의 문제점과 개선 알고리즘 SPPNet
R-CNN은 region에 기반한 CNN Feature를 사용하여 detection성능을 크게 개선하였지만, 아래와 같은 문제가 있다.
1. AlexNet의 구조를 그대로 사용하였기 때문에 입력 이미지 크기를 강제로 224X224 크기로 맞추기 위해 warping이나 crop을 사용했는데 이로 인한
이미지 변형이나 crop으로 인한 손실로 인해, 성능 저하가 일어날 수 있다.
2. 2000여개에 이르는 region proposal에 대해 순차적으로 CNN을 수행해야 하기 때문에 학습이나 실제 run time이 긴 문제
3. 사용하는 알고리즘이 특히, region proposal이나, SVM 튜닝 등이 GPU사용에 적합하지 않다는 점
SPPNet (Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)
Crop이나 warping을 하면 위 그럼처럼 왜곡이나 손실이 발생한다. Convolutional layer 다음에 spatial pyramid pooling layer를 두고 이 단계에서
pyramid 연산을 통해 입력 영상의 크기를 대응할 수 있게 되면, 굳이 crop/warp를 사용하지 않아도 된다.
SPPNet은 BoW(Bag-of-Words) 개념을 사용한다. BoW란 특정 개체를 분류하는데 굵고 강한 특징에 의존하는 대신에서 작은 여러 개의 특징을
사용하면 개체를 잘 구별할 수 있다는 사실에 기반한다.
SPPNet Architecture
AlexNet이나 ZFNet과 같은 기존 신경망의 입력 영상의 크기가 고정이 되는
이유는 Convolutional layer는 영상의 크기에 영향을 받지 않는데
fully-connnected layer가 입력 영상의 크기에 제한을 받기 때문이다.
SPPNet 설계자들은 BoW 개념처럼 여러 단계의 피라미드 레벨에서 오는 자잘한
feature들을 fully-connected layer의 입력으로 사용하고, 피라미드의 출력을
영상의 크기에 관계없이 사전에 미리 정하면 더 이상 영상의 크기에 제한을 받지
않게 된다는 점에 주목을 함
SPPNet이 R-CNN에 비해 갖는 또 다른 장점 중 하나는 R-CNN은 각각의 후보
window에 대해 crop/warp를 한 후 CNN 과정을 전부 거치지만, SPPNet에서는
영상 크기에 영향을 받지 않기 때문에 전체 영상에 대해 딱 1번 convolutional
layer를 거친 후 해당 window에 대하여 SPP를 수행한 후에 이후 과정을 거치기
때문에, 가장 시간이 오래 걸리는 convolutional 과정을 건너 뛸 수가 있기 때문에
성능이 24~102배 정도 빠르다.
VGGNet
2014년 ILSVRC에서 GoogLeNet과 함께 큰 주목을 받은 팀은 Oxford 대학교의 VGGNet 팀이다.
VGGNet연구팀의 논문 “Very deep convolutional networks for large-scale
image reconginition”에서 밝혔듯이, 원래는 망의 깊이(depth)가 어떤 영향을
주는지 연구를 하기 위해 VGGNet을 개발함 (기본조건 : Receptive field 3X3)
VGGNet Experiments을 통해 본 단점
VGGNet은 AlexNet이나 ZFNet처럼, 224X224크기의 color 이미지를 입력으로
받아들이도록했으며, 1개 혹은 그 이상의 convolutional layer 뒤에 max-pooling
layer가 오는 단순한 구조로 되어 있다. 또한 CNN구조 처럼, 맨 마지막 단에
fully-connected layer가 온다.
VGGNet의 단점은 GoogLeNet 저자 Szegedy가 비판을 했던 것처럼, 파라미터의
개수가 너무 많다는 점이다. 아래 표를 보면 알 수 있는 것처럼, GoogLeNet의
파라미터의 개수가 5million 수준이었던 것에 비해 VGGNet은 가장 단순한
A구조에서도 파라미터의 개수가 133million으로 엄청나게 많다.
그 결정적인 이유는 VGGNet의 경우 AlexNet과 마찬가지로 최종단에
fully-connected layer 3개가 오는데 이 부분에서만 파라미터의 개수가 약
122million개가 온다. 참고로 GoogLeNet은 FC layer가 없다.
VGGNet Experiments Architecture
ResNet (Residual Net) 의 출현 배경
ResNet(Residual Net)의 설계자 ‘Kaiming He’ R-CNN의 속도 문제를 해결한 SPPNet은 ConvNet을 이용하여 detection분야
성능을 크게 개선함
깊은 망의 문제점
1> Vanishing/Exploding Gradient 문제: CNN에서 파라미터 update를 할 때, gradient값이 너무 큰 값이나 작은 값으로
포화되어 더 이상 움직이지 않아 학습의 효과가 없어지거나 학습 속도가 아주 느려지는 문제가 있다. 망이 깊어질수록 이
문제는 점점 더 심각해지며, 이 문제를 피하기 위해 batch normalization, 파라미터의 초기값 설정 방법 개선 등의 기법들이
적용되고 있지만, layer개수가 일정 수를 넘어가게 되면 여전히 문제를 발생하게 된다.
2> 더 어려워지는 학습 방법: 망이 깊어지게 되면, 파라미터의 수가 비례적으로 늘어나게 되어 overfitting의 문제가
아닐지라도 오히려 에러가 더 커지는 상황이 발생한다.
CIFAR-10학습 데이터를 20-layer와
50-layer비교실험
학습오차와 테스트 오차 모두 56-layer가 나쁘다.
이것을 해결하기 위해 deep residual
learning개념이 나오게 되었다.
Residual Learning 알아보기
위와 같은 구조의 평범한 CNN망
이 평범한 망은 입력 x를 받아 2개의
weight layer를 거쳐 출력 H(x)를 냄
학습을 통해 최적의 H(x)를 얻는 것이
목표이다.
Residual Learning의 기본 블락
F(x) = H(x) - x → H(x) = F(x) + x
2개의 weight layer는 H(x) - x 를 얻도록
학습, 결과적으로 출력값은 F(x) + x가
된다. 최적의 경우 F(x)=0
Identity shortcut 연결
- 깊은 망도 쉽게 최적화 가능
- 늘어난 깊이로 인해 정확도
개선
ResNet Experiments
ResNet팀은 망을 설계하면서 VGGNet의 설계 철학을 많이 이용하여 대부분의 convolutional layer는 3X3 kernel을 갖다록
하였으며 아래 2가지 원칙을 지켰다. 또한 복잡도(연산량)를 줄이기 위해 max-pooling(1곳 제외), hidden fc, dropout등을
사용하지 않았다.
1. 출력 feature-map 크기가 같은 경우, 해당 모든 layer는 모두 동일한 수의 filter를 갖는다.
2. Feature-map의 크기가 절반으로 작아지는 경우는 연산량의 균형을 맞추기 위해 필터의 수를 두 배로 늘린다.
Feature-map의 크기를 줄일 때는 pooling을 사용하는 대신에 convolution을 수행할 때, stride의 크기를 “2”로 하는
방식을 취함
표를 보면 18-layer와 34-layer는 동일한 구조를
사용함
다만 각 layer에 있는 convolutional layer 수만 다르다.
Faster R-CNN 등장 배경
ResNet에서는 image detection/localization의 성능을 위해, Faster R-CNN방법을 적용하였다. Faster R-CNN을 이해하려면,
R-CNN, SPPNet, Fast R-CNN 및 Faster R-CNN으로 이어지는 detection분야의 계보를 이해해야 한다.
R-CNN의 문제
1. Traing이 여러 단계로 이뤄짐
R-CNN은 크게 3단계 과정으로 이루어진다. 우선 약 2000여개의 후보 영역에 대하여 log loss방식을 사용하여 fine tunning을
한다. 이후 ConvNet 특징을 이용하여 SVM에 대한 fitting 작업을 진행한다. 끝으로 bounding box regressor(검출된 객체의
영역에 알맞은 크기의 사각형 영역으로 표시하고 위치까지 파악)에 대한 학습을 한다.
2. Training 시간이 길고 대용량 저장 공간이 필요
SVM과 bounding box regressor의 학습을 위해, 영상의 후보 영역으로부터 feature를 추출하고 그것을 디스크에 저장한다.
PASCAL VOC07 학습 데이터 5천장에 대하여 2.5일 정도가 걸리며, 저장 공간도 수백 GigaByte를 필요로 한다.
3. 객체 검출(object detection) 속도가 느림
학습이 오래 걸리는 문제도 있지만, 실제 검출할 때도 875MHz로 오버클럭킹된 K40 GPU에서 영상 1장을 처리하는데 47초가
걸린다.
R-CNN의 가장 큰 문제는 모든 객체 후보 영역에 대하여 개별적으로
연산을 한다는 점이며 이것 때문에 속도가 매우 느림
SPPNet 설계자들은 Spatial Pyramid Pooling을 사용하여
convolution연산을 공유할 수 있는 방법을 제안함 R-CNN보다 학습에서
3배 정도 빠르고, 실 적용 시 약 10~100배 정도 빠름
SPPNet은 구조적인 관점에서 R-CNN과 마찬가지로 학습에 3단계 파이프라인을적용하는 것은 동일하다. 그리고 이렇게 얻어진 feature들은 디스크에
쓰여져야 한다. 또한 R-CNN과 달리 fine-tunning 알고리즘을 적용할 때 SPP 앞단에 있는 convolution layer에 대해서는 fine tunning을 하지 않는데, 이로
인해 deep network를 적용할 때는 정확도에 문제가 될 수도 있다.
Fast R-CNN
Fast R-CNN은 기본적으로 검출 정확도(mAP)가 R-CNN이나 SPPNet보다는 좋으며, 학습 시 multi-stage가 아니라 single-stage로 가능하고, 학습의
결과를 망에 있는 모든 layer에 update할 수 있어야 하며, feature caching을 위해 별도의 디스크 공간이 필요 없는 방법을 개발하는 것을 목표로 함
Fast R-CNN의 기본 구조는 아래와 같다. Fast R-CNN망은 전체 이미지 및 객체 후보 영역을 한꺼번에 받아들인다. Convolution과 max-pooling을 통해
이미지 전체를 한번에 처리를 하고 feature map을 생성한다. 그 후 각 객체 후보 영역에 대하여 ‘ROI Pooling layer’를 통해, feature-map으로부터
fixed-length feature 벡터를 추출한다. 이 부분은 SPPNet의 Spatial Pyramid Pooling과 하는 일이 유사하다고 볼 수 있다.
이렇게 추출된 fixed-length feature
vector는 Fully-Connected Layer에 인가를
하며, 뒷단에는 “object class +
background”를 추정하기 위한
softmax부분과 각각의 object class의
위치를 출력하는 bbox(bounding box)
regressor가 온다.
Faster R-CNN Architecture
NoC (Network on Conv feature map)
“Object Detection Networks on
Convolutional Feature Maps”
Object Detection은 크게 보면 feature
extraction부분과 object classifier부분으로
나눌 수 있다.
정확도를 개선하려면, 기존처럼 fully connected layer만을 사용하는
것보다는 fully connected layer 앞에 convolutional layer를 추가하면
결과가 좋아지며, multi-scale을 대응하기 위한 인접한 scale에서의
feature map결과를 선택하는 “Maxout”방식을 지원하면 결과가 더
개선되는 것을 확인할 수 있다.
참고 사이트 : https://laonple.blog.me/220654387455

Mais conteúdo relacionado

Mais procurados

CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)Lee Seungeun
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례SangYun Yi
 
Deep Learning - CNN and RNN
Deep Learning - CNN and RNNDeep Learning - CNN and RNN
Deep Learning - CNN and RNNAshray Bhandare
 
Particle swarm optimization
Particle swarm optimizationParticle swarm optimization
Particle swarm optimizationAbhishek Agrawal
 
Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더동석 김
 
Image style transfer & AI on App
Image style transfer & AI on AppImage style transfer & AI on App
Image style transfer & AI on AppChihyang Li
 
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-Takahiro Kubo
 
【DL輪読会】HyperDiffusion: Generating Implicit Neural Fields withWeight-Space Dif...
【DL輪読会】HyperDiffusion: Generating Implicit Neural Fields withWeight-Space Dif...【DL輪読会】HyperDiffusion: Generating Implicit Neural Fields withWeight-Space Dif...
【DL輪読会】HyperDiffusion: Generating Implicit Neural Fields withWeight-Space Dif...Deep Learning JP
 
"How to Get the Best Deep Learning Performance with the OpenVINO Toolkit," a ...
"How to Get the Best Deep Learning Performance with the OpenVINO Toolkit," a ..."How to Get the Best Deep Learning Performance with the OpenVINO Toolkit," a ...
"How to Get the Best Deep Learning Performance with the OpenVINO Toolkit," a ...Edge AI and Vision Alliance
 
Back propagation using sigmoid & ReLU function
Back propagation using sigmoid & ReLU functionBack propagation using sigmoid & ReLU function
Back propagation using sigmoid & ReLU functionRevanth Kumar
 
"How does batch normalization help optimization" Paper Review
"How does batch normalization help optimization" Paper Review"How does batch normalization help optimization" Paper Review
"How does batch normalization help optimization" Paper ReviewLEE HOSEONG
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠동환 김
 
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
輪読発表資料: Efficient Virtual Shadow Maps for Many Lightsomochi64
 
[124]자율주행과 기계학습
[124]자율주행과 기계학습[124]자율주행과 기계학습
[124]자율주행과 기계학습NAVER D2
 
Objectnessとその周辺技術
Objectnessとその周辺技術Objectnessとその周辺技術
Objectnessとその周辺技術Takao Yamanaka
 
[PR12] Inception and Xception - Jaejun Yoo
[PR12] Inception and Xception - Jaejun Yoo[PR12] Inception and Xception - Jaejun Yoo
[PR12] Inception and Xception - Jaejun YooJaeJun Yoo
 
[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리KyeongWon Koo
 
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)徹 上野山
 

Mais procurados (20)

CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
 
Deep Learning - CNN and RNN
Deep Learning - CNN and RNNDeep Learning - CNN and RNN
Deep Learning - CNN and RNN
 
PRML 5.5.6-5.6
PRML 5.5.6-5.6PRML 5.5.6-5.6
PRML 5.5.6-5.6
 
Particle swarm optimization
Particle swarm optimizationParticle swarm optimization
Particle swarm optimization
 
Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더
 
Image style transfer & AI on App
Image style transfer & AI on AppImage style transfer & AI on App
Image style transfer & AI on App
 
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-
 
【DL輪読会】HyperDiffusion: Generating Implicit Neural Fields withWeight-Space Dif...
【DL輪読会】HyperDiffusion: Generating Implicit Neural Fields withWeight-Space Dif...【DL輪読会】HyperDiffusion: Generating Implicit Neural Fields withWeight-Space Dif...
【DL輪読会】HyperDiffusion: Generating Implicit Neural Fields withWeight-Space Dif...
 
"How to Get the Best Deep Learning Performance with the OpenVINO Toolkit," a ...
"How to Get the Best Deep Learning Performance with the OpenVINO Toolkit," a ..."How to Get the Best Deep Learning Performance with the OpenVINO Toolkit," a ...
"How to Get the Best Deep Learning Performance with the OpenVINO Toolkit," a ...
 
Back propagation using sigmoid & ReLU function
Back propagation using sigmoid & ReLU functionBack propagation using sigmoid & ReLU function
Back propagation using sigmoid & ReLU function
 
"How does batch normalization help optimization" Paper Review
"How does batch normalization help optimization" Paper Review"How does batch normalization help optimization" Paper Review
"How does batch normalization help optimization" Paper Review
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠
 
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
 
[124]자율주행과 기계학습
[124]자율주행과 기계학습[124]자율주행과 기계학습
[124]자율주행과 기계학습
 
Objectnessとその周辺技術
Objectnessとその周辺技術Objectnessとその周辺技術
Objectnessとその周辺技術
 
[PR12] Inception and Xception - Jaejun Yoo
[PR12] Inception and Xception - Jaejun Yoo[PR12] Inception and Xception - Jaejun Yoo
[PR12] Inception and Xception - Jaejun Yoo
 
[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리
 
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
 
ResNetの仕組み
ResNetの仕組みResNetの仕組み
ResNetの仕組み
 

Semelhante a HistoryOfCNN

History of Vision AI
History of Vision AIHistory of Vision AI
History of Vision AITae Young Lee
 
밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장Sunggon Song
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용Youngjae Kim
 
Densely Connected Convolutional Networks
Densely Connected Convolutional NetworksDensely Connected Convolutional Networks
Densely Connected Convolutional NetworksOh Yoojin
 
Deep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural NetworkDeep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural Networkagdatalab
 
Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks Korea, Sejong University.
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Othersjdo
 
03.12 cnn backpropagation
03.12 cnn backpropagation03.12 cnn backpropagation
03.12 cnn backpropagationDea-hwan Ki
 
FCN to DeepLab.v3+
FCN to DeepLab.v3+FCN to DeepLab.v3+
FCN to DeepLab.v3+Whi Kwon
 
딥러닝 논문읽기 efficient netv2 논문리뷰
딥러닝 논문읽기 efficient netv2  논문리뷰딥러닝 논문읽기 efficient netv2  논문리뷰
딥러닝 논문읽기 efficient netv2 논문리뷰taeseon ryu
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNetjdo
 
Convolutional Neural Networks(CNN) / Stanford cs231n 2017 lecture 5 / MLAI@UO...
Convolutional Neural Networks(CNN) / Stanford cs231n 2017 lecture 5 / MLAI@UO...Convolutional Neural Networks(CNN) / Stanford cs231n 2017 lecture 5 / MLAI@UO...
Convolutional Neural Networks(CNN) / Stanford cs231n 2017 lecture 5 / MLAI@UO...changedaeoh
 
네트워크 경량화 이모저모 @ 2020 DLD
네트워크 경량화 이모저모 @ 2020 DLD네트워크 경량화 이모저모 @ 2020 DLD
네트워크 경량화 이모저모 @ 2020 DLDKim Junghoon
 
[Paper Review] Visualizing and understanding convolutional networks
[Paper Review] Visualizing and understanding convolutional networks[Paper Review] Visualizing and understanding convolutional networks
[Paper Review] Visualizing and understanding convolutional networksKorea, Sejong University.
 
텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNN텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNNHwanhee Kim
 
스마트폰 위의 딥러닝
스마트폰 위의 딥러닝스마트폰 위의 딥러닝
스마트폰 위의 딥러닝NAVER Engineering
 

Semelhante a HistoryOfCNN (20)

History of Vision AI
History of Vision AIHistory of Vision AI
History of Vision AI
 
CNN
CNNCNN
CNN
 
LeNet & GoogLeNet
LeNet & GoogLeNetLeNet & GoogLeNet
LeNet & GoogLeNet
 
밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용
 
Densely Connected Convolutional Networks
Densely Connected Convolutional NetworksDensely Connected Convolutional Networks
Densely Connected Convolutional Networks
 
Deep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural NetworkDeep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural Network
 
Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks
 
Convolutional rnn
Convolutional rnnConvolutional rnn
Convolutional rnn
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 
03.12 cnn backpropagation
03.12 cnn backpropagation03.12 cnn backpropagation
03.12 cnn backpropagation
 
FCN to DeepLab.v3+
FCN to DeepLab.v3+FCN to DeepLab.v3+
FCN to DeepLab.v3+
 
딥러닝 논문읽기 efficient netv2 논문리뷰
딥러닝 논문읽기 efficient netv2  논문리뷰딥러닝 논문읽기 efficient netv2  논문리뷰
딥러닝 논문읽기 efficient netv2 논문리뷰
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
 
Convolutional Neural Networks(CNN) / Stanford cs231n 2017 lecture 5 / MLAI@UO...
Convolutional Neural Networks(CNN) / Stanford cs231n 2017 lecture 5 / MLAI@UO...Convolutional Neural Networks(CNN) / Stanford cs231n 2017 lecture 5 / MLAI@UO...
Convolutional Neural Networks(CNN) / Stanford cs231n 2017 lecture 5 / MLAI@UO...
 
GoogLenet
GoogLenetGoogLenet
GoogLenet
 
네트워크 경량화 이모저모 @ 2020 DLD
네트워크 경량화 이모저모 @ 2020 DLD네트워크 경량화 이모저모 @ 2020 DLD
네트워크 경량화 이모저모 @ 2020 DLD
 
[Paper Review] Visualizing and understanding convolutional networks
[Paper Review] Visualizing and understanding convolutional networks[Paper Review] Visualizing and understanding convolutional networks
[Paper Review] Visualizing and understanding convolutional networks
 
텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNN텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNN
 
스마트폰 위의 딥러닝
스마트폰 위의 딥러닝스마트폰 위의 딥러닝
스마트폰 위의 딥러닝
 

Mais de Tae Young Lee

Review of the Paper on Capabilities of Gemini Models in Medicine
Review of the Paper on Capabilities of Gemini Models in MedicineReview of the Paper on Capabilities of Gemini Models in Medicine
Review of the Paper on Capabilities of Gemini Models in MedicineTae Young Lee
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
LLMs Service that provides what users want to know
LLMs Service that provides what users want to knowLLMs Service that provides what users want to know
LLMs Service that provides what users want to knowTae Young Lee
 
Exploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsTae Young Lee
 
LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드Tae Young Lee
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System HistoryTae Young Lee
 
검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPT검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPTTae Young Lee
 
검색엔진에 적용된 딥러닝 모델 방법론
검색엔진에 적용된 딥러닝 모델 방법론검색엔진에 적용된 딥러닝 모델 방법론
검색엔진에 적용된 딥러닝 모델 방법론Tae Young Lee
 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning CompilerTae Young Lee
 
Enhanced ai platform
Enhanced ai platformEnhanced ai platform
Enhanced ai platformTae Young Lee
 
Real estate trust solution
Real estate trust solutionReal estate trust solution
Real estate trust solutionTae Young Lee
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usageTae Young Lee
 
Create a solution including deep learning models
Create a solution including deep learning modelsCreate a solution including deep learning models
Create a solution including deep learning modelsTae Young Lee
 
Infra as a model service
Infra as a model serviceInfra as a model service
Infra as a model serviceTae Young Lee
 
Deep learning financial product recommendation model
Deep learning financial product recommendation modelDeep learning financial product recommendation model
Deep learning financial product recommendation modelTae Young Lee
 

Mais de Tae Young Lee (20)

Review of the Paper on Capabilities of Gemini Models in Medicine
Review of the Paper on Capabilities of Gemini Models in MedicineReview of the Paper on Capabilities of Gemini Models in Medicine
Review of the Paper on Capabilities of Gemini Models in Medicine
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
LLMs Service that provides what users want to know
LLMs Service that provides what users want to knowLLMs Service that provides what users want to know
LLMs Service that provides what users want to know
 
Exploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMs
 
LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System History
 
검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPT검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPT
 
검색엔진에 적용된 딥러닝 모델 방법론
검색엔진에 적용된 딥러닝 모델 방법론검색엔진에 적용된 딥러닝 모델 방법론
검색엔진에 적용된 딥러닝 모델 방법론
 
PaLM Paper Review
PaLM Paper ReviewPaLM Paper Review
PaLM Paper Review
 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning Compiler
 
Aws architecture
Aws architectureAws architecture
Aws architecture
 
Enhanced ai platform
Enhanced ai platformEnhanced ai platform
Enhanced ai platform
 
Nvidia architecture
Nvidia architectureNvidia architecture
Nvidia architecture
 
Ai based on gpu
Ai based on gpuAi based on gpu
Ai based on gpu
 
Real estate trust solution
Real estate trust solutionReal estate trust solution
Real estate trust solution
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usage
 
Create a solution including deep learning models
Create a solution including deep learning modelsCreate a solution including deep learning models
Create a solution including deep learning models
 
Infra as a model service
Infra as a model serviceInfra as a model service
Infra as a model service
 
Bayesian learning
Bayesian learningBayesian learning
Bayesian learning
 
Deep learning financial product recommendation model
Deep learning financial product recommendation modelDeep learning financial product recommendation model
Deep learning financial product recommendation model
 

Último

공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화JMP Korea
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP Korea
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP Korea
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP Korea
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?Jay Park
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP Korea
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법JMP Korea
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석JMP Korea
 

Último (8)

공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 

HistoryOfCNN

  • 2. CNN(Convolutional Neural Network) CNN은 1989년 LeCun이 발표한 논문 (“Backpropagation applied to handwritten zip code recognition”)에서 처음 소개가 되었고, 필기체 zip code인식을 위한 프로젝트를 통해 개발이 됨 - 범용화에는 미흡하였음 2003년 Behnke의 논문 (“Hierachical Neural Networks for Image Interpretation”)을 통해 일반화가 되었으며, Simard의 논문 (“Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis”)을 통해 단순화되면서 개념 확대의 초석이 마련됨
  • 3. MLP(Multi-Layer Perceptron) 필기체 인식을 위해, 위 그림처럼 256개의 입력단과 100개의 hidden-layer 및 26개의 출력단으로 구성이 되면 hidden layer가 1개만 있는 단순한 구조에서도 필요한 가중치(weight) 와 bias는 총 28,326개가 필요하게 된다. 폰트의 크기가 커지거나 hidden layer가 2단 이상이 되거나, 대소문자 구별이나 숫자까지 구별을 해야 한다면 파라미터의 개수가 엄청나게 많아지게 된다. 또한 글자의 크기가 달라지거나 글자가 회전되거나, 글자에 변형이 조금만 생기더라도 새로운 학습 데이터를 넣어주지 않으면 좋은 결과를 기대하기 어렵다.
  • 4. MLP문제와 해결책 [ 문제점 ] 결과적으로 기존 multi-layered neural network는 글자의 topology는 고려하지 않고, 말 그대로 raw data에 대해 직접적으로 처리를 하기 때문에 엄청나게 많은 학습 데이터를 필요로 하고, 또한 거기에 따른 학습 시간을 대가로 지분해야 하는 문제점이 있다. 기존의 fully-connected multi-layered neural network를 사용하면, 3가지 측면에 문제가 발생함을 알 수 있다. 학습 시간 (Training time), 망의 크기 (Network size), 변수의 개수 (Number of free parameters) [ 해결책 ] visual cortex 부분과 유사한 신경망을 만들고 싶어 했고, 그 결과가 바로 CNN(Convolutional Neural Network)이다. CNN의 기본 개념은 visual cortex에 있는 receptive field개념에 기반을 하고 있다.
  • 5. CNN의 구조와 과정 CNN의 과정은 크게 보면 위와 같은 3단계 과정으로 이루어진다. 1. 특징을 추출하기 위한 단계 2. Topology 변화에 영향을 받지 않도록 해주는 단계 3. 분류기 단계 특징을 추출하는 단계가 내부에 포함이 되어 있기 때문에 raw image에 대해 직접 operation이 가능하며, 기존 알고리즘과 달리 별도의 전처리 (pre-processing) 단계를 필요로 하지 않는다. 특징 추출과 topology invariance를 얻기 위해 filter와 sub-sampling을 거치며, 보통 이 과정을 여러 번을 반복적으로 수행하여 local feature로 부터 global feature를 얻어낸다. 이동이나 변형 등에 무관한 학습 결과를 보이려면, 좀 더 강하고 global한 특징을 추출해야 하는데, 이를 위해 통상적으로 (convolution + sub-sampling) 과정을 여러 번을 거치게 되면, 좀 더 전체 이미지를 대표할 수 있는 global한 특징을 얻을 수 있게 된다. 이렇게 얻어진 특징을 fully-connected network를 통해 학습을 시키게 되면, 2차원 영상 정보로부터 receptive field와 강한 신호 선택의 특성을 살려, topology 변화에 강인한 인식 능력을 갖게 됨
  • 6. CNN의 주요 Layer 여러 개의 다른 특징을 추출하고 싶다면, 다른 특징을 추출할 수 있도록 convolution kernel의 개수를 설정하면 된다. 다음 과정은 sub-sampling 과정이며, sub-sampling은 통상적으로 feature map의 크기를 줄여주면서, 이를 통해 topology invariance도 얻을 수가 있게 된다. 보통 1개의 feature map에 대해 1개의 sub-sampling연산을 수행한다. 이렇게 해서 local feature를 얻었다면, 그 local feature에 대해 다시 convolution과 sub-sampling을 수행하며, 이 과정을 통해 좀 더 global feature를 얻을 수 있게 된다. 여러 단의 (convolution + sub-sampling)과정을 거치면, feature map의 크기가 작아지면서 전체를 대표할 수 있는 강인한 특징들만 남게 된다. 이렇게 얻어진 global한 특징은 fully connected network의 입력으로 연결이 된다. CNN의 주요 layer는 convolution layer, sub-sampling(pooling) layer, fully-connected layer이다.
  • 7. Convolution Layer Lecun - “Gradient-based learning applied to document recognition” Krizhevsky - “ImageNet classification with deep convolution neural network”
  • 8. Convolution Layer의 hyper-parameter(1) Convolution layer에 관련된 중요한 hyper-parameter가 바로 필터의 개수와 필터의 형태이다. Convolution layer의 연산 시간 Tc(각 layer에서의 연산시간) = Np(출력 pixel의 수) X Nf(전체 feature map의 개수) X Tk(각 filter당 연산 시간) 필터의 개수를 정할 때 흔히 사용하는 방법은 각 단에서의 연산 시간/량을 비교적 유지하여 시스템의 균형을 맞추는 것 이를 위해 일반적으로 각 layer에서 feature map의 개수와 pixel 수의 곱을 대략적으로 일정하게 유지한다. 1. Filter의 개수 - Feature map의 크기 (즉, convolution layer의 출력 영상의 크기)는 layer의 depth가 커질수록 작아지기 때문에, 일반적으로 영상의 크기가 큰 입력단 근처에 있는 layer는 filter의 개수가 적고, 입력단에서 멀어질수록 filter의 개수는 증가하는 경향이 있다. 2. Filter의 형태 - 결과적으로 여러 개의 작은 크기의 필터를 중첩해서 사용하는 것이 좋다. 이는 작은 필터를 여러 개 중첩하면 중간 단계에 있는 non-linearity를 활용하여 원하는 특징을 좀 더 돋보이도록 할 수 있기 때문이다. 뿐만 아니라, 작은 필터를 여러 개 중첩해서 사용하는 것이 연산량도 더 적게 만든다. 3. Stride 값 - Stride는 convolution을 수행할 때, 건너 뛸 픽셀의 개수를 결정한다. - Stride는 입력 영상의 크기가 큰 경우, 연산량을 줄이기 위한 목적으로 입력단과 가까운 쪽에만 적용을 한다. - 통상적으로 보았을 때는 stride를 1로 하고, pooling을 통해 적절한 sub-sampling과정을 거치는 것이 결과가 좋다. Krizhevsky의 논문처럼 큰 영상에 대해 CNN을 적용하는 경우 연산량을 줄이기 위해 1단계 convolution layer에서 stride를 1이 아닌 값을 적용하기도 한다.
  • 9. Convolution Layer의 hyper-parameter(2) 32X32 INPUT 영상에 대해 Kernel 크기가 5X5인 convolution을 적용하면 feature map의 크기가 28X28로 줄어 든다. 14X14 영상에 대해 다시 5X5 convolution을 수행하면 결과는 10X10으로 줄어든다. 보통 convolution 연산을 하게 되면, 경계 처리문제로 인해 출력 영상인 feature map의 크기가 입력 영상보다 작아지게 된다. Zero-padding은 작아지는 것을 피하기 위해 입력의 경계면에 0을 추가하는 것을 말한다. 만약에 입력 영상의 경계에 0을 2픽셀씩 추가하여 36X36 크기의 영상을 만들었다면 feature map의 크기는 32X32가 된다. 이렇게 zero-padding을 지원하면 영상 크기를 동일하게 유지할 수 있다. 그럼 zero-padding을 하는 이유는 무엇일까? 단순한게 영상의 크기를 동일하게 유지하는 장점 이외에도, 경계면의 정보까지 살릴 수 있어 zero-padding을 지원하지 않는 경우에 비해 zero-padding을 지원하는 것이 좀 더 결과가 좋다
  • 10. CNN Architecture 변천사 LeNet - 1990년 Yann Lecun AlexNet - Krizhevsky, Hinton 2012년 ImageNet ILSVRC대회 우승 구조는 LeNet과 유사하지만, convolutional layer 바로 뒤에 convolutional layer가 옴 ZF Net - ILSVRC 2013년 대회에서 우승 뉴욕대 Matthew Zeiler와 Rob Fergus에 의해 개발 AlexNet의 hyper-parameter 수정하여 성능을 좀 더 개선하였고 중간에 convolutional layer의 크기를 늘림 GoogLeNet - ILSVRC 2014년 대회에서 우승구글의 Szegedy 등에 의해 개발 “Inception Module”개념을 도입, 이것을 통해 망의 파라미터 수를 대폭 줄일 수 있게 됨 (참고로AlexNet은 60M 파라미터가 있지만, GoogLeNet의 경우는 4M 임) VGGNet - ILSVRC 2014년 대회 2등 영국 옥스포드 대학교 Karen Simonyan과 Andrew Zissenrman에 의해서 개발 대량의 이미지를 인식함에 있어, 망의 깊이(depth)가 정확도에 어떤 영향을 주는지를 보여줌 망의 시작부터 끝까지 동일하게 3X3 convolution과 2X2 max pooling을 사용하는 단순한 구조에서 depth가 16일 때 최적의 결과가 나오는 것을 보여줌 단점이라면, 메모리 수와 파라미터의 수가 크다는 점 ResNet - ILSVRC 2015년 대회 우승 마이크로소프트의Kaiming He등에 의해서 개발됨 기존 DNN(Deep Neural Network)보다 layer 수가 훨씬 많은 Deeper NN에 대한 학습(training)을 쉽게 할 수 있도록 해주는 Residual framework 개념을 도입 ILSVRC - ImageNet Large Scale Visual Recognition Challenge의 약어 ImageNet - 세계 최대의 영상 데이터 베이스
  • 11. LeNet-5 Architecture (1) LeNet-5의 구조는 총 3개의 convolution layer, 2개의 sub-sampling layer 및 1개의 fully-connected layer를 갖고 있다는 것을 알 수 있다. Convolution뒤에 sub-sampling이어지면서, 영상의 크기가 1/4로 줄어들게 된다. C1은 convolutional layer이며 32X32 영상을 입력으로 받아 28X28 크기의 feature-map 영상을 만들어 낸다. 5X5 kernel을 사용하고, zero-padding을 지원하지 않기 때문에 boundary 정보가 사라지면서 28X28 크기의 feature-map 영상이 나오게 된다. Convolution kernel의 계수(parameter)는 사전에 결정되는 것이 아니라, 최적의 결과를 낼 수 있도록 학습을 통해 결정이 된다. C1 단계는 각 convolution kernel에서 (총 26 = 25+1)의 자유 파라미터가 있고, 그런 커널이 6개 있기 때문에 156개의 자유 파라미터 있음 S2는 sub-sampling을 수행하며, 2X2 크기의 receptive field로부터 average pooling을 수행하기 때문에, 결과적으로 28X28 크기의 feature-map 영상을 입력으로 받아, 14X14 크기의 출력 영상을 만들어 내며, 각각의 feature map에 대해 1개의 대응하는 sub-sampling layer가 있다. Average pooling을 수행하기 때문에 weight 1 + bias 1 로 각각의 sub-sampling layer는 2개의 파라미터를 갖고, 자유 파라미터의 개수는 총 12개 있다.
  • 12. LeNet-5 Architecture (2) C3는 C1과 동일한 크기의 5X5 convolution을 수행하며, 14X14 입력 영상을 받아 10X10 크기의 출력 영상을 만들어 낸다. 6개의 입력 영상으로부터16개의 convolution 영상을 만들어 내는데, 이 때 6개의 모든 입력 영상이 16개의 모든 출력 영상에 연결이 되는 것이 아니라, 선택적으로 입력 영상을 골라, 출력 영상에 반영이 될 수 있도록 한다. 이렇게 하는 이유는 연산량의 크기를 줄이려는 이유도 있지만, 결정적인 이유는 연결의 symmetry를 깨줌으로써, 처음 convolution으로부터 얻은 6개의 low-level feature가 서로 다른 조합으로 섞이면서 global feature로 나타나기를 기대하기 때문이다. 이 단계의 자유 파라미터의 개수는 1516개 = 25(커널)X60(S2의 feature map과 C3의 convolution에 대한 연결)+16(bias)의 결과 이다. S4는 S2와 마찬가지로 sub-sampling단계이며, 10X10 feature-map 영상을 받아 5X5 출력 영상을 만들며, 이 단계의 자유 파라미터의 개수는 32(2X16) 개 이다. C5는 16개의 5X5영상을 받아, 5X5 kernel크기의 convolution을 수행하기 때문에 출력은 1X1크기의 feature-map이며, fully connected 형태로 연결하여 총 120개의 feature map을 생성한다. 이전 단계에서 얻어진 16개의 feature-map이 convolution을 거치면서 다시 전체적으로 섞이는 결과를 내게 된다. F6는 fully-connected이며 C5의 결과를 84개의 unit에 연결을 시킨다. 자유 파라미터의 개수는 (120+1)X84=10164가 된다.
  • 13. AlexNet Architecture AlexNet은 총 5개의 convolution layers와 3개의 full-connected layers로 구성이 되어 있으며, 맨 마지막 FC layer는 1000개의 category로 분류를 위해 활성 함수로 softmax 함수를 사용하고 있음을 알 수 있다. AlexNet은 약 65만개의 뉴런, 6000만개의 free parameter 및 6억 3000만개의 connection으로 구성된 방대한 CNN구조를 갖고 있으며, 이렇게 방대한 망에 대한 학습을 위해 2개의 GPU(NVIDIA GTX580)를 사용하고 있다. 영상의 크기를 나타내는 width와 height 뿐만 아니라 depth를 갖는다. 보통 color 영상의 경우는 R/G/B 3개의 성분을 갖기 때문에 시작이 3이지만, convolution을 거치면서 feature-map이 만들어지고 이것에 따라 중간 영상의 depth가 달라진다. 이것을 이해하면, AlexNet의 블록도에 있는 숫자의 의미가 파악이 가능하다.
  • 14. AlexNet의 경우 입력 영상의 크기가 227X227X3 으로 영상의 크기가 매우 크다. 첫번째 convolution layer의 kernel 크기가 11X11X3 크기로 비교적 큰 receptive field를 사용하고 있고 stride의 크기를 4로 적용했으며, 96개의 feature-map을 생성하기 때문에 결과는 55X55X96=290,400 이 된다. 290,400개의 neuron으로 각 kernel은 11X11X3 = 363개의 weight 및 1개의 bias를 변수로 갖기 때문에 kernel 당 364개의 parameter이고, kernel이 96개이므로 364X94=34,944의 free parameter(LeNet 전체의 절반이상), connection의 숫자도 290,400X364=105,750,600으로 첫번째 layer에서만 1억개 이상의 connection이 만들어진다. 첫번째 convolution layer를 거치게 되면, 96개의 feature-map을 얻을 수 있다. GPU-1에서는 주로 컬러와 상관없는 정보를 추출하기 위한 kernel이 학습이 되고, GPU-2에서는 주로 color에 관련된 정보를 추출하기 위한 kernel이 학습이 된다. 두번째 convolutional layer는 5X5X48크기를 갖는 kernel을 사용하고 있다. 첫번째 convolutional layer에서 연산의 수를 줄이기 위해 stride를 4로 적용을 하여 자연스럽게 pooling을 한 것처럼 영상의 크기를 줄였다. 세번째 convolutional layer 연산을 하기 전에 response normalization과 pooling과정을 거쳐 영상의 크기를 27X27X256으로 줄였고, 3X3X256 크기를 갖는 kernel을 사용하여 convolution연산을 수행하고 384개의 feature-map을 얻는다. 이 때 GPU-1과 GPU-2의 결과를 모두 섞어 사용한다. 그 결과에 대해 response normalization과 pooling을 거쳐 13X13X384크기의 영상을 얻으며, 그 결과에 대해 4번/5번 convolution 블락도와 같이 적용이 된다. 최종 convolution을 거친 영상은 pooling과정을 거쳐 총 4096개의 fully connected net에 연결이 되고, 최종단은 1000개의 category에서 결과를 낼 수 있게 softmax함수가 적용됨
  • 15. CNN의 구조에서 일반적으로 pooling은 convolution을 통해 얻은 feature-map 영상의 크기를 줄이기 위한 용도로 사용하며 average pooling 또는 max pooling을 사용한다. Max pooling은 average pooling에 비해 최대값을 구해야 하기 때문에 연산량이 더 많지만, 최대 크기를 갖는 자극만 전달한다는 관점에서 보면, 생물학적인 특성과 좀 더 유사하다고 할 수 있다. LeNet-5에서는 average pooling방식을 사용했고, AlexNet에서는 max pooling을 사용하였다. 아래 그림의 화살표 영역이 pooling layer에 해당된다. 통상적으로 pooling을 할 때는 겹치는 부분이 없게 하는 것이 대부분이며, pooling window의 크기도 2X2를 주로 사용하고, stride도 2를 사용하기 때문에 출력 영상의 크기가 가로/세로 각각 1/2로 줄어들게 된다. 하지만AlexNet은 2X2 window 대신 3X3 window를 선택하고, stride(건너뛰기)를 2로 하는 overlapped pooling 방식을 사용했다. 이 overlapped pooling 방식을 통해 top-1과 top-5 에러율을 각각 0.4%와 0.3% 줄일 수 있었으며, overfitting에 빠질 가능성도 더 줄일 수 있다고 주장을 하고 있다.
  • 16. ZFNet 출현 배경 CNN의 구조를 결정하는 hyper-parameter는 어떻게 설정을 할 것인지, 또는 자신들이 개발한 구조가 과연 최적인지 판가름하는 것은 너무 어렵다. AlexNet의 경우 2개의 GPU를 사용하여 학습을 하는데 일주일 이상이 걸리는데, 10개가 넘는 hyper-parameter의 조합 중 최고를 찾아낸다는 것이 과연 가능한 일일까? 좋은 결과는 얻었지만, 이론적으로 설명하기가 어렵고, 최적의 구조인지도 확신할 수도 없는 상황이기 때문에 뭔가 CNN을 보다 잘 이해할 수 있는 수단이 필요했으며, Matthew Zeiler는 이것을 “Visualizing 기법”을 사용하여 해결하려는 시도를 하였다. 이 후 많은 연구자들이 Zeiler의 논문에 자극을 받아 “Visualizing 기법”을 변형/발전시키는 논문을 발표하게 된다. > Visualizing Convolutional Neural Networks for Image Classification (2015, Danel Brukner) > Delving Deep into Convolutional Nets (2014, Ken Chatfield) ZFNet은 특정구조를 가리키는 개념이 아니라, CNN을 보다 잘 이해할 수 있는 기법을 가리키는 개념으로 이해하는 것이 좋다. CNN의 중간 layer를 사각화 하기 위해 Deconvolution을 사용하였으며, 가장 큰 난관인 max-pooling 결과에 대한 un-pooling문제를 해결하기 위해 switch라는 개념이 적용되었다. 각각의 intermediate 단에서의 feature가 원영상에서 어떤 영역에 해당하는지, local feature등이 layer가 올라감에 따라 global feature로 바뀌는 것에 대해서도 좀 더 잘 이해할 수 있게 되었다. 영상을 대표할 수 있는 특징은 아래와 같이 3가지로 분류가 가능하다. Low-level feature : edge, corner, color Mid-level feature : edge junction High-level feature : object의 일부분이나 전체 object
  • 18. GoogLeNet 출현배경 CNN의 성능을 향상시키는 가장 직접적인 방식은 망의 크기를 늘리는 것이다. (Deeper and Deeper) 여기서 망의 크기를 늘린다는 것은 단순하게 망의 layer 수(depth)를 늘리는 것뿐만 아니라, 각 layer에 있는 unit의 수(width) 도 늘리는 것을 의미한다. 특히 ImageNet 데이터와 같이 대용량 데이터를 이용해 학습을 하는 경우는 거의 필수적이라고 할 수 있다. 2013년까지는 CNN 망의 깊이가 10layer 미만이었지만, 2014년의 대표주자인 GoogLeNet과 VGGNet은 각각 22layer와 19layer로 깊어지게 된다. 물론 top-5 에러율도 각각 6.7%와 7.3%로 낮아지게 된다. AlexNet의 결과가 나온 뒤 불과 2년 만에 에러율을 약 10%정도 낮추는 쾌거를 이루게 된다. 2015년 우승을 한 ResNet은 망의 깊이가 152layer로 더욱 깊어지게 되며, top-5 에러율도 3.57%로 더욱 낮아지게 된다. 망이 커지면 부작용이 나타난다. 망이 커지면 커질수록 free parameter의 수가 증가하게 되어 overfitting에 빠질 가능성이 높아진다. 또한 망의 크기가 커지면 그만큼 연산량이 늘어나게 되어 필터의 개수가 증가하게 되면 연산량은 제곱으로 늘어난다.
  • 19. GoogLeNet과 Inception 구글의 연구팀은 망을 더 깊게 하여 성능 향상을 꾀하면서도 연산량의 증가를 늘리지 않는 CNN 구조를 개발하기 위해 많은 연구를 하였다.
  • 20. GoogLeNet의 핵심 철학 및 구조 GoogLeNet의 핵심 설계 철학은 주어진 하드웨어 자원을 최대한 효율적으로 이용하면서도 학습 능력은 극대화 할 수 있도록 깊고 넓은 망을 갖는 구조를 설계하는 것이다. 인셉션 모듈에 있는 다양한 크기의 convolution kernel(파란색)을 통해 다양한 scale의 feature를 효과적으로 추출하는 것이 가능함 인셉션 모듈 내부의 여러 곳에 사용되는 (노란색)1X1 convolution layer를 통해, 연산량을 크게 경감시킬 수 있게 되어, 결과적으로 망의 넓이와 깊이를 증가시킬 수 있는 기반이 마련 되었다. 이 인셉션 모듈을 통해 NIN(Network-in-Network) 구조를 갖는 deep CNN 구현이 가능하게 되었다. GoogLeNet에는, 아래 그림과 같이 총 9개의 인셉션 모듈이 적용
  • 21. Auxiliary classifier 망이 깊어지면서 생기는 큰 문제 중 하나는 vanish gradient 문제이며, 이로 인해 학습 속도가 아주 느려지거나 overfitting의 문제가 발생함 GoogLeNet에서는 이 문제를 극복하기 위해 Auxiliary classifier를 중간 2곳에 두었다. 학습을 할 때는 이 Auxiliary classifier를 이용하여 vanishing gradient 문제를 피하고, 수렴을 더 좋게 해주면서 학습 결과가 좋게 된다. 논문 리서치 > Deeply supervised nets > Training Deeper Convolutional Networks with Deep SuperVision Liwei 연구팀은 초기(10~50)번 정도의 iteration을 통해 gradient가 어떻게 움직이는지 확인을 하고, 그 위치에 Auxiliary classifier를 붙이는 것이 좋다고 논문에서 밝혔다
  • 22. Inception의 출현 배경 통상적인 CNN의 구조를 보면, convolutional layer 뒤에 pooling layer를 두고, feature-map의 grid(해상도) 크기를 줄이는 것이 일반적 하지만 inception module을 보면, 여러개의 convolution layer와 pooling layer가 나란히 있는 독특한 모양임 효과적으로 해상도(gird size)를 줄이는 방법 - grid 크기를 줄이는 대표적인 방식은 convolution을 수행할 때 stride를 1이상의 값으로 설정하거나 pooling을 사용하는 것 Szegedy(GoogLeNet 설계자중 한 명)는 자신의 논문(Rethinking the inception architecture for computer vision)에서 아래과 같은 구조를 제시 Pooling layer 및 convolution layer를 나란하게 배치하고, 최종 단에 stride 값에 “2”를 적용하게 되면, 결과적으로 5X5, 3X3 convolution을 통해 local feature를 추출하면서 stride 2를 통해 크기가 줄고, 또한 pooling layer를 통해서도 크기를 줄이고 그 결과를 결합하는 방식이다. 오른쪽은 왼쪽보다는 좀 더 단순한 방법으로 stride 2를 갖는 convolution을 통해 320개의 feature-map을 추출하고 pooling layer를 통해 다시 320개의 feature-map을 추출함으로써효율성과 연산량의 절감을 동시에 달성할 수 있게 되었다.
  • 23. R-CNN (Regions with Convolutional Neural Networks) GoogLeNet에서는 단순하게 분류(classification) 성능만 개선한 것이 아니라, R-CNN(Reginons with Convolutional Neural Networks)를 이용해 위치까지 포함한 object detection 성능을 개선하였다. R-CNN 알고리즘이 발표되기 이전에 대부분 object detection에 주로 사용되던 방법은 SIFT(Scale Invariant Feature Transform)이나 HOG(Histogram of Gradient)에 기반한 알고리즘이다. SIFT나 HOG는 대부분 영상 내에 존재하는 gradient성분을 일정 블락으로 나누고 그 경향성을 이용하여 대상을 검출하는 방식을 사용한다. 버클리의 연구팀은 DPM이나 HOG등을 이용한 Detection 연구를 꾸준히 해왔던 팀이며, 2012년 AlexNet의 연구 결과에 자극을 받아 classifcaion분야에서 얻은 괄목할만한 성과를 detection분야에 적용할 수 있는 R-CNN이라는 독특한 구조를 발표하게 된다. Warped VOC를 이용해 CNN을 fine tuning을 한다. 이 때는 ground truth 데이터와 적어도 0.5IoU(Intersection over Union:교집합/합집합) 이상 되는 region들만 positive로 하고 나머지는 전부 negative로 하여 fine tunning을 시행한다. 이 때 모든 class에 대해 32개의 positive window와 96개의 background window를 적용하여 128개의 mini-batch로 구성을 한다. 마지막으로 linear classifier의 성능을 개선을 위해 hard negative mining방법을 적용하였다.
  • 24. R-CNN의 문제점과 개선 알고리즘 SPPNet R-CNN은 region에 기반한 CNN Feature를 사용하여 detection성능을 크게 개선하였지만, 아래와 같은 문제가 있다. 1. AlexNet의 구조를 그대로 사용하였기 때문에 입력 이미지 크기를 강제로 224X224 크기로 맞추기 위해 warping이나 crop을 사용했는데 이로 인한 이미지 변형이나 crop으로 인한 손실로 인해, 성능 저하가 일어날 수 있다. 2. 2000여개에 이르는 region proposal에 대해 순차적으로 CNN을 수행해야 하기 때문에 학습이나 실제 run time이 긴 문제 3. 사용하는 알고리즘이 특히, region proposal이나, SVM 튜닝 등이 GPU사용에 적합하지 않다는 점
  • 25. SPPNet (Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition) Crop이나 warping을 하면 위 그럼처럼 왜곡이나 손실이 발생한다. Convolutional layer 다음에 spatial pyramid pooling layer를 두고 이 단계에서 pyramid 연산을 통해 입력 영상의 크기를 대응할 수 있게 되면, 굳이 crop/warp를 사용하지 않아도 된다. SPPNet은 BoW(Bag-of-Words) 개념을 사용한다. BoW란 특정 개체를 분류하는데 굵고 강한 특징에 의존하는 대신에서 작은 여러 개의 특징을 사용하면 개체를 잘 구별할 수 있다는 사실에 기반한다.
  • 26. SPPNet Architecture AlexNet이나 ZFNet과 같은 기존 신경망의 입력 영상의 크기가 고정이 되는 이유는 Convolutional layer는 영상의 크기에 영향을 받지 않는데 fully-connnected layer가 입력 영상의 크기에 제한을 받기 때문이다. SPPNet 설계자들은 BoW 개념처럼 여러 단계의 피라미드 레벨에서 오는 자잘한 feature들을 fully-connected layer의 입력으로 사용하고, 피라미드의 출력을 영상의 크기에 관계없이 사전에 미리 정하면 더 이상 영상의 크기에 제한을 받지 않게 된다는 점에 주목을 함 SPPNet이 R-CNN에 비해 갖는 또 다른 장점 중 하나는 R-CNN은 각각의 후보 window에 대해 crop/warp를 한 후 CNN 과정을 전부 거치지만, SPPNet에서는 영상 크기에 영향을 받지 않기 때문에 전체 영상에 대해 딱 1번 convolutional layer를 거친 후 해당 window에 대하여 SPP를 수행한 후에 이후 과정을 거치기 때문에, 가장 시간이 오래 걸리는 convolutional 과정을 건너 뛸 수가 있기 때문에 성능이 24~102배 정도 빠르다.
  • 27. VGGNet 2014년 ILSVRC에서 GoogLeNet과 함께 큰 주목을 받은 팀은 Oxford 대학교의 VGGNet 팀이다. VGGNet연구팀의 논문 “Very deep convolutional networks for large-scale image reconginition”에서 밝혔듯이, 원래는 망의 깊이(depth)가 어떤 영향을 주는지 연구를 하기 위해 VGGNet을 개발함 (기본조건 : Receptive field 3X3)
  • 28. VGGNet Experiments을 통해 본 단점 VGGNet은 AlexNet이나 ZFNet처럼, 224X224크기의 color 이미지를 입력으로 받아들이도록했으며, 1개 혹은 그 이상의 convolutional layer 뒤에 max-pooling layer가 오는 단순한 구조로 되어 있다. 또한 CNN구조 처럼, 맨 마지막 단에 fully-connected layer가 온다. VGGNet의 단점은 GoogLeNet 저자 Szegedy가 비판을 했던 것처럼, 파라미터의 개수가 너무 많다는 점이다. 아래 표를 보면 알 수 있는 것처럼, GoogLeNet의 파라미터의 개수가 5million 수준이었던 것에 비해 VGGNet은 가장 단순한 A구조에서도 파라미터의 개수가 133million으로 엄청나게 많다. 그 결정적인 이유는 VGGNet의 경우 AlexNet과 마찬가지로 최종단에 fully-connected layer 3개가 오는데 이 부분에서만 파라미터의 개수가 약 122million개가 온다. 참고로 GoogLeNet은 FC layer가 없다.
  • 30. ResNet (Residual Net) 의 출현 배경 ResNet(Residual Net)의 설계자 ‘Kaiming He’ R-CNN의 속도 문제를 해결한 SPPNet은 ConvNet을 이용하여 detection분야 성능을 크게 개선함 깊은 망의 문제점 1> Vanishing/Exploding Gradient 문제: CNN에서 파라미터 update를 할 때, gradient값이 너무 큰 값이나 작은 값으로 포화되어 더 이상 움직이지 않아 학습의 효과가 없어지거나 학습 속도가 아주 느려지는 문제가 있다. 망이 깊어질수록 이 문제는 점점 더 심각해지며, 이 문제를 피하기 위해 batch normalization, 파라미터의 초기값 설정 방법 개선 등의 기법들이 적용되고 있지만, layer개수가 일정 수를 넘어가게 되면 여전히 문제를 발생하게 된다. 2> 더 어려워지는 학습 방법: 망이 깊어지게 되면, 파라미터의 수가 비례적으로 늘어나게 되어 overfitting의 문제가 아닐지라도 오히려 에러가 더 커지는 상황이 발생한다. CIFAR-10학습 데이터를 20-layer와 50-layer비교실험 학습오차와 테스트 오차 모두 56-layer가 나쁘다. 이것을 해결하기 위해 deep residual learning개념이 나오게 되었다.
  • 31. Residual Learning 알아보기 위와 같은 구조의 평범한 CNN망 이 평범한 망은 입력 x를 받아 2개의 weight layer를 거쳐 출력 H(x)를 냄 학습을 통해 최적의 H(x)를 얻는 것이 목표이다. Residual Learning의 기본 블락 F(x) = H(x) - x → H(x) = F(x) + x 2개의 weight layer는 H(x) - x 를 얻도록 학습, 결과적으로 출력값은 F(x) + x가 된다. 최적의 경우 F(x)=0 Identity shortcut 연결 - 깊은 망도 쉽게 최적화 가능 - 늘어난 깊이로 인해 정확도 개선
  • 32. ResNet Experiments ResNet팀은 망을 설계하면서 VGGNet의 설계 철학을 많이 이용하여 대부분의 convolutional layer는 3X3 kernel을 갖다록 하였으며 아래 2가지 원칙을 지켰다. 또한 복잡도(연산량)를 줄이기 위해 max-pooling(1곳 제외), hidden fc, dropout등을 사용하지 않았다. 1. 출력 feature-map 크기가 같은 경우, 해당 모든 layer는 모두 동일한 수의 filter를 갖는다. 2. Feature-map의 크기가 절반으로 작아지는 경우는 연산량의 균형을 맞추기 위해 필터의 수를 두 배로 늘린다. Feature-map의 크기를 줄일 때는 pooling을 사용하는 대신에 convolution을 수행할 때, stride의 크기를 “2”로 하는 방식을 취함 표를 보면 18-layer와 34-layer는 동일한 구조를 사용함 다만 각 layer에 있는 convolutional layer 수만 다르다.
  • 33. Faster R-CNN 등장 배경 ResNet에서는 image detection/localization의 성능을 위해, Faster R-CNN방법을 적용하였다. Faster R-CNN을 이해하려면, R-CNN, SPPNet, Fast R-CNN 및 Faster R-CNN으로 이어지는 detection분야의 계보를 이해해야 한다. R-CNN의 문제 1. Traing이 여러 단계로 이뤄짐 R-CNN은 크게 3단계 과정으로 이루어진다. 우선 약 2000여개의 후보 영역에 대하여 log loss방식을 사용하여 fine tunning을 한다. 이후 ConvNet 특징을 이용하여 SVM에 대한 fitting 작업을 진행한다. 끝으로 bounding box regressor(검출된 객체의 영역에 알맞은 크기의 사각형 영역으로 표시하고 위치까지 파악)에 대한 학습을 한다. 2. Training 시간이 길고 대용량 저장 공간이 필요 SVM과 bounding box regressor의 학습을 위해, 영상의 후보 영역으로부터 feature를 추출하고 그것을 디스크에 저장한다. PASCAL VOC07 학습 데이터 5천장에 대하여 2.5일 정도가 걸리며, 저장 공간도 수백 GigaByte를 필요로 한다. 3. 객체 검출(object detection) 속도가 느림 학습이 오래 걸리는 문제도 있지만, 실제 검출할 때도 875MHz로 오버클럭킹된 K40 GPU에서 영상 1장을 처리하는데 47초가 걸린다.
  • 34. R-CNN의 가장 큰 문제는 모든 객체 후보 영역에 대하여 개별적으로 연산을 한다는 점이며 이것 때문에 속도가 매우 느림 SPPNet 설계자들은 Spatial Pyramid Pooling을 사용하여 convolution연산을 공유할 수 있는 방법을 제안함 R-CNN보다 학습에서 3배 정도 빠르고, 실 적용 시 약 10~100배 정도 빠름 SPPNet은 구조적인 관점에서 R-CNN과 마찬가지로 학습에 3단계 파이프라인을적용하는 것은 동일하다. 그리고 이렇게 얻어진 feature들은 디스크에 쓰여져야 한다. 또한 R-CNN과 달리 fine-tunning 알고리즘을 적용할 때 SPP 앞단에 있는 convolution layer에 대해서는 fine tunning을 하지 않는데, 이로 인해 deep network를 적용할 때는 정확도에 문제가 될 수도 있다.
  • 35.
  • 36. Fast R-CNN Fast R-CNN은 기본적으로 검출 정확도(mAP)가 R-CNN이나 SPPNet보다는 좋으며, 학습 시 multi-stage가 아니라 single-stage로 가능하고, 학습의 결과를 망에 있는 모든 layer에 update할 수 있어야 하며, feature caching을 위해 별도의 디스크 공간이 필요 없는 방법을 개발하는 것을 목표로 함 Fast R-CNN의 기본 구조는 아래와 같다. Fast R-CNN망은 전체 이미지 및 객체 후보 영역을 한꺼번에 받아들인다. Convolution과 max-pooling을 통해 이미지 전체를 한번에 처리를 하고 feature map을 생성한다. 그 후 각 객체 후보 영역에 대하여 ‘ROI Pooling layer’를 통해, feature-map으로부터 fixed-length feature 벡터를 추출한다. 이 부분은 SPPNet의 Spatial Pyramid Pooling과 하는 일이 유사하다고 볼 수 있다. 이렇게 추출된 fixed-length feature vector는 Fully-Connected Layer에 인가를 하며, 뒷단에는 “object class + background”를 추정하기 위한 softmax부분과 각각의 object class의 위치를 출력하는 bbox(bounding box) regressor가 온다.
  • 37.
  • 39. NoC (Network on Conv feature map) “Object Detection Networks on Convolutional Feature Maps” Object Detection은 크게 보면 feature extraction부분과 object classifier부분으로 나눌 수 있다. 정확도를 개선하려면, 기존처럼 fully connected layer만을 사용하는 것보다는 fully connected layer 앞에 convolutional layer를 추가하면 결과가 좋아지며, multi-scale을 대응하기 위한 인접한 scale에서의 feature map결과를 선택하는 “Maxout”방식을 지원하면 결과가 더 개선되는 것을 확인할 수 있다.
  • 40. 참고 사이트 : https://laonple.blog.me/220654387455