[KT AIVLE] 12. 시각지능 딥러닝(3)

onlyJoon·2023년 3월 18일
0

KT AIVLE

목록 보기
9/31
post-thumbnail

요약

  • 모델 저장: ModelCheckpoint
  • 코랩-드라이브 연동: google.colab의 mount
  • 파일 불러오기: glob
  • Pretrained Model
  • Transfer Learning

모델 저장 및 불러오기

모델 저장하기

  • 모델을 저장하여 재사용
  • 코랩에서는 세션이 끊겨 모델을 다시 학습해야하는 상황 방지

Model Checkpoint 정의

from tf.keras.callbacks import ModelCheckpoint

mcp = ModelCheckpoint(filepath = ,
	   				  monitor = ,
                      save_best_only = ,
       				  save_weights_only = )
  • filepath = 모델 저장 경로 및 저장할 때의 파일명(확장자 .h5 사용 권장)
  • monitor = 학습 진행 여부 비교 지표('val_loss')
  • save_best_only = 가장 좋은 모델만 저장할 것인지(True/False)
  • save_weights_only = 가장 좋은 가중치만 저장할 것인지(True/False)

mcp 사용(학습)

  • 학습(fit)에서 callback의 인자로 위에서 정의한 'mcp' 전달
model.fit(x_trian, y_train,
		  callbacks = [mcp, ...],
          ... )
  • 학습을 진행하면서 성능이 더 좋은 모델이 나올 경우 덮어쓰는 방식으로 모델을 계속 저장
  • save_best_only = False 일 경우, 모든 모델이 전부 저장됨

vs 'model.save()'

  • mcp 방식은 학습 중 모델이 저장되는 반면, model.save()는 학습 종료 후 모델이 저장됨
  • save_best_only = True 일 경우, 저장된 모델은 같음

모델 불러오기

from tf.keras.models import load_model

model = load_model('name.h5')

colab-구글 드라이브 연동

  • 코랩은 구글에게 컴퓨터를 빌려서 쓰고 반납하는 형식
  • 코랩 내에서 변경된 내용은 반납 시 사라짐
from google.colab import drive

drive = mount('content/drive')

파일 불러오기

import glob

files = glob.glob('/path/*')
  • glob: 많은 파일들을 '리스트 형태'로 불러올 때 사용하는 라이브러리
  • 사용자가 제시한 조건에 맞는 파일들을 불러옴
  • '*'는 임의 길이의 모든 문자열을 의미
  • '?'는 한자리의 문자를 의미
  • recursive=True로 설정 및 '**'를 사용 시 모든 하위 디렉토리까지 탐색

Pretrained Model

pt 모델 사용하기

  • 모델 선언부터 학습, 테스트까지의 과정은 쉽지 않음
  • 때로는 이미 검증된 모델을 사용하는 것이 더 좋음
  • ex) googLeNet 사용하기
from tf.keras.applications.inception_v3 import InceptionV3

model = InceptionV3(weights = 'imagenet,
				    include_top = ,
                    input_shape = )
  • weights = 어떤 데이터를 바탕으로 학습된 모델의 가중치를 가져올 것인가?
  • include_top = 마지막 레이어를 포함시킬 것인가?
  • input_shape = 입력 데이터의 형태

Transfer Learning

  • pt 모델을 해결하려는 문제에 맞게 일부만 수정하여 사용

ReduceLROnPlateau

  • 학습 시 callbacks의 인자로 전달
from tensorflow.keras.callbacks import ReduceLROnPlateau

lrl = ReduceLROnPlateau(monitor = ,
                        patience = ,
                        factor = ,
                        min_lr = ,
                        verbose = )
  • patience = 학습이 진행되지 않을 때 지켜볼 횟수.
    횟수를 초과하면 'factor'에 따라 'Learning Rate' 조정
  • factor = Learning Rate에 곱할 값
  • min_lr = Learning Rate의 하한

Global Average Pooling

  • 각 MAP의 전체 평균으로 Pooling
from tensorflow.keras.layers import GlobalAveragePooling2D

gap = GlobalAveragePooling2D()
  • patience = 학습이 진행되지 않을 때 지켜볼 횟수.
    횟수를 초과하면 'factor'에 따라 'Learning Rate' 조정
  • factor = Learning Rate에 곱할 값
  • min_lr = Learning Rate의 하한

마무리

  • Object Detection을 배웠으나 다음 포스팅에 같이 작성 예정
profile
A smooth sea never made a skilled sailor

0개의 댓글