실험 DataSets 정리

1) ImageNet-1k

2) ImageNet-21k

3) JFT-3B

4) YFCC100M

5) IG-1B-Targeted


Pretrained model 정리

AlexNet(2012) : ImageNet Classification with Deep Convilutional Neural Networks

 

dataset(imageNet) preprocessing

1) 이미지 크기를 256x256으로 고정.  (width와 height 중 더 짧은 쪽은 256으로 고정, 중앙 부분 256x256 crop)

2) 각 이미지의 pixel에 training set의 평균을 추출해서 normalize

Architecture

- 구조 : Max-pooling layer가 적용된 5개의 conv layer와 3개의 fully-connected layer로 이루어져 있음.

- 특징1) ReLU Nonlinearity : ReLU Activation Function으로 학습 속도 개선

- 특징2) Training on Multiple GPUs : network를 2개의 GPU로 나눠서 학습. kernel을 나눠 각 GPU에 할당해서 학습속도 향상

+ 데이터를 두 개의 GPU로 나눠 학습시키다가 하나의 layer에서만 GPU 통합(논문에선 3번째 Conv layer에서만 GPU 통합)

- 위 그림처럼 GPU1에서는 색상과 관련 없는 정보 학습, GPU2는 색상과 관련된 정보 학습함으로써 독립적으로 학습

- 특징3) Local Response Normalization : ReLU는 값 그대로 neuron에 전달하기에 너무 큰 값이 전달됨. 이를 예방하기 위해 LRN이 나왔고, 이는 강한 자극을 토대로 약한 자극을 전달하는 것을 막는 효과. (현재는 batch normalization 기법이 주로 쓰임)

- 특징4) Overlapping Pooling : pooling layer overlap (kernel size=3, stride=2)

Reducing Overfitting

- 256x256 -> 224 crop 후, horizontal reflection

- image의 rgb pixel 값에 변화 : training set에 RGB pixel에 PCA 적용(eigenvalue * 가우시안 분포 랜덤변수 -> RGB값에 더해줌)

- 조명의 영향과 색의 intensity 변화에 대한 불변성을 지님.

Dropout

- dropout된 neuron은 순전파와 역전파에 영향 X -> 복잡한 neuron의 co-adaptiation을 감소시킴. -> 서로 다른 neuron 임의의 부분 집합끼리 결합에 유용한 robust 특징 (FC layer에만 적용)


ZFNet(2014) : Visualizing and Understanding Convolutional Networks

- AlexNet에서 GPU를 하나만 쓰고, 일부 Conv layer의 kernel size와 stride 조절

- CNN을 가시화하여 중간 과정을 눈으로 보고, 개선방향 파악할 수 있게 함.

Visualizaing 기법

- 일반적인 Con과정은 오른쪽과 같이 conv filter를 거쳐 feature map 형성, activation function과 pooling 과정을 거친 후, 다음 Conv로 넘어감

- 위 과정을 역방향으로 똑같이 진행하면 되는데, unpooling시 현재 정보만을 가지고 모든 data를 복원해낼 수 없다는 단점. -> pooling과정에서 가장 강한 자극의 위치정보를 switch라는 곳에 저장하여 unpooling시 해당 위치에 대해서 왼쪽 그림과 같이 복원해낼 수 있게 함.


Inception V1=GoogleNet(2015) : Going Deeper with Convolutions

- 기존 모델들은 layer를 넓고 깊게 쌓음 -> overfitting, vanishing gradient problem. 학습 및 연산속도 문제

- Sparse Connectivity : 기존 CNN은 Conv layer, pooling, FC layer가 Dense하게 연결되어 있음. -> 높은 관련성을 가진 node끼리만 연결하여 sparse하게 바꾸어 Computatinal Resource를 적게 사용함. Drop out과 비슷한 방법으로 Overfitting 개선

- Sparse하게 연결 연산 대상이 적으면 연산량이 줄어들 것이라고 생각되나, Dense matrix보다 Sparse matrix연산이 더 큰 resource 사용(size가 더 늘어나기에)

