딥러닝 모델을 학습하기 전, 데이터셋을 어떻게 정리하고 압축하며, 시스템 자원을 효율적으로 사용할 것인가는 학습 성능만큼이나 중요한 문제입니다. 최근 수천 개의 이미지 폴더를 관리하고 압축하는 과정을 겪으며, 딥러닝 공부를 시작하는 분들에게 도움이 될만한 실전 팁을 정리해 봅니다.
📁 1. 폴더 단위로 구성된 이미지 데이터셋
딥러닝에서 흔히 쓰는 이미지 분류용 데이터셋은 다음과 같은 구조입니다:
CopyEditdataset/
├── 비빔밥/
│ ├── img1.jpg
│ ├── img2.jpg
│ └── ...
├── 짜장면/
│ └── ...
클래스(폴더 이름)별로 수천 장의 이미지가 들어가며, 모델 학습을 위해선 이 폴더 구조가 그대로 유지되어야 합니다.
🧭 2. 왜 압축이 필요할까?
- 데이터 이동이 많을 때: 서버 간 복사, 백업, 배포 시
- 스토리지 최적화: 여러 소형 파일을 묶으면 파일시스템 오버헤드가 줄어듬
- 데이터 보존: 파일 누락을 방지하기 위해 ZIP이나 TAR로 일괄 관리
⚠️ 3. 하나의 ZIP은 위험할 수 있다
문제:
output_folders.zip
파일 하나에 모든 데이터를 담았더니, 너무 커서 파일 저장 중 디스크 용량 초과 발생.
이는 딥러닝 작업에서 흔한 실수입니다.
- 압축은 버퍼링과 임시 파일 저장을 동반하기 때문에,
- 최종 압축 위치가
/output/
이라도, 시스템의/tmp
또는 현재 디렉토리가 용량 부족이면 실패합니다.
✅ 4. 해결 전략 – 폴더별로 나눠 압축하기
pythonCopyEditimport zipfile, os
for folder in folder_names: # e.g., ["비빔밥", "짜장면", ...]
if os.path.isdir(folder):
zip_path = f"/output/{folder}.zip"
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zf:
for root, _, files in os.walk(folder):
for file in files:
zf.write(os.path.join(root, file), arcname=os.path.relpath(os.path.join(root, file), start="."))
장점
- 각 클래스(폴더)별로 ZIP이 나뉘어 관리하기 쉬움
- 압축 중에도 하나의 큰 임시 공간이 필요하지 않음
- 후처리(Python, AWS, GCP 업로드) 자동화가 쉬움
🧪 5. 딥러닝 실무에 적용할 팁
상황 | 실전 팁 |
---|---|
압축 중 디스크 부족 | TMPDIR=/output python3 script.py 로 임시 디렉토리도 /output 에 강제 |
데이터셋이 너무 클 때 | 클래스별로 zip → 나중에 학습할 때 하나씩 풀기 |
파일 중복 경고 | zipfile 에서 Duplicate name 경고 → 중복 write 방지 코드 필요 |
학습 이전 정리 루틴 | find . -type f -mmin -10 으로 최근 변경 파일 확인 |
💡 결론
모델 학습 이전의 데이터 정리는 단순 반복 작업이 아닙니다.
파일 구조, 시스템 자원, 압축 전략을 잘 설계하는 것이 훈련 성능과 속도에 직결됩니다.
딥러닝을 공부하고 있는 분들이라면, 데이터셋을 다루는 스크립트 작성부터 직접 해보는 것을 추천드립니다.
모델 이전에, 파일이 똑바로 들어갔는지 확인할 줄 아는 사람이 진짜 실무형 인재입니다.
궁금한 점이 있다면 댓글이나 메일로 문의 주세요.
실전에서의 경험이 딥러닝 공부를 더 단단하게 만들어줄 것입니다!