아직 작성중..

 

Benchmark Analysis of Representative Deep Neural Network Architectures

 

※ General Network

1. LeNet (1998)

LeNet-1 (1990): CNN 개념 수립

LeNet-5 (1998):

 - Average Pooling 사용 (Subsampling)

 - 각 feature를 구하기 위해 이전 conv layer의 output feature 중 일부만을 사용. (다양한 조합의 feature들을 사용하여 global feature를 추출하고자함)

 

LeNet-5 Architecture

 

2. AlexNet (2012), [ILSVRC 2012]

 - ILSVRC(ImageNet Large-Scale Visual Recognition Challenge) 2012에서 우승

 - 네트워크를 크게 두 부분으로 나눈 뒤 GPU 병렬 연산 수행 (단순히 큰 네트워크를 처리하기 위함)

 - ReLU와 Droout 사용

AlextNet Architecture

 

3. ZFNet (2013) [ILSVRC 2013]

 - ILSVRC 2013에서 우승

 - 학습된 Conv layer들의 시각화

ZFNet Architecture

 

Network In Network (ICLR14, arXiv:2013.12) https://arxiv.org/abs/1312.4400

 - 1x1 Conv (point-wise conv) 최초 사용

 - Global Average Pooling 최초 사용

 

4. GoogLeNet (Inception V1) (2014) [ILSVRC 2014]

 - ILSVRC 2014에서 우승

 - Inception Module을 구성

 - 다양한 크기의 필터 사용

 - 1x1 Conv (point-wise conv)를 사용하여 feature-wise 특징 추출(1x1)과 spatial-wise 특징 추출(?x?)을 분리하도록 함

https://datascienceschool.net/view-notebook/8d34d65bcced42ef84996b5d56321ba9/

 

5. VGG-16 (arXiv:2014.09) [ILSVRC 2014] https://arxiv.org/abs/1409.1556

 - ILSVRC 2014에서 2위

 - 3x3만을 이용한 간단한 구조 (5x5 => 3x3 두 번, 7x7 => 3x3 세 번)

 

6. ResNet (2015) [ILSVRC 2015]

 - ILSVRC 2015에서 우승 (최초로 사람의 성능을 넘음)

 - Skip Connection 개념 도입

 - 4개의 ResBlock(Bottlenect) 사용

 

7. Inception V2, V3

 - VGG-16의 3x3 conv 철학을 사용 (5x5를 3x3 두 개로 대체)

 - 또한 3x3을 3x1과 1x3 두 개로 대체

 - 참고 자료 : https://datascienceschool.net/view-notebook/8d34d65bcced42ef84996b5d56321ba9/

 

8. Inception V4, Inception-ResNet [ILSVRC 2016]

 - ILSVRC 2016에서 우승

 - 참고 자료 : https://datascienceschool.net/view-notebook/2537461edbac4ab081b8d7f2acb0d30d/

 

9. Xception (2016)

 - Depth-wise Seperable Convolution

 - ResNet의 Skip Connection 적용

 - 참고 자료 : https://datascienceschool.net/view-notebook/0faaf59e0fcd455f92c1b9a1107958c4/

 

10. ResNet v2

 - ResNet에서 activation function 위치를 변형

 

11. ResNeXt

 - ResNet에서 Group Convolution 사용 (Cadinality 개념 사용)

 

12. Wide ResNet

 - ResNet의 Bottleneck에서 채널의 크기를 늘림

 

13. DenseNet

 - dense하게 skip connection 사용

 

14. NasNet (ICLR17, arXiv:2016.11) https://arxiv.org/abs/1611.01578

 - AutoML의 architecture search를 통해 찾아낸 CNN

 

Residual Attention Network (CVPR17, arXiv:2017.04) https://arxiv.org/abs/1704.06904

 - ResNet에 Self-Attention 사용

 - spatial, channel 모두를 고려하여 attention

 

15. SENet (CVPR18, arXiv:2017.09) [ILSVRC 2017] https://arxiv.org/abs/1709.01507

 - ILSVRC 2017에서 우승

 - Residual Attention Network의 구조를 경량화함

 - Squeeze와 Excitation을 통해 channel 별로 attention 수행 (spatial은 고려 안함)

 

16. BAM (BMVC18) / CBAM (ECCV18)

 - SENet에서 spatial 까지 추가적으로 고려

 