- 이 문제점을 해결하고자 구글의 Inception Module 도입.

=> 1x1 filter를 통한 Conv : feature map의 개수를 줄이는 목적. (연산량 감소)

- (b)가 실제로 사용되었는데, feature map의 개수를 줄여주는 역할인데, 이전 CNN모델들은 한 층에서 동일한 사이즈의 필터커널을 이용해서 컨볼루션 해줌. 추가된 구조에는 1x1 conv, 3x3 conv, 5x5 conv, 3x3 max-pooling해준 결과를 모두 함께 쌓아줌. => 더 다양한 종류의 특성 도출.

Global Average Pooling

- 이전 AlexNet, VGGNet에선 FC layer가 모델 후반부에 연결

- 위 방식 대신 global average pooling 방식 사용 (전 층에서 산출된 feature map들을 각각 평균낸 것을 이어서 1차원 vector로 만들어 줌, 이미지 분류를 위한 softmax 층을 연결하기 위해)

- => 가중치의 개수를 상당히 많이 없애준다는 장점. (FC layer에선 7x7x1024x1024 -> average pooling은 가중치 0개)

Auxiliary Classifier

- 네트워크 깊이가 길어지면 vanishing gradient 문제

- 이를 해결하고자 네트워크 중간에 두 개의 보조 분류기(auxiliary classifier)


VGG-16(2015) - Very Deep Convolutional Networks for Large-Scale Image Recognition

- VGG-16 : Visual Geometry Group 16 layers의 줄임말

핵심1) 어떻게 16-19 layer와 같이 깊은 신경망 모델의 학습을 성공했을까?

핵심2) 왜 모든 Conv layer에서 3x3 필터만 사용했을까?

 

VGG Architecture

- VGG모델은 AlexNet의 8-layers 모델보다 깊이가 2배 이상 깊은 네트워크의 학습에 성공했으며, 이를 통해 오차율을 절반으로 줄임.

- 깊은 신경망을 학습할 수 있었던 것은 모든 Conv layer에서 3x3필터를 사용했기 때문에

- VGG 모델 이전에 Conv network를 활용한 모델들은 비교적 Receptice field가 큰 11x11필터나 7x7필터를 사용

- 하지만 VGG모델은 3x3 크기의 작은 필터만 사용했음에도 이미지 분류 정확도를 비약적으로 개선

- 3x3필터를 이용할 경우 3-layer Conv을 반복했을 때 원본 이미지의 7x7영역을 수용할 수 있음. (stride가 1일 때, 3차례의 3x3 Conv 필터링을 반복한 feature map을 한 pixel이 원 본 이미지의 7x7 receptice field 효과를 볼 수 있다.)

7x7 필터로 한 번 Conv, 3x3 필터로 세 번 Conv 차이

1) 결정 함수의 비선형성 증가

- 각 Conv 연산은 ReLU함수 포함. 즉 1-layer 7x7 필터링은 비선형 함수가 한 번 적용. 3-layer 3x3 필터링은 비선형 함수 세 번 적용. (비선형성이 증가할수록 모델의 특징 식별성이 증가 됨)

2) 학습 파라미터 수의 감소

- Conv Network 구조에서 학습 대상인 weight는 필터의 크기에 해당

- 즉, 7x7 필터 1개의 학습 파라미터 수는 49개. 3x3필터 3개의 학습 파라미터 수는 27개로 크게 감소함

- 하지만 여러 layer를 거친 feature map은 동일한 receptice field에 대해 더 추상적인 정보를 담게 됨. 목적에 따라서는 layer를 줄여 선명한 feature map을 만들어야 할 때도 있음.

 

특징1 - 가중치 초기화

- 가중치 초기화는 학습 속도 및 안정성에 영향을 줄 수 있음.

- VGG에서는 상대적으로 얕은 11-layer 네트워크를 우선적으로 학습. 이 때, 가중치는 정규분포 형태로 임의 값으로 초기화

