Machine Learning/Deep Learning

    Tensorflow - 콜백을 이용해 로그와 모델 저장하기

    1. ModelCheckpoint from keras.callbacks import ModelCheckpoint ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1) 에포크가 끝날 때마다 모델을 저장하는 콜백 filepath: string, 모델 파일을 저장할 경로. monitor: 기록할 항목. verbose: 상세 정보 표시 정도, 0 혹은 1. save_best_only: True인 경우 monitor 값을 기준으로 가장 좋았던 모델만 저장합니다. save_weights_only: True인 경우 모델의 가중치만 저장되고 (mo..

    Tensorflow - Transfer Learning 예제

    이전 포스트에서 transfer learning에 대한 간략한 개념을 알아봤으니 직접 코드로 실습해보자. MobileNetV2 로 transfer learning해서 개와 고양이 이미지를 분류하려 한다. 이전 포스트가 궁금하면? https://donghyeok90.tistory.com/170 Transfer Learning(전이 학습) 과 Fine Tuning(미세 조정) 1. Transfer Learning (전이 학습) 전이 학습(Transfer Learning)은 특정 분야에서 학습된 신경망의 일부 능력을 유사하거나 전혀 새로운 분야에서 사용되는 신경망의 학습에 이용하는 것을 의미한다. 쉽게 donghyeok90.tistory.com MobileNetV2 모바일이나, 임베디드에서도 실시간으로 작동할..

    Transfer Learning(전이 학습) 과 Fine Tuning(미세 조정)

    1. Transfer Learning (전이 학습) 전이 학습(Transfer Learning)은 특정 분야에서 학습된 신경망의 일부 능력을 유사하거나 전혀 새로운 분야에서 사용되는 신경망의 학습에 이용하는 것을 의미한다. 쉽게 말해서 학습이 잘 된 pre-trained model을 가져와서, 나의 문제에 맞게 활용하는 것이다. 아래 링크에서 Tensorflow에서 제공하는 pre-trained 모델들을 확인할 수 있다. https://www.tensorflow.org/api_docs/python/tf/keras/applications?hl=ko Module: tf.keras.applications | TensorFlow v2.11.0 Keras Applications are premade archite..

    파일을 Train/Test 디렉토리로 나눠서 저장하는 방법

    import random import tensorflow as tf from tensorflow.keras.optimizers import RMSprop from tensorflow.keras.preprocessing.image import ImageDataGenerator from shutil import copyfile 수집한 이미지 파일들을, ImageDataGenerator를 이용해 학습데이터(numpy array)로 변환하기 위해, 그 형식에 맞게 디렉토리를 만들고 저장하는 법을 알아보자. 1. 연습용 데이터 다운로드 후 압축해제 # 연습용 이미지파일 # /tmp 경로에 압축파일을 다운로드 받고 압축 푼다. import zipfile !wget --no-check-certificate \ 'ht..

    Tensorflow - ImageDataGenerator를 이용한 이미지 전처리와 이미지 증강

    from tensorflow.keras.preprocessing.image import ImageDataGenerator 1. 이미지 전처리 가지고 있는 이미지 파일을 인공지능에서 학습시키려면 numpy array 형태로 바꿔줘야 한다. 텐서플로우의 ImageDataGenerator 클래스의 flow_from_directory 메소드를 이용하면 쉽게 변환 할 수 있다. # train 데이터용 인스턴스 호출 train_datagen = ImageDataGenerator(rescale= 1/255.0) # test 데이터용 인스턴스 호출 test_datagen = ImageDataGenerator(rescale= 1/255.0) train_generator = train_datagen.flow_from_di..

    Tensorflow - CNN 모델 예제

    이미지를 보고 인간인지 말인지 분류하는 모델을 만들어보려 한다. 1. 연습용 이미지 다운로드 !wget --no-check-certificate \ https://storage.googleapis.com/laurencemoroney-blog.appspot.com/horse-or-human.zip \ -O /tmp/horse-or-human.zip !wget --no-check-certificate \ https://storage.googleapis.com/laurencemoroney-blog.appspot.com/validation-horse-or-human.zip \ -O /tmp/validation-horse-or-human.zip 2. 압축 풀기 import zipfile # 파일을 불러옴 file..

    Convolution Neural Network(CNN, 합성곱 신경망) 개념

    1. Convolution Neural Network (CNN) 필터링 기법을 인공신경망에 적용(Convolution 작업)하여 이미지를 효과적으로 처리 할 수 있는 기법 행렬로 표현된 필터의 각 요소가 데이터 처리에 적합하도록 자동으로 학습되는 과정을 통해 이미지를 분류하는 기법 2. 심층신경망(DNN), 합성곱신경망(CNN)의 차이 심층 신경망 (DNN) 1차원의 데이터로 학습 다차원일 경우 flatten 작업을 통해 1차원으로 변경, 이미지의 경우 공간적/지역적 정보가 손실 추상화 과정 없이 바로 연산 과정으로 넘어가기 때문에 학습 시간과 효율성이 저하 합성곱 신경망 (CNN) 그대로의 데이터로 학습 공간적/지역적 정보 유지 이미지 전체보다는 부분을 보는 것, 이미지의 한 픽셀과 주변 픽셀들의 연관..

    Tensorflow - 레이블인코딩 된 y값을 원핫인코딩으로 바꾸기

    위의 0부터 9까지의 클래스로 분류된 numpy array를 One-Hot encoding으로 변환하려고 한다. numpy 라이브러리에는 없지만, 머신러닝 과정에서 유용한 numpy array를 다루는 기능들을 keras.utils 라이브러리에서 제공한다. tf.keras.utils.to_categorical 레이블 인코딩 된 배열 y를 원핫인코딩으로 변환 num_classes: 총 클래스 수. 입력하지 않았을 때, default 값은 max(y) + 1 import tensorflow as tf # 0부터 9까지의 클래스로 분류된 ndarray y_train >>> array([5, 0, 4, ..., 5, 6, 8], dtype=uint8) # 원핫인코딩으로 변환 y_train = tf.keras.u..