17. MnasNet (CVPR19, arXiv:2018.07) https://arxiv.org/abs/1807.11626

 - 기존 NasNet과 대비하여 적은 서치 스페이스 사용

 - acc와 latency를 보상으로 사용

 - 참고 자료 : https://www.youtube.com/watch?v=4uDZxefPd-I

 

17. EfficientNet (ICML19, arXiv:2019.05) https://arxiv.org/abs/1905.11946

 - 모델의 Depth(레이어 수), Width(conv layer의 채널 수), Resolution(입력 영상 크기)를 모델의 크기를 결정하는 하이퍼파라미터로 보고, 제한된 크기에 따라 효과적인 모델을 찾아냄

 - 적은 파라미터로 기존 sota 모델들에 비해 파라미터 대비 높은 성능을 이끌어냄

 - mobile inverted bottleneck (MobileNet V2, Inverted Resdual Block)과 Squeeze and Excitation(SENet)을 혼용하여 기본 블럭으로 사용 (기존 MNas와 같은 서치 스페이스에서 architecture search로 찾아냄)

 - 참고 자료 : https://www.youtube.com/watch?v=Vhz0quyvR7I

 

※ Efficient Network

1. SqueezeNet (2016)

 - Fire Module 사용

 - squeeze layer와 expand layer로 구성

 - squeeze layer : 1x1 conv를 이용하여 차원 축소

 - expand layer : 기존 resnet의 3x3를 일정 비율에 맞춰서 1x1로 대체

 - 기존 Resnet의 각 module을 fire module로 대체

 - AlexNet과 성능, 효율성 비교

 

2. MobileNet

 - 1x1 conv 사용 (차원 축소 + 선형 결합의 연산 이점 목적)

 - depth-wise separable convolution 사용 (Xception 영감)

 - deep compression을 함께 사용하면 모델 크기를 크게 줄일 수 있음을 보임 (inception v3와 비교)

 

3. ShuffleNet (CVPR18)

 - mobilenet 역시 sparse correlation matrix 문제가 발생

 - grouped convolution을 통해서 위 문제를 해결하고자 함

 - 하지만 grouped conv는 채널을 독립으로 나누기 때문에 서로 정보 교환이 없고 성능에 문제가 생김

 - grouped conv 후에 channel을 섞는 아이디어 제안

 - mobilenet보다 좋은 성능을 보임

 

4. MobileNet V2 (CVPR18)

 - Inverted Residual Connection 사용 : resnet의 bottleneck에서 1x1로 피쳐를 줄이는게 아니라, 오히려 늘임

  => 이를 통해 residual connection이 있는 부분의 피처 수를 줄이고, bottleneck 내부에서 피쳐를 늘리고 depth-wise separable conv 수행 (피쳐를 늘리기 때문에 depth-wise separable conv가 피쳐 간의 정보를 보기 어렵다는 단점을 보완)

 - MobileNet V1보다 성능과 효율을 높임. 또한 shuffle 보다 좀 더 좋은 성능을 보임

 - MobileNet V1, ShuffleNet, NASNet 과 비교

 

5. SqueezeNext (2018)

 -

 

6. ShuffleNet V2 (2018)

 - 

 

7. MobileNet V3 (ICCV19, arXiv:2019.05) https://arxiv.org/abs/1905.02244

 - network architecture search(NAS) 활용

 

 

Backbone Network

FPN

 - 

 

DarkNet

 - 

 

 

Modified Convolution

Deonvolution (CVPR10) https://ieeexplore.ieee.org/document/5539957

 - 

 

Dilated Convolution

 - 

 

Deformable Convolution

 - 

 

Deformable Convolution V2

 -

 

 

참고 자료

 - https://www.youtube.com/watch?v=Dvi5_YC8Yts

 - https://www.youtube.com/watch?v=ijvZsH4TlZc

 - S. Bianco, R. Cadene, L. Celona and P. Napoletano, "Benchmark Analysis of Representative Deep Neural Network Architectures," in IEEE Access, vol. 6, pp. 64270-64277, 2018.

 - https://kobiso.github.io/Computer-Vision-Leaderboard/imagenet

AUGMIX: A SIMPLE DATA PROCESSING METHOD TOIMPROVE ROBUSTNESS AND UNCERTAINTY