- 어느정도 학습이 되면 입력층 부분의 4개 층과, 마지막 3개의 fc-layer의 weight를 학습할 네트워크의 초기값으로 사용.

특징2 - 학습 이미지 크기 (Overfitting 방지)

- 모델 학습 시 입력 이미지의 크기는 모두 224x224로 고정(Crop)

- Data Augmentation 효과와 하나의 object에 대한 다양한 측면을 학습 시 반영시킬 수 있음. 변환된 이미지가 작을수록 개체의 전체적인 측면 학습, 이미지가 클수록 특정 부분 학습 반영.

특징3 - Fully Convolutional Nets

- training 완료된 모델을 testing할 때 신경망의 마지막 3 FC layer를 Conv layer로 변환하여 사용

- 첫 번째 FC layer는 7x7 Conv로, 마지막 두 FC layer는 1x1 Conv로 변환. 이런 신경망을 Fully-Convolutional Networks라고 부름.

- 신경망이 Conv layer로만 구성될 경우, 입력 이미지의 크기 제약이 없어짐. 이에 따라 하나의 입력 이미지를 다양한 스케일로 사용한 결과들을 앙상블해서, 정확도 개선 가능

 

=> 네트워크의 깊이가 깊어질수록 분류 정확도가 높아지는 것을 확인. 최대 19 layer까지만 사용한 이유는, 해당 실험의 데이터에서는 분류 오차율이 VGG-19에서 수렴했기 때문. 학습 데이터 셋이 충분히 많다면 더 깊은 모델이 유용할 수도 있음.


ResNet(2016) : Deep Residual Learning for Image Recognition

- 핵심 : Residual Learning. 이전에는 Residual을 평가의 기준으로만 삼았는데, 이를 이용해 학습을 진행해서 162 layer를 쌓는 구조를 구현했다.

- depth가 모델의 성능에 큰 영향을 준다는 대회 결과들. but depth가 올라감에 따라 overfitting, vanshing gradient, 연산량 증가 문제점 발생. => 이전 layer 결과를 다시 이용하는 residual learning을 사용하여 더 쉬운 최적화 깊은 네트워크에서의 정확도 향상.

- 기존 네트워크는 입력 x를 받고 layer를 거쳐 H(x)를 출력. Residual Learning은 H(x)가 아닌 출력과 입력의 차인 H(x)-x를 얻도록 목표 수정. 즉 F(x) = H(x) - x를 최소화하는, 출력과 입력의 차이를 줄인다는 의미. x는 값을 바꾸지 못하는 입력값으로 F(x)가 0이 되는 것이 최적해. 0 = H(x) - x => H(x) = x가 되어 H(x)를 x로 mapping하는 것이 학습의 목표

- H(x) = F(x) + x로 layer를 거치면서 수행되는 곱셈 연산에서 덧셈 연산으로 변형되어, forward와 backward path가 단순해지는 효과. gradient 소멸 문제를 해결할 수 있음.

- Shortcut connection방식은 parameter가 전혀 추가되지 않으며 0으로 수렴하지 않기에 모든 정보가 통과됨. 따라서 지속적으로 residual function을 학습하는 것이 가능.

- PlainNet model에 Shortcut connection을 추가하여 구성. input = output 차원이라면 identity shortcut을 바로 사용하면 되지만 dimension이 증가했을 경우 두 가지 선택권이 있음. (zero padding을 적용하여 차원을 키움. 앞서 다뤘던 1x1 Conv를 사용하여 projection shortcut을 사용)

- feature map을 2size씩 건너뛰므로 stride=2로 설정

- bottleneck 구조(1x1, 3x3, 1x1로 구성하여) 커널 수는 많아지나 파라미터 수를 대폭 줄여줌. identity shortcut이 bottlenect 구조를 더 효율적인 모델로 만들어줌.

 


Wide-ResNet(2016) : Wide Residual Networks

