下载汽车图像后,您可以使用FiftyOne 的过滤功能为您的任务分离出正面和负面的例子。从FiftyOne Zoo下载数据集时,无法专门排除类。
Open Images 提供样本级别positive
和negative
标签,指示样本中是否确实存在某个类。但是,这些并没有详尽地标记,因此如果任何一个样本级注释中都不存在该类,那么就无法知道它是否存在。
因此,有几种方法可以为您的任务获取所有相关示例。
1) 仅使用带有注释车辆牌照的样本
from fiftyone import ViewField as F
class_name = "Vehicle registration plate"
# Find samples that have a "Vehicle registration plate"
pos_view = dataset.filter_labels("positive_labels", F("label")==class_name)
# Find all samples that don't have a "Vehicle registration plate"
neg_view = dataset.filter_labels("negative_labels", F("label")==class_name)
这是获取样品的最快方式,您可以确定是否有车牌。但是,您将丢弃未注释车牌的样本。
2)手动过滤掉未标记的样本
如果您需要尽可能多的数据,那么您可以手动浏览未标注车牌的样本,并找到额外的反例。
from fiftyone import ViewField as F
class_name = "Vehicle registration plate"
# Find samples that have a "Vehicle registration plate"
pos_view = dataset.filter_labels("positive_labels", F("label")==class_name)
# Find all samples without a positively labeled "Vehicle registration plate"
neg_view = dataset.exclude(pos_view)
从这里,启动FiftyOne 应用程序并标记所有具有板的样品。
# Tag any samples that have a plate in the App with "remove"
session = fo.launch_app(view=neg_view)
# Find and remove all tagged samples from the DatasetView
neg_view = neg_view.match_tags("remove", bool=False)
然后,您可以将数据以各种格式导出到磁盘以训练您的模型。如果您需要的格式未列出,您可以简单地遍历数据集并手动保存数据。
neg_view.export(
export_dir="/path/to/dir",
dataset_type=fo.types.COCODetectionDataset,
label_field="detections",
)
一旦你训练了你的模型,我建议你使用 FiftyOne 来可视化/分析你的预测,以了解你的模型是如何执行的,以便你可以改进它。