🤗
Hugging Faceで自作画像データセットを公開する
Hugging Face CLIでloginする
必要なパッケージをインストールします。
pip install huggingface_hub datasets pillow tqdm
その後
huggingface-cli login
とするとアクセストークンを入力する画面になるので、https://huggingface.co/settings/tokens から Write のアクセストークンを発行して入力します。
入力後、 Login successful
と表示されればOKです。
データセットの作成
Hugging Faceではディレクトリ名に train
や test
などのキーワードを含めると自動でデータセットを分けてくれます。
他にもいくつかリポジトリの分割方法があるので詳しくは公式ドキュメントを参照してください。
今回はtrainデータセットのみ作成することにするので、以下のようなディレクトリ構成になります。
またtrain下のディレクトリ名は その下にある画像のlabel名になります。
.
└── data
└── train
└── monkey
├── 001.png
| ︙
└── 100.png
そして以下のコードでDatasetを作成します。
import os
from datasets import Dataset
from tqdm import tqdm
from PIL import Image
REPO_OWNER = "" # Hugging Faceでのユーザー名を入力する
REPO_NAME = "" # 作成したいリポジトリ名を入れる
DATA_DIR_PATH = r"" # データのパスを入力する
FILE_EXTENSION = "" # データセットに含める画像の拡張子を指定する
records = []
for dir_name in os.listdir(DATA_DIR_PATH):
dir_path = os.path.join(DATA_DIR_PATH, dir_name)
if os.path.isdir(dir_path):
for file_name in tqdm(os.listdir(dir_path)):
if file_name.endswith(FILE_EXTENSION):
file_path = os.path.join(dir_path, file_name)
with Image.open(file_path) as im:
records.append({
"image": im,
"label": dir_name
})
dataset = Dataset.from_dict({"image": [r["image"] for r in records], "label": [r["label"] for r in records]})
dataset.push_to_hub(f"{REPO_OWNER}/{REPO_NAME}")
なお、実際に作成したデータセットがこちらです。
ImageNetのmonkeyだけを抽出したデータセットになります。
参考
Discussion