왕현성
코딩발자취
왕현성
전체 방문자
오늘
어제
  • 코딩 (277)
    • Python (71)
    • Java (16)
    • MySQL (34)
    • 인공지능 (48)
      • 머신러닝 (16)
      • 딥러닝 (32)
    • 영상처리 (4)
    • Rest API (21)
    • Android Studio (25)
    • streamlit (13)
    • DevOps (22)
      • AWS (9)
      • PuTTY (5)
      • Git (4)
      • Serverless (2)
      • Docker (2)
    • IT 기술 용어 (6)
    • 디버깅 ( 오류 해결 과정 ) (17)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • maskimage
  • tune()
  • UnboundLocalError
  • 기상탐사
  • pip install labelme
  • yolov8
  • PIL
  • TensorFlow
  • get_long_description
  • 의료이미징
  • imageprocessing
  • OpenCV
  • alibidetect
  • 딥러닝
  • alibi-detection
  • ComputerVision
  • unsupervised
  • 비지도학습
  • matplotlib
  • 영상처리
  • labelme
  • numpy
  • PYTHON
  • encoding='utf-8'
  • 영상기술
  • ckpt_file
  • 영상처리역사
  • 컴퓨터비전
  • pytorch
  • labelme UnocodeDecodeError

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
왕현성

코딩발자취

딥 러닝 : Transfer Learning ( MobileNetV2 )
인공지능/딥러닝

딥 러닝 : Transfer Learning ( MobileNetV2 )

2023. 1. 2. 12:33
728x90
!wget --no-check-certificate \
    https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip \
    -O ./cats_and_dogs_filtered.zip

개 vs 고양이 이미지 파일 다운로드 코드

 

import os
import zipfile
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

# 파이썬의 진행상태를 표시해 주는 라이브러리
from tqdm import tqdm_notebook

from tensorflow.keras.preprocessing.image import ImageDataGenerator

%matplotlib inline
tf.__version__

사용할 라이브러리들을 임포트 해줍니다.

 

file = zipfile.ZipFile('/content/cats_and_dogs_filtered.zip')
file.extractall('./')

압축을 풀어주고

train_dir = ('/content/cats_and_dogs_filtered/train')
test_dir = ('/content/cats_and_dogs_filtered/validation')

트레이닝과 테스트 디렉토리 경로 변수로 저장

 

트랜스퍼 러닝은 학습이 잘 된 모델을 가져와서 우리의 문제에 맞게 활용하는 것이므로 학습이 잘 된 모델의 베이스 모델만 가져온다(헤드모델은 빼고)

 

# 우리가 만드려는 모델의 인풋 이미지는 128,128,3으로 한다.
IMG_SHAPE = (128, 128, 3)
base_model = tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE,include_top=False)
# 우리가 가져온 모델의 베이스모델 부분은
# 이미 1400만 장 이상의 이미지로 학습이 잘 되어 있어서
# 이미지의 특징을 뽑아내는 역할을 하므로
# 우리 데이터로는 학습이 되지 않도록 한다. < = Freezing

base_model.trainable = False
base_model.summary()

이 전에는 model.add() 이런 식으로 헤드 모델을 커스텀 해주었다면

from keras.layers import Flatten,Dense
head_model = base_model.output
head_model = Flatten()(head_model)
head_model=Dense(128,'relu')(head_model)
head_model=Dense(1,'sigmoid')(head_model)

트랜스퍼러닝에서는 위 코드와같이 작성을 해줍니다.

 

이후 베이스모델과 헤드모델을 합치는 코드

from keras.models import Model
model = Model(inputs=base_model.input,outputs = head_model)

컴파일 과정

from keras.optimizers import RMSprop
model.compile( RMSprop(0.0001) , 'binary_crossentropy' , ['accuracy'] )

Data Generators를 만들어 줍니다.

# 실무에서는, 데이터 증강까지 하도록 한다.
train_datagen = ImageDataGenerator(rescale = 1/255.0,width_shift_range=0.2)
test_datagen = ImageDataGenerator(rescale = 1/255.0)
train_generator=train_datagen.flow_from_directory(train_dir,target_size=(128,128),class_mode='binary',
                                  batch_size = 128)
                                 
test_generator = test_datagen.flow_from_directory(test_dir,target_size=(128,128),
                                                  class_mode='binary',
                                                  batch_size=128)

 

학습과 평가 과정

epoch_history = model.fit(train_generator,epochs=5,validation_data=(test_generator))

model.evaluate(test_generator)

'인공지능 > 딥러닝' 카테고리의 다른 글

딥러닝 : 에포크 시마다 가장 좋은 모델을 저장하는 ModelCheckpoint와 기록을 남기는 CSVLogger 사용법  (0) 2023.01.02
딥러닝 : Fine tuning 파인튜닝  (0) 2023.01.02
딥러닝 : 원본 파일을 Train / Test 파일로 분리하여 사용하는 방법과 디렉토리를 만드는 방법  (0) 2022.12.30
딥러닝 : 이미지 데이터 증강 / Image Augmentation  (0) 2022.12.30
딥러닝 : CNN 말과 사람 분류하기 / CNN모델링 방법 , 이미지파일을 학습 데이터로 만드는 방법(ImageDataGenerator)  (0) 2022.12.30
    '인공지능/딥러닝' 카테고리의 다른 글
    • 딥러닝 : 에포크 시마다 가장 좋은 모델을 저장하는 ModelCheckpoint와 기록을 남기는 CSVLogger 사용법
    • 딥러닝 : Fine tuning 파인튜닝
    • 딥러닝 : 원본 파일을 Train / Test 파일로 분리하여 사용하는 방법과 디렉토리를 만드는 방법
    • 딥러닝 : 이미지 데이터 증강 / Image Augmentation
    왕현성
    왕현성
    AI 머신비전 학습일지

    티스토리툴바