google AI research 팀이 발표한 논문

ICLR 2020에서 발표될 예정

paer : https://arxiv.org/abs/1912.02781

code : https://github.com/google-research/augmix

 

주제: Data Augmentation 방법 제안

 

 

AugMix는 이름처럼 여러 data augmentation 방법들을 혼합하여 사용한다.

하지만 기존 방법들과 달리 데이터 변환으로인한 manifold를 벗어나는 일을 방지하였다.

 

 

논문에서는 단순히 데이터를 변형시켜서 새로운 샘플을 만들어내는데에 그치지 않고 original 데이터와 함께 학습하는 방법을 제안하였다.

아래는 AugMix의 슈도 코드인데, 맨 아래 Loos Output 부문을 보면 기존 original loss와 Jensen-Shannon 값이 더해진 것을 볼 수 있다.

쉽게 말해 변형된 샘플 이미지에 대한 출력 값과 원본 이미지에 대한 출력 값의 차를 loss로 준다.

이는 모델이 주어진 데이터를 좀 더 잘 표현할 수 있도록 학습하는 효과를 줄 수 있다.

 

AugMix 슈도 코드

 

AugMix는 단순히 image classification 뿐만 아니라 다양한 computer vision 문제에 쉽게 적용할 수 있으며,

adversarial attack 방지 등에 효과적으로 사용될 수 있을 것 같다.

'이론 > 논문 리뷰' 카테고리의 다른 글

(작성중) Convolutional Neural Network 정리  (1) 2019.12.20

https://discuss.pytorch.org/t/logsoftmax-vs-softmax/21386


요약

log softmax의 loss값이 softmax보다 좀 더 크다 (처벌 강화)

'이론 > 메모' 카테고리의 다른 글

모델링, 학습, 테스트  (0) 2019.02.20
용어 정리  (0) 2018.11.22
Object Detector  (0) 2018.11.07
데이터 전처리  (0) 2018.10.21
작은 네트워크  (0) 2018.09.23

수시 업데이트.



Modeling

 - 특징간 결합 시, 같은 도메인인지 살펴볼것.

 - CNN, RNN, FNN 등 각 네트워크 특징들을 잘 생각해볼것.

 - pooling, 특징간 결합 방법들은 의도에 따라 선택

 - 학습 성능이 낮을 시, 우선 단순한 방법으로 모델 크기를 늘려볼것. (유닛 수, 계층 반복 등)


Data

 - 모든 데이터는 전처리가 필수

 - 전처리 시, 의도대로 되었는지 꼭 시각화(또는 print)해서 확인


Train

 - output 특징에 따라 loss 선별 (상당히 중요)

    ex) 매우 작은 값의 regression이면, mse는 부적절 (l1, smooth l1이 나음)

 - 여러 loss가 나올 때, 가중치를 의도 및 실험적으로 선택 (생각 이상으로 영향을 많이끼침)

 - 직접적인 출력값을 얻기 어려워 보이면, 상대값을 학습

    ex) object detector에서 offset target 등.


Test

 - 적절한 척도를 우선적으로 완성할 것

   -> 또한 완벽하게 구현됬는지 충분히 테스트 해봐야함. (정답을 넣었을 때 최대 점수가 되는지 확인, 시각화 등)


'이론 > 메모' 카테고리의 다른 글

log softmax vs softmax  (0) 2019.03.06
용어 정리  (0) 2018.11.22
Object Detector  (0) 2018.11.07
데이터 전처리  (0) 2018.10.21
작은 네트워크  (0) 2018.09.23

https://github.com/fizyr/keras-retinanet/tree/master/keras_retinanet/utils

https://github.com/ronghanghu/cmn

https://github.com/yikang-li/MSDN

https://github.com/danielgordon10/thor-iqa-cvpr-2018




https://github.com/allenai/ai2thor


'이론 > 공부 자료들' 카테고리의 다른 글

활성화함수  (0) 2018.12.27
나이브 베이지안 분류 (Naive Bayesian Classification)  (0) 2018.12.21
여러가지 convolutional layer  (0) 2018.11.16
optimizers  (0) 2018.10.21
Loss Functions  (0) 2018.10.21

http://nittaku.tistory.com/267

