如何移除FiftyOne持久化数据集中的样本标签?
解决FiftyOne移除样本标签(train/test/val)的问题
你之前用错方法了——untag_labels是用来移除标签字段中的类别标签(比如目标检测框的类别标签),而你通过random_split添加的是样本级标签(Sample Tags),得用专门处理样本标签的方法才能移除。
正确移除步骤
直接使用untag_samples()方法,支持单个或批量移除样本标签,代码示例:
import fiftyone as fo # 加载目标数据集 dataset = fo.load_dataset(dataset_name) # 方式1:批量移除多个样本标签 dataset.untag_samples(["train", "test", "val"]) # 方式2:逐个移除标签(效果和上面一致) # dataset.untag_samples("train") # dataset.untag_samples("test") # dataset.untag_samples("val") # 如果需要清空所有样本标签,直接用这个 # dataset.clear_sample_tags() # 确保更改持久化(可选,untag_samples默认会自动保存) dataset.save()
为什么之前的操作无效?
view.untag_labels(...):只作用于样本内的标签字段(如ground_truth.labels),和样本级标签无关;view.tags.pop():操作的是视图对象自身的标签,不会修改数据集里的样本标签;dataset.untag_labels(...):同样是处理标签字段的标签,不是样本标签。
操作完成后,刷新FiftyOne桌面应用,或者重新加载数据集视图,就能看到train/test/val标签已经消失了。
内容的提问来源于stack exchange,提问作者Benoît Boidin
相关产品推荐
相关产品推荐

