Hub 文件
影像資料集
並獲得增強的文件體驗
開始使用
影像資料集
本指南將向您展示如何使用影像檔案配置資料集儲存庫。您可以在此影像資料集示例集合中找到相應的儲存庫示例。
具有受支援結構和檔案格式的資料集在其 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 上更新