'이론 > 공부 자료들' 카테고리의 다른 글

code 공부  (0) 2019.01.08
나이브 베이지안 분류 (Naive Bayesian Classification)  (0) 2018.12.21
여러가지 convolutional layer  (0) 2018.11.16
optimizers  (0) 2018.10.21
Loss Functions  (0) 2018.10.21

자꾸 까먹는다..


http://bcho.tistory.com/1010

'나이브'인 이유는 각 데이터의 발생 확률을 독립으로 본다는 가정이 있기 때문이다.

확률값이 너무 작은 경우를 방지하기위해, Log를 이용해서 구하는 방법도 사용 가능.


'이론 > 공부 자료들' 카테고리의 다른 글

code 공부  (0) 2019.01.08
활성화함수  (0) 2018.12.27
여러가지 convolutional layer  (0) 2018.11.16
optimizers  (0) 2018.10.21
Loss Functions  (0) 2018.10.21

fine-grained : 세밀한, 한 과정을 나누어 처리

    <-> coarse-grained : 세분화되지 않고 한꺼번에 처리되는 형태


activation map : feature map과 동일한 개념 (layer의 activation function까지 거쳐서 나온 행렬 데이터)


sparse : 희박한, activation된 값이 드물거나, 대부분 0으로 차있는 형태

           sparsity가 높다고도 말함. 

           l1 norm을 사용하면 weight의 sparsity를 높일 수 있음 (weight 값 자체를 낮추도록 학습하므로)

     <-> dense


'이론 > 메모' 카테고리의 다른 글

log softmax vs softmax  (0) 2019.03.06
모델링, 학습, 테스트  (0) 2019.02.20
Object Detector  (0) 2018.11.07
데이터 전처리  (0) 2018.10.21
작은 네트워크  (0) 2018.09.23

https://zzsza.github.io/data/2018/02/23/introduction-convolution/

'이론 > 공부 자료들' 카테고리의 다른 글

활성화함수  (0) 2018.12.27
나이브 베이지안 분류 (Naive Bayesian Classification)  (0) 2018.12.21
optimizers  (0) 2018.10.21
Loss Functions  (0) 2018.10.21
L1, L2 loss 해석을 통한 비교  (0) 2018.10.21

YOLOv3, SSD, FPN, RetinaNet 개념들 정리

https://medium.com/@jonathan_hui/what-do-we-learn-from-single-shot-object-detectors-ssd-yolo-fpn-focal-loss-3888677c5f4d



'이론 > 메모' 카테고리의 다른 글

모델링, 학습, 테스트  (0) 2019.02.20
용어 정리  (0) 2018.11.22
데이터 전처리  (0) 2018.10.21
작은 네트워크  (0) 2018.09.23
데이터 전처리  (0) 2018.09.22

http://shuuki4.github.io/deep%20learning/2016/05/20/Gradient-Descent-Algorithm-Overview.html

'이론 > 공부 자료들' 카테고리의 다른 글

나이브 베이지안 분류 (Naive Bayesian Classification)  (0) 2018.12.21
여러가지 convolutional layer  (0) 2018.11.16
Loss Functions  (0) 2018.10.21
L1, L2 loss 해석을 통한 비교  (0) 2018.10.21
Distance 개념 및 WGAN  (0) 2018.08.17

https://isaacchanghau.github.io/post/loss_functions/


CE : https://icim.nims.re.kr/post/easyMath/550

'이론 > 공부 자료들' 카테고리의 다른 글

여러가지 convolutional layer  (0) 2018.11.16
optimizers  (0) 2018.10.21
L1, L2 loss 해석을 통한 비교  (0) 2018.10.21
Distance 개념 및 WGAN  (0) 2018.08.17
최적화  (0) 2018.07.30

계속 수정 예정.



Outlier 제거 : https://tariat.tistory.com/29

'이론 > 메모' 카테고리의 다른 글

용어 정리  (0) 2018.11.22
Object Detector  (0) 2018.11.07
작은 네트워크  (0) 2018.09.23
데이터 전처리  (0) 2018.09.22
음수 Regression Model  (0) 2018.09.22

http://www.chioka.in/differences-between-l1-and-l2-as-loss-function-and-regularization/


L2는 outlier 값(극단치 or 이상치)이 있을 때 L1보다 상당히 민감하다

