본문 바로가기
프로그램/SKT FLY AI

SKT FLY AI : 8일차 - CNN(2)

by hsloth 2023. 7. 5.

오늘부터 SKT측에서 코랩 Pro 지원을 해줬다!

데이터 증강


  • 기존의 데이터를 변형해서 데이터의 양을 늘리는 것
  • ImageDataGenerator를 사용해서 데이터 증강

데이터 증강 방법

이미지 데이터 증강 방법

  • 랜덤하게 이미지를 자르기
  • 회전
  • 밝기 조절
  • 블러 처리
  • 노이즈 삽입

데이터 증강을 하는 이유

  • CNN모델을 보면, train Accuracy가 validation Accuracy보다 높다. (차이가 많이 난다)
  • 두 Accuracy의 차이를 좁히기 위해서!
  • 데이터의 다양성과 모델의 일반화를 위해서!
  • 크기 증가 : 모델이 트레이닝 중에 더 많은 이미지를 학습 가능 (학습능력을 높인다)
  • 편차 증가 : 모델이 중요하지 않은 특징을 무시하고 분류에서 정말로 중요한 특징만 선택하도록 하여 더 나은 일반화가 가능

데이터셋 객체 생성

train_datagen = ImageDataGenerator(
    rescale = 1./255, # 데이터에 제공된 값을 곱함
    rotation_range = 20, # 무작위 회전에 대한 도(각도) 단위 범위
    width_shift_range = 0.1, # 이미지를 수평으로 임의로 이동(전체 너비의 대칭)
    height_shift_range = 0.1, # 이미지를 수직으로 임의로 이동(전체 높이의 대칭)
    zoom_range = 0.05, # 무작위 확대/축소 범위
    horizontal_flip = True, # 입력을 수평으로 랜덤하게 적용
    fill_mode = 'reflect') # One of {"constant", "nearest", "reflect" or "wrap"}, "nearest"가 기본 # 이동하고 남는 부분을 어떻게 채워줄거냐 라는 옵션
val_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)

전이학습

  • 학습에 필요한 데이터의 양이 충분하지 않아도 사전에 훈련된 딥러닝 모델로 데이터의 일부만 재학습시켜 원하는 목적에 필요한 모델을 만들어내는 기술
  • 특정 분야에서 학습된 신경망의 일부 능력을 비슷하거나 또는 새로운 분야에서 사용되는 신경망의 학습에 이용하는 것
  • 데이터 증강과 마찬가지로 데이터의 양이 많지 않을 때 효과적으로 사용

전이학습 성능 개선 -> fine-tuning

추가 성능 개선

  • 옵티마이저의 변경
  • BatchNormalization 추가
  • Dropout추가
  • resnet50모델까지 전체 학습 -> 구조만 가져오고 전부 학습하는 것을 의미
  • Data 전처리 및 증강을 통한 학습데이터 개선
  • Fully Connected Layer 은닉층 추가 및 노드 추가
  • learning decay를 이용해 유동적인 학습 진행
  1. 데이터 준비/데이터 표시
  2. 학습 완료된 모델 준비
  3. 분류 부분의 모델 구성
  4. 모델 컴파일
  5. 콜백 생성
  6. 학습/학습 곡선
  7. 시각화/예측

전이학습 종류

  • Fine-tuned ConvNet : 미리 학습된 ConvNet의 마지막 Fully Connected Layer만 변경해 분류 실행
  • Pre-trained Model : 미리 학습된 모델의 가중치를 새로운 모델에 적용
  • Domain Adaptation : 풍부한 데이터를 바탕으로 훈련시 도메인 구분 능력은 약하게 학습하여 Target Data를 분류 가능하도록 모델 구축
  • Layer Re-use : 기존 모델의 일부 Layer를 재사용하여 부족 Dta Domain 모델 구축에 활용항목 추가

바운딩박스 근사

바운딩 박스(bounding box)

  • 물체의 위치를 추정(회귀 작업)
  • 물체의 위치를 사각형으로 정의(꼭지점 좌표)
  • 객체 탐지 모델에 사용되는 데이터의 크기가 방대하기 때문에, 바운딩 박스를 통하여 객체를 올바르게 탐지하고 딥러닝 과정에서 바운딩 박스 영역만 대상이 되기 때문에, 딥러닝을 효율적으로 수행
  • 바운딩 박스는 특정 사물을 탐지하여 모델을 효율적으로 학습할 수 있도록 두움을 주는 방법
  • 객체 탐지 모델에서 바운딩 박스는 타겟 위치를 지정
  • 물체 중심의 수평, 수직 좌표와 높이, 너비를 예측
  • 모델을 크게 바꿀 필요는 없음
  • 바운딩 박스에 널리 사용되는 지표는 IoU(Intersection over union)
  • 예측한 바운딩 박스와 타깃 바운딩 박수 사이에 중첩되는 영역을 전체 영역으로 나눈 것
  • tf.keras에서는 tf.keras.metrics.MeanIoU에 구현

'프로그램 > SKT FLY AI' 카테고리의 다른 글

SKT FLY AI : 10일차  (0) 2023.07.10
SKT FLY AI : 9일차 - RNN  (0) 2023.07.07
SKT FLY AI : 7일차 - CNN  (0) 2023.07.04
SKT FLY AI : 6일차 - ML(2)  (0) 2023.07.04
SKT FLY AI - 번외. 첫날~워크샵  (0) 2023.07.01