- ResNet의 넓이를 증가(filter 수 증가)시키고 깊이를 감소시킨 모델

- residual block을 구성하는 convolution layer의 filter 수를 증가시켜서 신경망 넓이를 증가시킴.

기존 ResNet의 문제점

1) Circuit complexity theory

- 깊은 신경망이 갖는 표현력을 얇은 신경망이 갖기 위해서는 엄청나게 넓은 신경망을 구성해야 된다고 봄. 그만큼 paramter 수도 증가. -> ResNet 저자는 이 이론을 통해 ResNet에 bottleneck구조 제안. 이 구조는 모델을 얇게 해 parameter 수를 감소시켜 깊이를 증가시킴.

2) Diminishing Feature Reuse

- 순전파에서 발생하는 문제로, 입력과 가까운 계층에서 학습한 특징이 최종 계층까지 도달하지 못하고 사라지는 문제. 많은 수의 가중치가 곱해져 발생함. -> residual block에 droupout 적용. (Conv layer 사이)

=> 1)문제를 넓이를 증가시켜서 해결, 2)문제를 residual block 내 conv layer 사이에 dropout 적용하여 해결

 

Arcitecture - Residual Block

- (c)와 (d)가 논문의 residual block. Pre-activation resnet에서 제안된 BN-ReLU-conv 활성화함수 사용. 각 Conv layer가 갖고 있는 필터 수 k배. (d)는 conv layer 사이에 dropout을 적용한 구조.

- 해당 table처럼 conv1 이후에 3개의 residual block으로 구성. 기존 conv layer 필터수에 k배를 해줌. N이 깊이를 결정하고, 이는 몇 개의 residual block이 묶여있는지 의미.

 

Experiment

- residual block내에 있는 conv layer 사이에 dropout을 적용했을 때와 안 했을 때의 성능 비교

- depth와 k의 비율을 잘 조정하는 것도 관건

- dropout을 적용하여 수렴 속도도 향상

 


Xception(2017) : Deep Learning with Depthwise Separable Convolutions

- Inception module에 대한 고찰로 탄생한 모델. cross-channel correlations와 spatial correlations를 독립적으로 계산하기 위해 고안된 모델. => 새로운 Inception module 제안.

- Inception v3에서 사용하는 일반적인 Inception Module

- 간소화하면 위와 같이 나타낼 수 있음. 이를 1x1 conv는 cross-channel correlation을 계산하고, 3x3 conv는 spatial correlations을 수행하는 것. -> 기존 Inception module이 좋은 성능을 나타내는 이유는 위 2개를 잘 분해해서 계산했기 때문이라고 함.

Depthwise Separable Convolution

- Depthwise Convolution 이후에 Pointwise Convolution을 수행.

- Depthwise Convolution은 입력 채널 각각에 독립적으로 3x3 conv 수행. 입력 채널이 5개이면 5개의 3x3 conv연산을 수행하여, 각각 입력값과 동일한 크기의 feature map 생성. 각 feature map을 연결하여 5개 채널의 feature map 생성.

- Pointwise Convolution은 모든 채널에 1x1 conv 수행하여 채널 수 조절 역할. -> 연산량 감소.

=> 이 Depthwise Separable Convolution을 수정해서 Inception module 대신 사용

 

Modified Depthwise Separable Convolution(Extreme Inception)

- Pointwise Convolution -> depthwise convolution 순서. 비선형함수의 존재유무(Inception module은 1x1 conv 이후에 ReLU 비선형 함수 수행. Xception에서 사용하는 module은 비선형 함수 사용 x -> 신경망이 깊을 때는 비선형 함수가 도움이 되지만, Xception module같은 1개의 채널을 사용하는 depthwise separable을 수행할 때, 비선형 함수가 성능을 해침(정보 손실).)

- 입력값에 1x1 conv을 수행하여 채널 수 조절. 채널 수는 n개의 segment로 나눠짐. 이 n은 하이퍼파라미터로 나눠진 segment별로 depthwise convolution(3x3 conv)을 수행. 각 출력값은 concat.

 

