Datasets documentation
데이터셋 만들기
데이터셋 만들기
자체 데이터를 다루고 있다면 데이터셋을 생성해야 할 수 있습니다. 🤗 Datasets로 데이터셋을 생성하면 라이브러리의 모든 장점이 데이터셋에 적용됩니다: 빠른 로딩 및 처리, 대형 데이터셋 스트리밍, 메모리 매핑 등입니다. 🤗 Datasets의 로우코드 접근 방식을 사용하면 데이터셋을 쉽고 빠르게 생성할 수 있어 모델 학습을 시작하기까지 걸리는 시간을 줄일 수 있습니다. 많은 경우, Hub의 데이터셋 저장소에 데이터 파일을 드래그 앤 드롭하는 것만으로 충분합니다.
이 튜토리얼에서는 🤗 Datasets의 low-code 메서드를 사용하여 자체 데이터로 데이터셋을 만드는 방법을 배웁니다.
참고
기존 데이터셋을 로드하는 방법 또는 로컬 및 원격 파일(CSV, JSON, Parquet 등)을 로드하는 방법을 배우려면 로드 가이드를 참조하세요.
이 튜토리얼에서는 다음을 다룹니다:
- 이미지 또는 오디오 데이터셋을 빠르게 생성하기 위한 폴더 기반 빌더
- 로컬 Python 객체에서 데이터셋을 생성하기 위한
from_메서드
파일 기반 빌더
🤗 Datasets는 csv, json/jsonl, parquet, txt와 같은 다양한 일반적인 포맷을 지원합니다.
예를 들어, 하나 이상의 CSV 파일로 구성된 데이터셋을 읽을 수 있습니다(이 경우 CSV 파일 목록을 전달하세요):
>>> from datasets import load_dataset
>>> dataset = load_dataset("csv", data_files="my_file.csv")지원되는 형식 목록과 코드 예시를 확인하려면 여기의 가이드를 따르세요.
폴더 기반 빌더
폴더 기반 빌더는 두 가지가 있습니다: ImageFolder와 AudioFolder. 이들은 수천 개의 예시로 구성된 이미지 또는 음성 및 오디오 데이터셋을 빠르게 생성하기 위한 로우코드 방법입니다. 더 큰 데이터셋으로 확장하기 전에 컴퓨터 비전 및 음성 모델을 신속하게 프로토타이핑하는 데 매우 유용합니다. 폴더 기반 빌더는 데이터를 받아 데이터셋의 특징, 분할, 라벨을 자동으로 생성합니다. 내부 동작 방식은 다음과 같습니다:
ImageFolder은 Image 기능을 사용하여 이미지 파일을 디코딩합니다. jpg, png와 같은 많은 이미지 확장자 형식이 지원되며, 다른 형식도 지원합니다. 지원되는 이미지 확장자의 전체 목록을 확인할 수 있습니다.AudioFolder은 Audio 기능을 사용하여 오디오 파일을 디코딩합니다. wav, mp3, mp4와 같은 확장자가 지원되며, 지원되는 오디오 확장자의 전체 목록을 확인할 수 있습니다. 디코딩은 ffmpeg를 통해 수행됩니다.
dataset의 분할은 저장소 구조에서 생성되며, 레이블 이름은 디렉터리 이름에서 자동으로 추론됩니다.
예를 들어, 이미지 데이터셋(오디오 데이터셋도 마찬가지입니다)이 다음과 같이 저장되어 있다고 가정해 보겠습니다:
pokemon/train/grass/bulbasaur.png
pokemon/train/fire/charmander.png
pokemon/train/water/squirtle.png
pokemon/test/grass/ivysaur.png
pokemon/test/fire/charmeleon.png
pokemon/test/water/wartortle.png그렇다면 폴더 기반 빌더가 예시를 생성하는 방식은 다음과 같습니다:

imagefolder를 load_dataset()에 지정하여 이미지 데이터셋을 생성합니다:
>>> from datasets import load_dataset
>>> dataset = load_dataset("imagefolder", data_dir="/path/to/pokemon")오디오 데이터셋은 동일한 방식으로 생성되며, load_dataset()에서 audiofolder를 지정하는 것만 다릅니다:
>>> from datasets import load_dataset
>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")데이터셋에 대한 추가 정보, 예를 들어 텍스트 캡션이나 전사 텍스트는 데이터셋이 포함된 폴더에 metadata.csv 파일로 포함할 수 있습니다. 메타데이터 파일에는 이미지 또는 오디오 파일을 해당 메타데이터와 연결하는 file_name 열이 있어야 합니다:
file_name, text
bulbasaur.png, There is a plant seed on its back right from the day this Pokémon is born.
charmander.png, It has a preference for hot things.
squirtle.png, When it retracts its long neck into its shell, it squirts out water with vigorous force.각 폴더 기반 빌더에 대해 자세히 알아보려면 ImageFolder, AudioFolder, 또는 MeshFolder 가이드를 확인하세요.
Python 사전에서
Python 사전의 데이터로부터 데이터셋을 생성할 수도 있습니다. from_ 메서드를 사용하여 데이터셋을 생성하는 방법은 두 가지입니다:
The from_generator() method is the most memory-efficient way to create a dataset from a generator due to a generators iterative behavior. This is especially useful when you’re working with a really large dataset that may not fit in memory, since the dataset is generated on disk progressively and then memory-mapped.
>>> from datasets import Dataset >>> def gen(): ... yield {"pokemon": "bulbasaur", "type": "grass"} ... yield {"pokemon": "squirtle", "type": "water"} >>> ds = Dataset.from_generator(gen) >>> ds[0] {"pokemon": "bulbasaur", "type": "grass"}제너레이터 기반 IterableDataset은 예를 들어
for루프로 반복해야 합니다:>>> from datasets import IterableDataset >>> ds = IterableDataset.from_generator(gen) >>> for example in ds: ... print(example) {"pokemon": "bulbasaur", "type": "grass"} {"pokemon": "squirtle", "type": "water"}from_dict() 메서드는 사전에서 데이터셋을 생성하는 직관적인 방법입니다:
>>> from datasets import Dataset >>> ds = Dataset.from_dict({"pokemon": ["bulbasaur", "squirtle"], "type": ["grass", "water"]}) >>> ds[0] {"pokemon": "bulbasaur", "type": "grass"}이미지 또는 오디오 데이터셋을 만들려면 cast_column() 메서드를 from_dict()과 체이닝하여 컬럼과 기능 유형을 지정합니다. 예를 들어, 오디오 데이터셋을 만들려면:
>>> audio_dataset = Dataset.from_dict({"audio": ["path/to/audio_1", ..., "path/to/audio_n"]}).cast_column("audio", Audio())
이제 데이터셋을 만드는 방법을 알게 되셨으니, 커뮤니티도 여러분의 작업에서 혜택을 볼 수 있도록 Hub에 공유해 보세요. 다음 섹션으로 넘어가 데이터셋을 공유하는 방법을 배워 보세요.
Update on GitHub