'이론 > 공부 자료들' 카테고리의 다른 글

optimizers  (0) 2018.10.21
Loss Functions  (0) 2018.10.21
Distance 개념 및 WGAN  (0) 2018.08.17
최적화  (0) 2018.07.30
HSV를 통한 색상 분류  (0) 2018.07.25

네트워크(신경망) 크기가 작을 수록

내부 구조에 대한 영향을 많이 받음.


그래서 더 다양한 시도를 해볼 필요가 있음.

optimizer

dropout

batchnormal

l1 norm, l2 norm

등등

'이론 > 메모' 카테고리의 다른 글

Object Detector  (0) 2018.11.07
데이터 전처리  (0) 2018.10.21
데이터 전처리  (0) 2018.09.22
음수 Regression Model  (0) 2018.09.22
딥러닝은 도구일뿐  (0) 2018.07.25

입력되는 데이터의 종류가 달라도

크기 차이가 심하면 (ex 하나는 그냥 양수, 하나는 0~1 실수)

학습이 잘 안된다.


입력되는 모든 데이터들의 값 범위는 비슷해야함.

범위만 조정해줘도 성능이 훨씬 좋아진다.

'이론 > 메모' 카테고리의 다른 글

Object Detector  (0) 2018.11.07
데이터 전처리  (0) 2018.10.21
작은 네트워크  (0) 2018.09.23
음수 Regression Model  (0) 2018.09.22
딥러닝은 도구일뿐  (0) 2018.07.25

output에 음수가 포함될 경우에

중간 layer들의 activation func으로 relu를 쓰면 성능이 낮다.


이 때는 relu 대신 tanh를 쓰면 성능이 좋아지는 것을 확인함.

'이론 > 메모' 카테고리의 다른 글

Object Detector  (0) 2018.11.07
데이터 전처리  (0) 2018.10.21
작은 네트워크  (0) 2018.09.23
데이터 전처리  (0) 2018.09.22
딥러닝은 도구일뿐  (0) 2018.07.25

https://www.slideshare.net/ssuser7e10e4/wasserstein-gan-i

'이론 > 공부 자료들' 카테고리의 다른 글

Loss Functions  (0) 2018.10.21
L1, L2 loss 해석을 통한 비교  (0) 2018.10.21
최적화  (0) 2018.07.30
HSV를 통한 색상 분류  (0) 2018.07.25
참고 사이트  (0) 2018.07.22

http://darkpgmr.tistory.com/149

'이론 > 공부 자료들' 카테고리의 다른 글

L1, L2 loss 해석을 통한 비교  (0) 2018.10.21
Distance 개념 및 WGAN  (0) 2018.08.17
HSV를 통한 색상 분류  (0) 2018.07.25
참고 사이트  (0) 2018.07.22
CRF  (0) 2018.05.20

HSV는 RGB와 같은 색상 표현 포멧 중 하나이다.


HSV는 색상, 채도, 명도로 이루어져있다.


RGB 같은 경우는 3가지 요소가 모두 결합되어야 색상을 결정하는데,

HSV의 경우는 첫 번째 요소인 Hue가 색상을 결정한다.


그래서 Hue 요소만 고려해도 어느정도 색상을 분류할 수 있다는 말이다.

물론 채도, 명도에 따라 달라지긴 하지만.


HSV의 구조는 아래 사이트에 나온 그림을 참고하면 쉽게 이해될 것이다.

https://ko.wikipedia.org/wiki/HSV_%EC%83%89_%EA%B3%B5%EA%B0%84


H는 360개의 값을 (각도),

S는 100개의 값을 (반지름),

V는 100개의 값을 가진다 (높이).


코드 레벨에선 표현 방법에 따라 int 값이 아닌, 0~1의 비율 값으로 표현하곤 한다.

ex) H가 0.5면 180, S가 0.5면 50.


python에선 colormap이라는 모듈을 통해, 손쉽게 색상계를 변환시킬 수 있다.


'이론 > 공부 자료들' 카테고리의 다른 글

Distance 개념 및 WGAN  (0) 2018.08.17
최적화  (0) 2018.07.30
참고 사이트  (0) 2018.07.22
CRF  (0) 2018.05.20
Activation function 정리  (0) 2018.05.10

+ Recent posts