분류 전체보기154 [딥러닝] Kears의 전처리와 데이터 로딩의 이해 Keras의 전처리와 데이터 로딩 위 사진을 보면 왼쪽은 화질이 좋은 강아지 사진이 있고 오른쪽은 화질이 좀 떨어지는 고양이 사진이 있습니다. 이 두 사진은 np.array로 표현하면, 각각 (2000 x 1640 x 3), (320 x 240 x 3) 입니다. 왼쪽의 이미지는 너무 값이 크니까 오른쪽 고양이와 같은 사진이 50000장 있다고 가정해 봅시다. 이 메타데이터들을 한 번에 np.array로 변환시켜 CPU에 올리면 320 x 240 x 50000 = 3,840,000,000KB 대략 3.8TB입니다. RAM이 3.8TB나 되는 사람은 없겠지요.... 그래서 나온 방법이 메타데이터 즉. jpg 사진들을 Batch Size만큼 CPU가 np.array로 바꾸고 또 GPU가 받을 수 있게 tens.. 2022. 3. 16. [딥러닝] 전이 학습(Transfer Learning) 전이 학습이란? 일반적으로 CNN 기반의 딥러닝 모델을 제대로 훈련시키려면 많은 수의 데이터가 필요합니다. 근데 그것은 쉽지 않은 일이지요. 방법도 어려울뿐더러 시간의 제약도 많이 있습니다. 이러한 현실적인 문제를 해결한 것이 전이학습입니다. 전이학습이란 이미 충분한 데이터와 여러 연구와 실험으로 만들어진 모델을 학습한 가중치를 가지고와 우리 모델에 맞게 재보정해서 사용하는 것입니다. 이 글에서는 Keras Applications으로 예시를 들건데 사용 가능한 Pretrained 모델은 대부분 ImageNet 데이터 셋으로 사전 훈련된 모델입니다. ImageNet은 1000개의 class들에 대한 이미지를 분류합니다. 최종 Classification layer가 1000개의 unit의 softmax형태로.. 2022. 3. 15. [딥러닝] 데이터 증강(Data Augmentation) 데이터 증강(Data Augmentation)이해 CNN 모델의 성능을 높이고 오버피팅을 극복할 수 있는 가장 좋은 방법은 다양한 유형의 학습 이미지 데이터 양을 늘리는 것입니다. 하지만 이미지 데이터의 경우 학습 데이터 량을 늘리는 것은 쉽지가 않습니다. 데이터 증강(Data Augmentation)은 학습 이미지의 개수를 늘리는 것이 아니고 학습 시 마다 개별 원본 이미지를 변형해서 학습하는 것입니다. ImageDataGenerator(Keras) import cv2 import matplotlib.pyplot as plt from tensorflow.keras.preprocessing.image import ImageDataGenerator #cv2.imread는 이미지를 RGB가 아닌 BGR로 받.. 2022. 3. 14. [딥러닝] GAP(Global Average Pooling) GAP의 필요성 CNN에는 많은 Convolution layer를 쌓기 때문에 많은 필터가 있습니다. 그만큼 차원의 수가 많습니다. 예를들어 (8, 8, 512)의 Feature map들을 Flatten으로 1차원 형태로 바꾸면 8 x 8 x 512 = 32,768 의 파라미터가 생기고 여기서 100개의 뉴런으로 구성된 Layer에 연결하면 32,768,000개의 파라미터가 생깁니다. 파라미터가 너무 많아지면서 학습 시 over fitting이 발생할 수도 있습니다. GAP의 구현 위의 그림과 같이 채널별로 평균 값을 추출합니다. 앞서 말한 Flatten처럼 GAP의 목적은 feature를 1차원 벡터로 만들기 위함입니다. Flatten과는 반대로 파라미터 수를 줄일 수 있습니다. 이는 충분히 채널수가 .. 2022. 3. 14. 이전 1 ··· 18 19 20 21 22 23 24 ··· 39 다음