728x90
import os
import zipfile
import random
import tensorflow as tf
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from shutil import copyfile
필요 라이브러리 import
# /tmp 경로에 압축파일을 다운로드 받고 압축 푼다.
!wget --no-check-certificate \
"https://block-edu-test.s3.ap-northeast-2.amazonaws.com/kagglecatsanddogs_5340.zip" \
-O "/tmp/cats-and-dogs.zip"
local_zip = '/tmp/cats-and-dogs.zip'
zip_ref = zipfile.ZipFile(local_zip, 'r')
zip_ref.extractall('/tmp')
zip_ref.close()
print(len(os.listdir('/tmp/PetImages/Cat/')))
print(len(os.listdir('/tmp/PetImages/Dog/')))
# Expected Output:
# 12501
# 12501
python 리눅스 환경에서 디렉토리를 만드는 방법
# /tmp 디렉토리 안에다, 학습을 위한 데이터를 분류하기 위해
# cats-v-dogs 디렉토리를 만들고,
# 그 아래 training 과 testing 디렉토리 만든 후
# 각각 디렉토리 안에 cats 와 dogs 디렉토리를 만든다.
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/cats-v-dogs/testing/cats')
os.mkdir('/tmp/cats-v-dogs/testing/dogs')
except OSError:
pass
원본 파일을 Training / Test파일로 분리하여 사용하는 방법
## split_data 라는 파이썬 함수를 만든다.
# SOURCE directory
# TRAINING directory
# TESTING directory
# SPLIT SIZE
# 소스 경로에 있는 파일들을 잘 섞은 후
# 스플릿 사이즈만큼 학습용과 테스트용 파일로 분리한 후
# 트레이닝 디렉토리와 테스팅 디렉토리에 파일을 저장 시켜 주는 함수 작성 (파일 크기가 0보다 큰 파일만 저장)
def split_data(SOURCE, TRAINING, TESTING, SPLIT_SIZE):
# YOUR CODE STARTS HERE
# 원본 경로의 파일명들을 모두 가져온다.
file_names = os.listdir( SOURCE )
# 가져온 파일명을 잘 섞어준다.
shuffled_files = random.sample( file_names , len(file_names) )
# 학습용과 테스트용 분리를 위해 인덱스를 구한다.
index = int( len(shuffled_files) * SPLIT_SIZE )
# 섞인 파일명 리스트에서, 해당 인덱스만큼 잘라서, 학습용과 테스트용 파일명 분리
training_images = shuffled_files[0 : index]
test_images = shuffled_files[ index : ]
# 학습용과 테스트용으로 각각 해당 폴더로, 파일을 카피한다.
for file_name in training_images :
if os.path.getsize( SOURCE + file_name ) > 0 :
copyfile( SOURCE + file_name , TRAINING + file_name )
for file_name in test_images :
if os.path.getsize( SOURCE + file_name ) > 0 :
copyfile( SOURCE + file_name, TESTING + file_name )
# YOUR CODE ENDS HERE
CAT_SOURCE_DIR = "/tmp/PetImages/Cat/"
TRAINING_CATS_DIR = "/tmp/cats-v-dogs/training/cats/"
TESTING_CATS_DIR = "/tmp/cats-v-dogs/testing/cats/"
DOG_SOURCE_DIR = "/tmp/PetImages/Dog/"
TRAINING_DOGS_DIR = "/tmp/cats-v-dogs/training/dogs/"
TESTING_DOGS_DIR = "/tmp/cats-v-dogs/testing/dogs/"
split_size = 0.9
split_data(CAT_SOURCE_DIR, TRAINING_CATS_DIR, TESTING_CATS_DIR, split_size)
split_data(DOG_SOURCE_DIR, TRAINING_DOGS_DIR, TESTING_DOGS_DIR, split_size)
'인공지능 > 딥러닝' 카테고리의 다른 글
딥러닝 : Fine tuning 파인튜닝 (0) | 2023.01.02 |
---|---|
딥 러닝 : Transfer Learning ( MobileNetV2 ) (0) | 2023.01.02 |
딥러닝 : 이미지 데이터 증강 / Image Augmentation (0) | 2022.12.30 |
딥러닝 : CNN 말과 사람 분류하기 / CNN모델링 방법 , 이미지파일을 학습 데이터로 만드는 방법(ImageDataGenerator) (0) | 2022.12.30 |
CNN의 convolution,Stride,Padding,Pooling / feature map의 사이즈를 구하는 공식 (0) | 2022.12.29 |