Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 분류 결과표
- DataAccess
- data
- count()
- DataFrame
- 최솟값
- insert()
- wcss
- nan
- 최댓값
- Dictionary
- sklearn
- hierarchical_clustering
- list
- matplotlib
- analizer
- del
- string
- append()
- pandas
- 반복문
- dendrogram
- function
- len()
- Python
- IN
- elbow method
- 덴드로그램
- Machine Learning
- numpy
Archives
- Today
- Total
개발공부
파일을 training과 test 디렉토리로 나눠서 저장하는 방법 본문
예시 코드
아래와 같이 /tmp/PetImage 경로에 Cat과 Dog 폴더로 나누어져 있고
그 안에 각각 고양이, 강아지 이미지가 있는 경우를 생각해봅시다.
이 때 Cat 폴더의 이미지와 Dog 폴더의 이미지를 각각 랜덤한 순서로 섞은후
각각의 Cat, Dog 이미지의 90 %는 training 폴더에 새로운 폴더 cats와 dogs를 만들어 저장하고
10 % 는 test 폴더에 새로운 폴더 cats, dogs를 만들어 저장해야합니다.
해당 방법은 아래와 같습니다.

각각 12501개의 이미지 데이터가 있습니다.
print(len(os.listdir('/tmp/PetImages/Cat/')))
print(len(os.listdir('/tmp/PetImages/Dog/')))

1. 먼저 각각의 폴더들을 생성합니다.
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/cats-v-dogs/testing/cats')
os.mkdir('/tmp/cats-v-dogs/testing/dogs')
except OSError:
pass
2. 이미지를 분리 저장하는 함수를 만듭니다.
import os
import random
from shutil import copyfile
def split_data(SOURCE, TRAINING, TESTING, SPLIT_SIZE):
# 1. 원본 디렉토리에서, 파일명을 모두 가져옵니다.
fnames = os.listdir(SOURCE)
# 2. 잘 섞어줍니다.
fnames = random.sample(fnames, len(fnames))
# 3. 트레이닝과 테스트로 나눠주기위해서, 인덱스를 구합니다.
index = int(len(os.listdir(SOURCE)) * SPLIT_SIZE)
# 4. 트레이닝 이미지와, 테스팅 이미지로 나눕니다.
training_images = fnames[: index]
testing_images = fnames[index : ]
# 5. 각각의 분리된 파일을 해당 디렉토리로 복사해줍니다.
# 파일의 크기가 0보다 클때만 시행합니다.
for i in training_images :
if os.path.getsize(SOURCE + i) > 0 :
copyfile(SOURCE + i,TRAINING + i)
for i in testing_images :
if os.path.getsize(SOURCE + i) > 0 :
copyfile(SOURCE + i, TESTING + i)
3. 함수를 호출합니다.
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 = 90%
split_size = .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)
4. 파일 복사가 제대로 됐는지 확인합니다.
print(len(os.listdir('/tmp/cats-v-dogs/training/cats/')))
print(len(os.listdir('/tmp/cats-v-dogs/training/dogs/')))
print(len(os.listdir('/tmp/cats-v-dogs/testing/cats/')))
print(len(os.listdir('/tmp/cats-v-dogs/testing/dogs/')))

'Python > Deep Learning' 카테고리의 다른 글
| Transfer Learning을 이용한 이미지 분류 실습 (0) | 2022.06.16 |
|---|---|
| Transfer Learning 개념 (0) | 2022.06.16 |
| ImageDataGenerator 를 이용해서 데이터 증강하는 방법 (0) | 2022.06.15 |
| JPG나 PNG와 같은 이미지 파일을 학습 데이터로 만드는 방법 (0) | 2022.06.15 |
| CNN 모델링 과정, 코드 예제 (0) | 2022.06.14 |