您还可以使用开源工具FiftyOne 来管理数据集,让您可以轻松地使用share it 和visualize、explore 和analyze 以及任何未来模型预测。
FiftyOne 有一个 Python API,可以将您的 instance 或 semantic segmentation labels 加载到 FiftyOne Dataset 中,然后您可以在应用程序中查询和可视化(原始图像和注释)。
如果您以这种文件结构将图像和分段存储在磁盘上:
segmentation_dataset
|
|
+--- data
| |
| +--- 000.png
| +--- 001.png
| +--- 000.png
| ...
|
+--- labels
|
+--- 000.png
+--- 001.png
+--- 000.png
...
然后您可以将其加载到 Python 中并使用以下代码行将其可视化:
import fiftyone as fo
dataset = fo.Dataset.from_dir(
"segmentation_dataset",
dataset_type=fo.types.ImageSegmentationDirectory,
name="segmentation_dataset",
force_grayscale=True,
)
# Visualize the dataset in your browser
session = fo.launch_app(dataset)
注意:使用 force_grayscale 参数加载 RGB 蒙版,就像您提供的那样。
共享数据集
您可以使用 FiftyOne API 和 export it to disk 以各种格式(VOC、COCO、YOLO、CVAT 等)在数据集上添加和修改样本和标签。从那里您可以将其压缩并让其他人轻松将其加载回 FiftyOne。
例如,我们可以使用FiftyOneDataset format,因为它适用于任何标签类型:
dataset.export(
export_dir="/path/to/export_dir",
dataset_type=fo.types.FiftyOneDataset
)
压缩数据集并将其发送给其他人,他们现在可以运行:
import fiftyone as fo
dataset = fo.Dataset.from_dir(
dataset_dir="/path/to/unzipped_dataset",
dataset_type=fo.types.FiftyOneDataset,
)
拆分
如果您将数据拆分存储在如下所示的文件夹结构中:
segmentation_dataset
|
|
+--- Train
| |
| +--- data
| | |
| | +--- 000.png
| | +--- 001.png
| | +--- 000.png
| | ...
| |
| +--- labels
| |
| +--- 000.png
| +--- 001.png
| +--- 000.png
| ...
+--- Test
| |
| ...
...
然后,您可以将所有样本加载到数据集中,并为每个样本添加一个tag,表示它属于哪个拆分。
import fiftyone as fo
dataset_type = fo.types.ImageSegmentationDirectory
dataset = fo.Dataset.from_dir(
dataset_dir="segmentation_dataset/Train",
dataset_type=dataset_type,
tags="train",
name="segmentation_dataset",
)
dataset.add_dir(
dataset_dir="segmentation_dataset/Test",
dataset_type=dataset_type,
tags="test",
)
训练模型
从那里,您可以直接使用此数据集来训练模型(例如使用 PyTorch 或 PyTorch Lightning Flash)