프로그래머스 과제 테스트를 하다가 주어진 train 폴더 안에 있는 이미지 데이터를 train, validaton으로 나누고 싶었다.
참조한 블로그 :
https://lovedh.tistory.com/entry/python-split-folders로-이미지-데이터-분리하기-trainvaltest
python split-folders로 이미지 데이터 분리하기 (train/val/test)
이미지 데이터셋은 보통 한 폴더 안에 몽땅 담겨 있습니다. 딥러닝 네트워크를 학습하고 평가 및 검증하기 위해선 이 데이터를 분리해야 하는데요. 그럴 때 유용한 python 라이브러리가 있습니다.
lovedh.tistory.com
import splitfolders #pip install split-folders
splitfolders.ratio(train_dir,output="train_val",seed=1337, ratio=(.8,.2))
)
#splitfolders.ratio(
#"나누고 싶은 폴더 경로" or 변수로 저장했으면 변수로,
#output="나눈 결과물 담을 폴더명",seed=1337(임의),
#ratio=(.8,.2)
)
#ratio 를 2개로 나누면 train, validation으로 나눠지고,
#ratio 를 3개로 나누면 train,validation,test로 나뉜다.
splitfolders.fixed(train_dir,output="train_val",seed=1337, fixed=(200,50)
#ratio와 같음.
#비율로 나누고 싶을 땐 ratio,
#정해진 갯수로 나누고 싶을 땐 fixed
하지만 split-folders를 적용하기 위해서는 데이터의 디렉터리 구조가 다음과 같아야 한다.
즉 각 폴더 안에 있는 데이터들을 나누고 싶을 때 사용 하면 된다.
train/
dog/
img1.jpg
img2.jpg
elephant/
img1.jpg
img2.jpg
...
...
결과는 다음과 같아진다.
train_val/
train/
dog/
img4.jpg
img34.jpg # 순서대로 나눠지지 않고 무작위로 나뉘어진다.
elephant/
img45.jpg
img89.jpg
...
...
val/
dog/
img5.jpg
img56.jpg
elephant/
img56.jpg
img102.jpg
...
...
splitfolders.ratio, splitfolders.fixed 기억하기!
'Python > Data 처리' 카테고리의 다른 글
[Github] 원격 저장소에서 특정 history 삭제하는 방법 (0) | 2022.08.09 |
---|