cats 과 dogs 사진을 새로운 디렉토리 생성하여서 분리하기
원본 파일을 train / test 파일로 분리하는 방법이다.
1. copy 파일을 저장할 디렉토리를 생성한다
os.mkdir 을 이용하면, 원하는 위치에 원하는 디렉토리명 생성 할 수 있다.
/tmp 디렉토리 안에, 데이터를 분류하기 위해서, cats-v-dogs 디렉토리 만들고
그 라이래에 training 과 testing 디렉토리를 만든 후,
각각 디렉토리 안에 cats 와 dogs 디렉토리를 만들 것 이다.
- 디렉토리 -
cats-v-dogs
- training
- cats
- dogs
- 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
2. 파일을 Train / Test 용으로 분리하여서 저장하는 함수 작성
함수 split_data 를 생성하여서, 소스 경로에 있는 파일들을 잘 섞은 후,
split_size 만큼 학습용과 테스트용 파일로 분리하고,
training 디렉토리와 testing 디렉토리의 파일을 저장 시켜주는 함수를 작성하도록 하였다. (파일 크기가 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 : # /tmp/Petimages/Cst/sjei.jpg
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 )
'Deep Learning' 카테고리의 다른 글
| 이미지 데이터 증강 코드 작성법 (0) | 2022.12.30 |
|---|---|
| 분류의 문제에서 활성함수와 손실함수 (0) | 2022.12.30 |
| JPG / PNG 같은 이미지 파일을, 학습 데이터로 만드는 방법 (0) | 2022.12.30 |
| Pooling (Downsampling) 이란? (0) | 2022.12.30 |
| Convolution Neural Network (CNN) (0) | 2022.12.30 |