본문 바로가기

인공지능/Deep Learning28

[Deep Learning] 가장 좋은 모델과 기록을 자동 저장하기 ModelCheckPoint, CSVLogger 📝epoch 마다 가장 좋은 모델을 자동으로 저장하는 ModelCheckPoint / 기록을 저장하는 CSVLogger 우선 모델과 로그를 저장할 디렉토리를 만든다 # 파이썬 코드로 디렉토리 만들기 # PROJECT_PATH 변수에는 내 드라이브 파일경로를 저장해두었다 if not os.path.exists(PROJECT_PATH + '/checkpoints/' + model_type + '/') : os.makedirs(PROJECT_PATH + '/checkpoints/' + model_type + '/') if not os.path.exists(PROJECT_PATH + '/log/' + model_type + '/') : os.makedirs(PROJECT_PATH + '/log/' + model.. 2023. 1. 2.
[Deep Learning] Transfer Learning Fine tuning 📝트랜스퍼러닝 후 파인튜닝하기 개와 고양이 사진을 분류하는 딥러닝 Transfer Learning 해보기(https://coding-jisu.tistory.com/169)에서 추가적으로 파인튜닝을 해봤다 파인 튜닝? 섬세한 튜닝 이 방법은 꼭 트랜스퍼 러닝을 한 다음에 수행하는 방법이다 위의 트랜스퍼러닝을 한 후에 조금 더 개선이 가능한지 해보는 방법으로서 위에서 학습한 모델을 가지고 그 상태에서 추가로 학습을 시키는 것이다 단, 좋은 모델의 일부분을 내 데이터로 학습 가능하도록 변경한 후에 학습시킨다 일단 베이스 모델의 전체 레이어를 다시 학습 가능토록 바꿔주고 베이스 모델의 전체 레이어 수를 확인한다 레이어 갯수를 확인했으니 몇번째 레이어까지 학습이 안되도록 할 것인지 결정해 준다 # 1. base_.. 2023. 1. 2.
[Deep Learning] 사진 분류하는 딥러닝 Transfer Learning으로 해보기 (MobileNetV2 활용) 📝개와 고양이 사진을 분류하는 딥러닝 Transfer Learning으로 해보기 Transfer Learning? 이미 학습이 완료된 인공지능을 가져다가 쓰는 것이다 = 내 데이터로 다시 재 학습(보강해서)해서 사용 MobileNetV2? 모바일이나 임베디드에서도 실시간을 작동할 수 있게 모델이 경량화 되면서도 정확도 또한 많이 떨어지지 않게하여 속도와 정확도 사이의 트레이드 오프 문제를 어느정도 해결한 네트워크 ※ 트랜스퍼 러닝에 사용 가능한 모델들 참고하기 (https://www.tensorflow.org/api_docs/python/tf/keras/applications) 트랜스퍼 러닝은 학습이 잘 된 모델을 가져와서 나의 문제에 맞게 활용하는 것이므로 학습이 잘 된 모델의 베이스모델만 가져온다(헤.. 2023. 1. 2.
[Deep Learning] 원본 파일을 train / test 파일로 분리하기 📝원본 파일을 train / test 파일로 각각 분리하기 /tmp 디렉토리 안에 학습을 위한 데이터를 분류하기 위해 cats-v-dogs 디렉토리를 만들고 그 아래 training 과 testing 디렉토리 만든 후 각각 디렉토리 안에 cats와 dogs 디렉토리를 만든다 import os try: #YOUR CODE GOES HERE os.mkdir('/tmp/cats-v-dogs') os.mkdir('/tmp/cats-v-dogs/training') os.mkdir('/tmp/cats-v-dogs/testing') os.mkdir('/tmp/cats-v-dogs/training/cats') os.mkdir('/tmp/cats-v-dogs/training/dogs') os.mkdir('/tmp/cat.. 2023. 1. 2.
[Deep Learning] CNN 개와 고양이 사진을 분류하는 딥러닝 해보기 📝딥러닝 CNN으로 개와 고양이 사진을 분류하는 딥러닝 해보기 이미지는 캐글 "Dogs vs. Cats" dataset 에서 2,000개만 가져왔다 !wget --no-check-certificate \ https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip \ -O /tmp/cats_and_dogs_filtered.zip 가져온 파일 압축을 풀고 import zipfile file = zipfile.ZipFile('/tmp/cats_and_dogs_filtered.zip') file.extractall('/tmp') 학습용 개 사진이 저장된 디렉토리안에 있는 파일명을 확인 import os # train_dir 경로에 dogs .. 2023. 1. 2.
[Deep Learning] CNN TensorFlow 이미지 분류하는 딥러닝 해보기 📝딥러닝 CNN 텐서플로우 이미지를 분류하는 딥러닝 해보기 기존에 DNN으로 해봤던 이미지 분류를 CNN을 이용해 분류해봤다 (https://coding-jisu.tistory.com/158) import tensorflow as tf from keras.models import Sequential from keras.layers import Dense, Flatten # 데이터 가져와서 학습용과 테스트용으로 분리 fashion_mnist = tf.keras.datasets.fashion_mnist (X_train, y_train), (X_test, y_test) = fashion_mnist.load_data() # CNN을 이용할것이기 때문에 4차원으로 변경(학습용과 테스트용 둘 다 변경) X_trai.. 2022. 12. 30.
[Deep Learning] 이미지 파일 학습 데이터로 만들기(+이미지 증강) ImageDataGenerator 📝CNN 학습 하기전 이미지 파일(jpg, png..)을 학습 데이터(넘파이의 어레이)로 만드는 방법 fit 함수에 들어가는 데이터는 넘파이 어레이가 들어가야하지만 가지고 있는 데이터는 이미지 파일(png)이라 현재 상태로는 fit 함수를 이용한 학습이 불가능하다 이미지 파일을 넘파이 어레이로 변환시켜주는 라이브러리(ImageDataGenerator)를 사용해 변환하자 from keras.preprocessing.image import ImageDataGenerator # 파라미터에 적은 rescale=는 이미지 사이즈를 255로 나눠서 피처스케일링 해서 가져오라는 것 # 라이브러리를 변수에 저장하여 사용한다 train_datagen = ImageDataGenerator(rescale= 1/255.0) .. 2022. 12. 30.
[Deep Learning] 파이썬으로 압축 파일 풀기 zipfile 📝파이썬으로 압축 파일 푸는 방법 # 라이브러리 임포트 import zipfile # 변수에 ZipFile이 있는 경로를 가져와서 저장한다 file = zipfile.ZipFile('/tmp/horse-or-human.zip') # file.extractall에 압축을 풀 폴더 경로를 입력한다(새로운 파일이름을 적으면 파일 생성됨) file.extractall('/tmp/horse-or-human') 압축을 푼 각 폴더에 저장되어 있는 사진 파일들 확인하기 import os # dir 디렉토리에 있는 것을 리스트로 전부 가져오기(파일명 확인) os.listdir(train_horse_dir) # 디렉토리에 저장된 파일의 갯수 확인 len(os.listdir(train_horse_dir)) 2022. 12. 30.
[Deep Learning] CNN Pooling 📝CNN의 풀링(Pooling) 풀링(Pooling)은 다운 샘플링(Down sampling)이다 (다운샘플링 = 사이즈를 줄인다) 간단하게 말하자면 대표하는 값으로 하나로 만드는 것 풀링은 사이즈를 줄이고 특징을 잘 뽑아낸다 Max Pooling : 정해진 크기 안에서 가장 큰 값만 가져온다 Average Pooling : 정해진 크기 안의 값들의 평균을 가져온다 ※ 가장 많이 사용하는 것은 맥스풀링(MaxPooling)이다 2022. 12. 30.
[Deep Learning] CNN Convloution 📝CNN의 컨볼루션(Convloution) CNN? Convolution Neural Network의 약자로 딥러닝에서 주로 이미지나 영상 데이터를 처리할 때 쓰인다 ※ ANN을 사용하면 위치구조가 사라지기때문에 사진을 있는 그대로 학습시키는 CNN을 사용한다 컨볼루션이란, 하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분하여 새로운 함수를 구하는 수학 연산자 커널(kernel)로 컨볼루션(Convloution)한 결과는 피처맵(Feature Map)이다 ※ 커널은 필터 filter 라고도 한다 컨볼루션 결과로 나오는 행렬사이즈 계산하는 공식 (I - K + 2P) / S + 1 I = 이미지사이즈 K = 커널사이즈 P = 패딩 S = 스트라이드 스트라이드(Stride) : .. 2022. 12. 29.