Architecture

- 14개의 module로 이루어져 있고, 총 36개의 conv layer 존재. + residual connection 사용.

- input -> Entry flow -> middle flow(8번) -> exit flow


DenseNet(2017) : Densely Connected Convolutional Networks

- ResNet과 Pre-Activation ResNet보다 적은 파라미터 수로 더 높은 성능

- 모든 layer와 feature map 연결[concat]. (이전 layer의 feature map을 그 이후의 모든 layer의 feature map에 연결)

- 연결할 때는 feature map 크기가 동일해야 함. 또한 계속해서 연결하면 채널수가 많아질 수 있기에, layer feature map 채널 수는 굉장히 작은 값 사용.

장점1) strong gradient flow와 information flow를 가져, 기울기 소실 문제 완화 및 feature reuse 효과.

- 기존 CNN 모델은 처음 layer의 feature map이 다음 lay의 입력값으로 전달. -> 많은 layer를 통과하면서 처음 layer의 feature map에대한 정보가 사라질 수 있음. (feature reuse 문제)

- DenseNet은 처음 layer의 feature map을 마지막 layer의 feature map까지 연결 -> 정보 소실 방지(backward 진행 시도 값이 직접 전달되므로 gradient 소실 완화) + 정규화 효과

장점2) 파라미터수와 연산량이 적음

- DenseNet은 적은 채널 수 이용. 각 layer의 feature map을 연결하여 다음 layer로 전달하면, 적은 채널 수의 feature map 생성. 이 feature map은 이전 layer의 feature map과 결합하여 다음 layer로 전달되므로 파라미터 수가 적음.

 

ReNet Connectivity vs Dense Connectivity

ResNet Connectivity 수식

- ResNet의 l번째 layer 출력값은 위와 같고 H()함수는 conv, bn, relu 함수의 연산을 의미. + xl-1은 skip connection에 의한 덧셈.

- layer의 입력값이 출력값에 더해져 gradient flow가 직접적으로 전달. 하지만 덧셈으로 결합되기에 신경망에서 information flow가 지연될 수 있다고 함.

DenseNet Connectivity 수식

- DenseNet은 이전 layer를 모든 다음 layer에 직접적으로 연결 -> information flow가 향상.

- 이전 layer x0, x1, ..., xl-1가 다 결합되어 H()연산 수행. H()함수는 BN, ReLU, 3x3 Conv이고 pre-activation resnet의 순서를 따름.

 

Dense Block

- Concat 연산을 수행하기 위해서는 feature map 크기가 동일해야 함. 하지만 feature map 크기를 감소시키는 pooling 연산은 conv net의 필수 요소. -> 이 pooling 연산을 위해 dense block 개념 도입.

-  Dense Block은 여러 layer로 구성되어 있고, block 사이에 pooling 연산(BN, 1x1conv, 2x2avg_pool -> transition layer) 수행. transition layer에는 theta를 통해 출력 채널 수를 조절하는데, 즉 이 layer는 feature map의 크기와 채널 수를 감소시킴.

- 3개의 dense block과 2개의 transition laer로 이루어져 있음.

 

그 외 특징

- growth rate : 각 layer가 전체에 어느정도 기여 할지 결정(l번째 layer input : k0 + k*(l-1))

 - bottleneck layers : 3x3 conv 입력값 채널을 조절하여 연산량에 이점을 얻기 위해 사용. -> 1x1 conv는 3x3conv의 입력값을 4k로 조절 -> 3x3 conv는 k개 feature map을 생성하고 이전 layer와 concat(resnet에서는 64채널, layer add)

 


MobileNet(2017) : Efficient Convolutional Neural Networks for Mobile Vision Applications

- Depthwise separable convolution을 활용해 모델 경량화(감소한 파라미터 수만큼 층을 쌓아 성능을 높인 Xception)

- 메모리가 제한된 환경에서 최적화하기 위한 latency, accuracy 파라미터의 균형 조절

