Hub 文件

影像資料集

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

影像資料集

本指南將向您展示如何使用影像檔案配置資料集儲存庫。您可以在此影像資料集示例集合中找到相應的儲存庫示例。

具有受支援結構和檔案格式的資料集在其 Hub 頁面上會自動擁有資料集檢視器。

只要您在元資料檔案(metadata.csv/metadata.jsonl/metadata.parquet)中包含此資訊,有關影像的附加資訊(例如字幕或用於物件檢測的邊界框)就會自動載入。

此外,影像可以位於 Parquet 檔案中或遵循WebDataset格式的 TAR 存檔中。

僅影像

如果您的資料集僅包含一個影像列,則可以直接將影像檔案儲存在根目錄中

my_dataset_repository/
├── 1.jpg
├── 2.jpg
├── 3.jpg
└── 4.jpg

或子目錄中

my_dataset_repository/
└── images
    ├── 1.jpg
    ├── 2.jpg
    ├── 3.jpg
    └── 4.jpg

同時支援多種格式,包括 PNG、JPEG、TIFF 和 WebP。

my_dataset_repository/
└── images
    ├── 1.jpg
    ├── 2.png
    ├── 3.tiff
    └── 4.webp

如果您有多個拆分,可以將影像放入相應命名的目錄中

my_dataset_repository/
├── train
│   ├── 1.jpg
│   └── 2.jpg
└── test
    ├── 3.jpg
    └── 4.jpg

有關更多資訊和按拆分組織資料的其他方法,請參閱檔名和拆分

附加列

如果您想包含有關資料集的其他資訊,例如文字字幕或邊界框,請將其作為 `metadata.csv` 檔案新增到您的儲存庫中。這使您可以快速建立用於不同計算機視覺任務的資料集,例如文字字幕物件檢測

my_dataset_repository/
└── train
    ├── 1.jpg
    ├── 2.jpg
    ├── 3.jpg
    ├── 4.jpg
    └── metadata.csv

您的 `metadata.csv` 檔案必須包含一個 `file_name` 列,該列將影像檔案與其元資料鏈接起來

file_name,text
1.jpg,a drawing of a green pokemon with red eyes
2.jpg,a green and yellow toy with a red nose
3.jpg,a red and white ball with an angry look on its face
4.jpg,a cartoon ball with a smile on its face

您也可以使用JSONL檔案 `metadata.jsonl`

{"file_name": "1.jpg","text": "a drawing of a green pokemon with red eyes"}
{"file_name": "2.jpg","text": "a green and yellow toy with a red nose"}
{"file_name": "3.jpg","text": "a red and white ball with an angry look on its face"}
{"file_name": "4.jpg","text": "a cartoon ball with a smile on its face"}

對於更大的資料集,或者如果您對高階資料檢索功能感興趣,可以使用Parquet檔案 `metadata.parquet`。

相對路徑

元資料檔案必須與所連結的影像位於同一目錄中,或位於任何父目錄中,如下例所示

my_dataset_repository/
└── train
    ├── images
    │   ├── 1.jpg
    │   ├── 2.jpg
    │   ├── 3.jpg
    │   └── 4.jpg
    └── metadata.csv

在這種情況下,`file_name` 列必須是影像的完整相對路徑,而不僅僅是檔名

file_name,text
images/1.jpg,a drawing of a green pokemon with red eyes
images/2.jpg,a green and yellow toy with a red nose
images/3.jpg,a red and white ball with an angry look on its face
images/4.jpg,a cartoon ball with a smile on it's face

元資料檔案不能放在包含影像的目錄的子目錄中。

更一般地,任何名為 `file_name` 或 `*_file_name` 的列都應包含影像的完整相對路徑。

影像分類

對於影像分類資料集,您也可以使用簡單設定:使用目錄命名影像類別。將影像檔案儲存在如下目錄結構中

my_dataset_repository/
├── green
│   ├── 1.jpg
│   └── 2.jpg
└── red
    ├── 3.jpg
    └── 4.jpg

使用此結構建立的資料集包含兩列:`image` 和 `label`(值為 `green` 和 `red`)。

您還可以提供多個拆分。為此,您的資料集目錄應具有以下結構(有關更多資訊,請參閱檔名和拆分

my_dataset_repository/
├── test
│   ├── green
│   │   └── 2.jpg
│   └── red
│       └── 4.jpg
└── train
    ├── green
    │   └── 1.jpg
    └── red
        └── 3.jpg

您可以在YAML 配置中停用 `label` 列的自動新增。如果您的目錄名沒有特殊含義,請在 README 標頭中設定 `drop_labels: true`

configs:
  - config_name: default  # Name of the dataset subset, if applicable.
    drop_labels: true

大規模資料集

WebDataset 格式

WebDataset 格式非常適合大規模影像資料集(例如,請參見 timm/imagenet-12k-wds)。它由包含影像及其元資料的 TAR 檔案組成,並針對流式傳輸進行了最佳化。如果您有大量影像並希望獲得用於大規模訓練的流式資料載入器,這將非常有用。

my_dataset_repository/
├── train-0000.tar
├── train-0001.tar
├── ...
└── train-1023.tar

要建立 WebDataset TAR 存檔,請建立一個包含要存檔的影像和元資料檔案的目錄,然後使用 `tar` 命令建立 TAR 存檔。每個存檔的通常大小約為 1GB。確保每個影像和元資料對共享相同的檔案字首,例如

train-0000/
├── 000.jpg
├── 000.json
├── 001.jpg
├── 001.json
├── ...
├── 999.jpg
└── 999.json

請注意,為了使用者方便並啟用資料集檢視器,Hub 中託管的每個資料集都會自動轉換為 Parquet 格式,最大可達 5GB。有關更多資訊,請參閱Parquet 格式文件。

Parquet 格式

您可以將影像和元資料嵌入到Parquet檔案中,而不是上傳單獨的檔案。如果您有大量影像,或者要嵌入多個影像列,或者要在同一檔案中儲存有關影像的其他資訊,這會很有用。Parquet 也適用於儲存原始位元組等資料,而 JSON/CSV 不支援這些資料。

my_dataset_repository/
└── train.parquet

可以使用 `pandas` 或 `datasets` 庫建立包含影像資料的 Parquet 檔案。要在 `pandas` 中建立包含影像資料的 Parquet 檔案,您可以使用pandas-image-methods和 `df.to_parquet()`。在 `datasets` 中,您可以將列型別設定為 `Image()` 並使用 `ds.to_parquet(...)` 方法或 `ds.push_to_hub(...)`。您可以在此處找到有關在 `datasets` 中載入影像資料集的指南。

或者,您可以手動設定使用其他工具建立的 Parquet 影像型別。首先,確保您的影像列是*結構體*型別,其中包含用於影像資料的二進位制欄位 `"bytes"` 和用於影像檔名或路徑的字串欄位 `"path"`。然後,您應該直接在 README 標頭中的 YAML 中指定列的特徵型別,例如

dataset_info:
  features:
  - name: image
    dtype: image
  - name: caption
    dtype: string

請注意,建議對小型影像(每張影像小於 1MB)和小型行組(每個行組 100 行,這是 `datasets` 用於影像的)使用 Parquet。對於大型影像,建議使用 WebDataset 格式,或共享原始影像檔案(可選地帶元資料檔案,並遵循儲存庫建議和儲存及檔案數量限制)。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.