如何在TFLite Model Maker中拼接不同目录的数据集?
合并两个DataLoader数据集的方法
由于TFLite Model Maker的object_detector.DataLoader没有内置的拼接方法,你可以通过以下步骤手动合并两个数据集:
- 合并内部的TensorFlow Dataset对象
- 基于合并后的数据集重新构建DataLoader实例,并同步必要的属性
具体代码如下:
from tflite_model_maker import object_detector DIR_IMAGES_TRAIN1="/data_dir1" DIR_IMAGES_TRAIN2="/data_dir2" DIR_ANNOT_TRAIN1="/annot_dir1" DIR_ANNOT_TRAIN2="/annot_dir2" LABEL_MAP = ["custom_object"] train_data = object_detector.DataLoader.from_pascal_voc(DIR_IMAGES_TRAIN1, DIR_ANNOT_TRAIN1, LABEL_MAP) train_data2 = object_detector.DataLoader.from_pascal_voc(DIR_IMAGES_TRAIN2, DIR_ANNOT_TRAIN2, LABEL_MAP) # 合并两个内部的TensorFlow Dataset combined_dataset = train_data.dataset.concatenate(train_data2.dataset) # 构建新的DataLoader实例 combined_train_data = object_detector.DataLoader( dataset=combined_dataset, label_map=train_data.label_map, size=train_data.size + train_data2.size, _groundtruth_boxes_key=train_data._groundtruth_boxes_key, _groundtruth_classes_key=train_data._groundtruth_classes_key )
关键说明:
dataset:直接调用TensorFlow Dataset的concatenate方法合并两个数据集的核心数据label_map:两个原数据集使用相同的标签映射,直接复用其中一个即可size:合并后的数据集总大小为两个原数据集大小之和_groundtruth_boxes_key和_groundtruth_classes_key:这两个是DataLoader内部用于标识检测框和类别属性的键,必须与原数据集保持一致,直接复制即可
内容的提问来源于stack exchange,提问作者zeroflaw
相关产品推荐
相关产品推荐