Depthwise Separable Convolution

- Depthwise Conv -> Pointwise Conv 결합

- Depthwise Conv : 각 입력 채널에 대하여 3x3 conv 하나의 필터가 연산을 수행하여, 하나의 feature map 생성. 채널마다 독립적으로 연산을 수행하여 spatial correlation 계산 역할. (K*K*M*F*F)

- Pointwise Conv : Depthwise conv가 생성한 feature map들을 1x1conv로 채널 수 조정. 모든 채널에 대하여 연산하므로 cross-channel correlation 계산 역할 (M*N*F*F)

- MobileNet Depthwise separable conv구조로 K*K*M*F*F + M*N*F*F의 연산량을 가짐. (기존 연산량인 K*K*M*N*F*F보다 8~9배 더 적음)

- 첫 번째 Conv를 제외하고 depthwise separabel conv 사용. 마지막 FC layer를 제외하고 모든 layer에 BN, ReLU 사용. Down-sampling은 depthwise conv와 첫 번째 conv layer에서 수행.

 

하이퍼 파라미터 조절(latency, accuracy)

- Width Multiplier : Thinner models, mobilenet의 두께(각 layer에서 필터수)를 결정. 입력 채널 M과 출력 채널 N에 적용

- Resolution Multiplier : Reduced Representation, 모델의 연산량을 감소시키기 위해 사용. 입력 이미지에 적용하여 해상도를 낮춤.  


ResNeXt(2017) : Aggregated Residual Transformations for Deep Neural Networks

- 왼쪽 ResNet BottleNeck 구조를 오른쪽처럼 변형한 것

- 연산과정 : 256채널의 입력값 -> 1x1 conv를 거쳐서 128개의 채널 -> 32개의 그룹으로 분할하여 각 그룹당 4개(128/32) 채널 -> 32개의 conv는 각 4개의 채널 입력값에 대해서만 연산을 수행하여 4채널의 feature map 생성 -> 32개 그룹에서 생선한 4개 feature map을 concat하여 128개의 채널을 만듦. -> 1x1 conv를 거쳐서 256개의 채널

- group 수 32는 하이퍼파라미터로 조절 가능한 변수

 

Cardinality(group) vs width(channel) 수

- channel 수 보다 group 분할 수를 증가시키는 것이 더 효율적(동일한 파라미터 수에서 좋은 성능)

Cardnality vs deeper/wider

- ResNext-101, ResNet-101 wider, ResNet 200 순으로 성능이 좋았기 때문에 cardinality > width > deep 순으로 중요함.

 

 


SENet(2018) : Squeeze-and-Excitation Networks

- 채널 간의 상호작용(가중치)에 집중한 모델. 가중치가 큰 채널은 중요한 특징을 담고있다는 의미.

- feature map의 각 채널마다 가중치를 부여하여 feature map의 각 채널에 곱함.

- SE Block : 위 그림처럼 squeeze(압축) + Excitation(재조정) = 채널별 가중치를 계산하고 feature map에 곱해지는 모습.

=> 채널 간의 가중치를 계산하여 성능을 끌어올린 모델.

 

SE Block

출처: https://wolfy.tistory.com/246

- SENet은 SE Block을 활용하는 모델로, CNN기반 모델에 부착하여 사용하고 residual, inception 모델에도 함께 사용 가능

- 유언성을 지니고 있고, low-level에서 class 상관없이 중요한 특징을 추출(feature map)하고 high-level에서는 class(channel별 가중치)와 관련있는 특징들 추출.

 

Squeeze

- 각 채널별 가중치 계산을 위해, 각 채널을 1차원으로 만들어야 함. 3채널이 있으면 [0.6, 0.1, 0.7]로 표기해야 가중치를 나타낼 수 있음. 즉 squeeze는 각 채널을 1차원으로 만드는 역할.

