CNN - Fine Tuning
2022. 4. 5. 11:31
🖼 Computer Vision/CNN
📌 이 글은 권철민 님의 딥러닝 CNN 완벽가이드를 바탕으로 작성한 포스팅입니다. 목차 Pretrained 모델의 Fine Tuning(미세 조정) Fine Tuning 특성 Fine Tuning 실습 (with cat-and-dog) Pretrained 모델의 Fine Tuning(미세 조정) Fine Tuning은 Pretrained 모델을 커스텀 모델을 활용할 시 ImageNet으로 학습된 Feature Extractor의 가중치 값의 급격한 변화를 제어하기 위해 적용하는 방법 1단계 train을 할 수 있느냐? = weight를 업데이트 할 수 있느냐? Layer를 freeze 한다 = weight를 업데이트 할 수 없게 한다. Feature Extractor는 Freeze 시켜버리고 Classi..
CNN - EfficientNet
2022. 4. 4. 19:52
🖼 Computer Vision/CNN
📌 이 글은 권철민 님의 딥러닝 CNN 완벽가이드를 바탕으로 작성한 포스팅입니다. 목차 EfficientNet EfficientNetB0 구조 Keras의 EfficientNet Pretrained 모델 EfficientNet 네트워크의 깊이(Depth), 필터 수(Width), 이미지 Resolution 크기를 최적으로 조합하여 모델의 성능을 극대화했다. 필터 수(Width) : 너비라고 표현하기도 한다. Conv2D()의 맨 처음 파라미터로 적는다. 기본 필터는 보통 3by3 크기의 커널에 256개 이다. 필터 수가 많으면 너비가 넓어질 수 밖에 없다. 깊이(Depth) : weight 층이 있는 레이어가 몇개인가? 깊이는 곧 레이어의 개수이다. 이미지 Resolution : 말그대로 이미지의 해상도..
CNN - ResNet
2022. 4. 2. 09:56
🖼 Computer Vision/CNN
📌 이 글은 권철민 님의 딥러닝 CNN 완벽가이드를 바탕으로 작성한 포스팅입니다. 목차 ResNet : 깊은 네트워크를 Identity layer로 구성한 모델 ResNet의 주요 특징 : Short Cut & Identity Block 깊은 네트워크를 Identity layer로 구성한다면? ResNet - Residual Learning & Identity Mapping ResNet 구조 ResNet 구조 비교 identity block 생성 위에서 생성한 identity_block()을 호출하여 어떻게 identity block이 구성되어 있는지 확인 identity block을 연속으로 이어서 하나의 Stage 구성. 각 stage내의 첫번째 identity block에서 입력 feature ma..
CNN - GoogLeNet
2022. 4. 1. 17:02
🖼 Computer Vision/CNN
📌 이 글은 권철민 님의 딥러닝 CNN 완벽가이드를 바탕으로 작성한 포스팅입니다. 목차 GoogLeNet Architecture GoogLeNet의 특징 Inception Module의 구조 1×1 Convolution 연산을 통한 Feature Map 채널(깊이) 압축 1×1 Convolution 연산을 이용한 Inception module 구성 Inception Network의 구조 GoogLeNet Architecture GoogLeNet은 Inception module이 연결되어 있는 구조이다. 1x1 convolution이 굉장히 많이 사용된다. 영화 인셉션을 따와서 이름을 지었다고 한다. 그럼 왜 구글넷은 이런 구조로 만들었을까? GoogLeNet 특징 큰 사이즈의 Receptive Field..
CNN - VGGNet
2022. 4. 1. 15:46
🖼 Computer Vision/CNN
📌 이 글은 권철민 님의 딥러닝 CNN 완벽가이드를 바탕으로 작성한 포스팅입니다. 목차 VGG 개요 VGGNet의 장점 VGGNet 구조 VGGNet 구현 코드 VGG 개요 네트워크의 깊이와 모델 성능 영향에 집중했다. Convolution 커널 사이즈를 3 x 3으로 고정시켰다. 커널 사이즈가 크면 이미지 사이즈 축소가 급격하게 이뤄져서 더 깊은 층을 만들기 어렵고, 파라미터 개수와 연산량도 더 많이 필요하기 때문이다. VGGNet의 장점 단일화된 Kernel 크기, Padding, Strides 값으로 단순한 네트워크를 구성하지만 AlexNet 보다 더 나은 성능 AlexNet의 11x11, 5x5와 같은 큰 Receptive Field를 가진 Kernel 크기를 적용하지 않고도, 3X3 Kernel..
CNN - AlexNet
2022. 3. 31. 11:49
🖼 Computer Vision/CNN
📌 이 글은 권철민 님의 딥러닝 CNN 완벽가이드를 바탕으로 작성한 포스팅입니다. 목차 AlexNet 개요 AlexNet 구성 AlexNet 구현 CIFAR10 데이터셋을 이용한 AlexNet 학습 성능 및 테스트 AlexNet 개요 Convolution layer 5개 + Fully Connected Layer 3개로 구성 Activation 함수로 ReLU 함수를 처음으로 사용 MaxPooling 으로 Pooling 적용 및 Overlapping Pooling 적용 Local Response Normalization(LRN) 사용 Overfitting을 개선하기 위해서 Drop out Layer와 Weight의 Decay 기법 적용 Data Augmentation 적용(좌우 반전, Crop, PCA ..
CNN - Image data scaling preprocessing
2022. 3. 27. 18:12
🖼 Computer Vision/CNN
이미지 데이터 스케일링은 어떻게 진행되고 각 모델에 맞게 스케일링을 어떻게 해야할까? 목차 Cat&Dog Data Load image data의 scaling preprocessing 유형 tf 또는 torch 유형으로 변경하는 함수 생성 scale 된 이미지 pixel값의 histogram 시각화 그러나 논문에 나와있는 pretrained 모델들은 고유한 scaling 방법이 있다 : preprocess_input() ImageDataGenerator에 preprocess_input()을 적용시 preprocessing_function 파라미터를 사용 1. Data Load import numpy as np # linear algebra import pandas as pd # data processin..
OpenCV 이미지 로딩시 BGR을 RGB로 변환해야 하는 이유
2022. 3. 27. 10:39
🖼 Computer Vision/CNN
OpenCV 이미지 로딩시 BGR을 RGB로 변환해야 한다. 왜? OpenCV에서 이미지 로딩은 imread(‘파일명’)을 이용하고, imread(‘파일명’)은 파일을 읽어 넘파이 array로 변환한다. imread()를 이용하여 이미지를 로딩할 때, 가장 주의해야 할 점은 OpenCV가 이미지를 RGB 형태가 아닌 BGR 형태로 로딩하기 때문에 색감이 원본 이미지와 다르게 나타난다는 것이다. OpenCV에서 imread(‘파일명’)을 이용하여 로딩된 이미지 배열은 BGR 형태의 배열이므로 이를 RGB 형태의 배열로 변환하려면 cvtColor(이미지 배열, cv2.COLOR_BGR2RGB)를 이용해야 한다. import cv2 import matplotlib.pyplot as plt bgr_img_arr..
CNN - Data Augmentation
2022. 3. 4. 20:24
🖼 Computer Vision/CNN
목차 Data Augmentation 개요 Augmentation 유형 공간 레벨 픽셀 레벨 TF.Keras 지원 Augmentation ImageDataGenerator 특징 Keras의 Preprocessing과 Data Loading 메커니즘 ImageDataGenerator를 이용한 Augmentation ImagDataGenerator를 이용하여 Augmentation 적용하기 좌우, 상하 반전(Horizontal Flip, Vertical Flip) 여러 이미지의 ImageDataGenerator 변환을 수행하는 함수 생성 Affine Transformation 이미지 Rotation 이미지 좌우, 상하 이동(Shift) Zoom(Scale) Shear Bright Channel Shift N..
CNN - Global Average Pooling
2022. 3. 4. 17:51
🖼 Computer Vision/CNN
목차 Global Average Pooling Global Average Pooling를 이용한 Fully Connected Layer 연결 Global Average Pooling Global Average Pooling은 피처맵의 가로×세로의 특정 영역을 Sub sampling 하지 않고, 채널 단위로 평균 값을 추출하는 방법이다. 3차원 Feature map을 1차원 Dense Classification layer에 연결 시, 많은 연결 노드와 파라미터가 필요하나, GAP를 이용하면 효과적으로 노드와 파라미터를 줄일 수 있다. 충분히 Feature map의 채널 수가 많을 경우 이를 적용하고, 채널 수가 적다면 Flatten이 유리하다. Global Average Pooling를 이용한 Fully ..
CNN - Batch Normalization
2022. 3. 3. 21:27
🖼 Computer Vision/CNN
목차 Feature Scaling Scaling 기법 Min-Max scaling : 0~1 사이 값으로 변환 Z score 정규화 : 평균이 0, 표준편차가 1 인 데이터셋으로 변환 Scaling 적용 유무에 따른 Loss함수의 Gradient Descent 변화 Batch Normalization Batch Normalization의 필요성 - Internal Covariate Shift Batch Normalization 개요 Batch Normalization의 적용 CNN에서 Batch Normalization 구성 Batch Normalization의 효과 Batch size 변화에 따른 모델 성능 Feature Scaling 서로 다른 Feature 값들을 동일한 척도로 변환시키는 것 Sca..
CNN - Weight Initialization
2022. 3. 3. 21:03
🖼 Computer Vision/CNN
목차 가중치 초기화 (Weight Initialization) 좋은 가중치 초기화 조건 평균이 1 이고 표준편차가 1인 표준 정규분포에서 난수 추출 표준 편차 변경에 따른 Sigmoid 출력 결과 Xavier Glorot Initialization Xavier initialization - 정규분포(glorot_normal), 균일분포(glorot_uniform) He Initialization Weight Initialization을 He Normal로 변경 후 성능 검증 가중치 초기화 (Weight Initialization) 좋은 가중치 초기화 조건 값이 동일해서는 안된다. 충분히 작아야 한다. 적당한 분산(또는 표준편차)를 가져야 한다. 충분히 작을 수 있도록 도와주기 위한 적당한 분산. 평균이 ..
CIFAR10
2022. 3. 3. 16:46
🖼 Computer Vision/CNN
목차 CIFAR10 Dataset 생성 CIFAR10 데이터 시각화 Data preprocessing Custom Model 생성 Model 학습 수행 및 테스트 데이터로 평가 model.predict()를 통해 이미지 분류 예측 1. CIFAR10 Dataset 생성 tf.keras.datasets의 cifar10.load_data()는 웹에서 Local computer로 Download후 train과 test용 image와 label array로 로딩. import numpy as np # linear algebra import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv) import os from tensorflow.keras.d..
CNN - Convolution 연산 후 Feature map 크기 계산 이해하기
2022. 3. 2. 22:32
🖼 Computer Vision/CNN
📌 이 글은 권철민님의 딥러닝 CNN 완벽 가이드를 바탕으로 정리한 내용입니다. 목차 출력 Feature Map 크기 계산 공식 Stride가 1이고 Padding이 없는 경우 Stride가 1이고 Padding이 1인 경우 Stride가 2이고 Padding이 없는 경우 Stride가 2이고 Padding이 1인 경우 입력이 6X6에서 Stride가 2 적용 output Feature map의 크기 공식의 일반적인 적용 출력 Feature Map 크기 계산 공식 I : 입력 Feature Map의 크기 F : Filter의 크기(Kernel size) : 4x4 P : Padding(정수) : 모서리 채우는 것, 1이면 4x4 → 5x5 S : Strides(정수) : 몇단위로 이동하나 크기는 모두 가..
CNN - Convolution 연산에서 Filter에 대한 이해
2022. 3. 2. 20:56
🖼 Computer Vision/CNN
📌 이 글은 권철민님의 딥러닝 CNN 완벽 가이드를 바탕으로 정리한 내용입니다. 목차 다채널 Input에 여러 개의 Filter 적용 Filter 채널수와 개수, 그리고 입력과 출력 Feature map의 채널수 관계 다채널 Input의 Convolution Filter 적용 메커니즘 다채널 Input에 3x3 Filter 적용 메커니즘 Quiz 1. Filter, Kernel, Channel 수 Quiz 2. Filter의 shape 다채널 Input에 여러 개의 Filter 적용 지금까지 이해를 돕기 위해 Filter를 2차원(면적)으로 표현했지만 일반적으로 Filter는 3차원이며, CNN에서는 이 3차원 Filter 여러개를 개별 Feature map에 적용하는 방식이다. Filter 채널수와 개..