- squeeze는 conv연산을 통해 생성된 feature map을 입력으로 받음. H*W*C 크기의 feature map을 global average pooling 연산을 통해 1x1xC로 압축. feature map의 한 채널에 해당하는 pixel 값을 모두 더한 다음, H*W로 나누어 1x1x1로 압축. feature map은 C개의 채널을 갖고 있으므로 다 연결하면 1x1xC가 됨.

 

Excitation

- squeeze에서 생성된 1x1xC 벡터를 정규화하여 가중치를 부여하는 역할. FC1-ReLU-FC2-Sigmoid로 구성.

- FC1에 (1x1xC) vector 입력, C채널을 C/r개 채널로 축소. r은 하이퍼파라미터. 연산량 제한과 일반화 효과 때문에 bottleneck 구조 선택. C/r개 채널로 축소되어 (1x1xC/r)가 된 vector는 ReLU로 전달되고, FC2를 통과함. FC2 채널 수를 다시 C로 되돌림.

- sigmoid를 거쳐서, feature map과 곱해져 feature map 채널에 가중치를 가함.


EfficientNet(2019) : Rethinking Model Scaling for Convolutional Neural Networks

- 기존 연구는 모델의 크기를 키워 성능을 높이는 연구가 많이 이루어짐. 모델 크기를 키우는 것은 1) network의 depth를 깊게 만드는 것, 2) channel width(filter 개수)를 늘리는 것(width가 넓을수록 미세한 정보가 많이 담아짐), 3) input image 해상도를 올리는 것.

- 위 3가지 방법론의 최적의 조합은 AutoML을 통해 찾은 논문. 조합을 효율적으로 만드는 compound scaling 방법을 제안하여, 이를 통해 더 작은 크기의 모델로도 SOTA를 달성한 논문. (모델 크기가 작고 빠르고 더 높은 정확도)

- 일반적으로 모델을 scaling하는 방법은 (b)너비, (c)깊이, (d)입력 해상도 조절

- (a) baseline에서 입력값은 각 layer 함수(f)를 거쳐 최종 출력값 생성.

- 일반화하면 위와 같음.

- 각 layer에서 수행하는 연산(f)을 고정하고 layer수, 채널수, 입력 이미지 크기에만 집중하여 search space가 감소.

- 위 수식에서 d, w, r 상수가 생겼는데 이 상수들의 관계를 연구한 것이 EfficientNet. (model accuracy를 최대화하는 게 목표)

- w(너비),d(깊이),r(입력 해상도)가 일정 값 이상이 되면 정확도가 빠르게 수렴함. 낮을 때는 약간만 값을 조절해도 효과가 큼. 

-  compound sccaling은 depth/width/resolution 세 차원을 compound coefficient를 사용해 균일하게 scale

- 는 small grid search로 결정되는 상수. ϕ는 주어진 연산량에 따라 사용자가 결정하는 상수.

- FLOPs는 너비와 해상도에 따라 제곱배 상승. FLOPs = (α,β^2,γ^2)^2 (논문에서는 α,β^2,γ^2=2로 제한)

 

EfficientNet Architecture

- model scaling은 baseline network의 layer operation Fi를 바꾸지 않음. -> 따라서 mobile size의 처음부터 좋은 baseline을 개발함.

- α,β,γ를 찾아 큰 모델에 적용하면 좋은 성능을 낼 수 있지만, 근 모델의 경우 이 값을 찾는 비용이 더 많이 들었음.

- 해당 연구에서는 아래와 같은 두 단계로 문제를 해결함.

1)

 


Vision Transformer(ViT) (2021) : An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

 


Swin Transformer(2021) : Hierarchical Vision Transformer using Shifted Windows

 

 

 

 

728x90
반응형

'딥러닝 > 컴퓨터비전' 카테고리의 다른 글

[Computer Vision] Basic Convolution Method  (0) 2023.01.19
[Computer Vision] CNN 정리  (1) 2023.01.19
Easy OCR 간단하게 사용해보기  (0) 2021.03.31
Easy OCR 라이브러리  (0) 2021.03.14
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기