Tensorflow 能否将多个分片的 TFrecord 二进制文件混洗以进行对象检测训练?
Can Tensorflow shuffle multiple sharded TFrecord binaries for object detection training?
我正在尝试使用对象检测训练 FasterRCNN 模型 API。
我有一个包含 5 classes(卡车、汽车、货车、船和自行车)的数据集,每个大约有 1000 张图像。每个 class 都有自己的 TFrecord 文件,分为 10 个部分。这给了我总共 50 个文件,看起来像这样:
- truck_train.record-00000-of-00010
- car_train.record-00000-of-00010
- van_train.record-00000-of-00010
- boat_train.record-00000-of-00010
- bike_train.record-00000-of-00010
我能否配置我的训练管道,使 Tensorflow 打开并随机打乱这些文件的内容?
我知道我可以简单地从头开始重新生成 TFrecord 文件并以这种方式混合我的数据,但我的目的是通过简单地添加 classes 到我的数据集包含新 class.
的 TFrecord 文件
阅读了 this older answer 关于混洗的内容后,我想知道是否有一种内置方式可以让 Tensorflow 实现混洗队列,即使这意味着将我的 TFrecords 文件分成 100 个碎片而不是 10 个。
我正在为 FasterRCNN 使用修改后的 sample .config file,但我预想如果 Tensorflow 一次只打开一个 .record 文件会出现问题,因为每个文件只包含一个 class.
我知道 tf_record_input_reader 可以接收文件列表:
train_input_reader: {
tf_record_input_reader {
input_path: ["Datasets\train-1.record", "Datasets\train-2.record"]
}
通过增加输入读取器 shuffle buffer
和 num_readers
的大小,train.py 是否可以充分随机化数据?
这样的配置应该没问题:
train_input_reader: {
tf_record_input_reader {
input_path: "Datasets\train-1.record"
input_path: "Datasets\train-2.record"
...
input_path: "Datasets\train-10.record"
}
shuffle: True
}
或者简单地说:
train_input_reader: {
tf_record_input_reader {
input_path: "Datasets\*.record"
}
shuffle: True
}
然而,shuffle
的 default value 无论如何都是 True,所以它只是为了冗长。
num_readers
的默认值为 64,filenames_shuffle_buffer_size
的默认值为 100,因此对于您拥有的 50 个文件来说一定足够了。
我正在尝试使用对象检测训练 FasterRCNN 模型 API。
我有一个包含 5 classes(卡车、汽车、货车、船和自行车)的数据集,每个大约有 1000 张图像。每个 class 都有自己的 TFrecord 文件,分为 10 个部分。这给了我总共 50 个文件,看起来像这样:
- truck_train.record-00000-of-00010
- car_train.record-00000-of-00010
- van_train.record-00000-of-00010
- boat_train.record-00000-of-00010
- bike_train.record-00000-of-00010
我能否配置我的训练管道,使 Tensorflow 打开并随机打乱这些文件的内容?
我知道我可以简单地从头开始重新生成 TFrecord 文件并以这种方式混合我的数据,但我的目的是通过简单地添加 classes 到我的数据集包含新 class.
的 TFrecord 文件阅读了 this older answer 关于混洗的内容后,我想知道是否有一种内置方式可以让 Tensorflow 实现混洗队列,即使这意味着将我的 TFrecords 文件分成 100 个碎片而不是 10 个。
我正在为 FasterRCNN 使用修改后的 sample .config file,但我预想如果 Tensorflow 一次只打开一个 .record 文件会出现问题,因为每个文件只包含一个 class.
我知道 tf_record_input_reader 可以接收文件列表:
train_input_reader: {
tf_record_input_reader {
input_path: ["Datasets\train-1.record", "Datasets\train-2.record"]
}
通过增加输入读取器 shuffle buffer
和 num_readers
的大小,train.py 是否可以充分随机化数据?
这样的配置应该没问题:
train_input_reader: {
tf_record_input_reader {
input_path: "Datasets\train-1.record"
input_path: "Datasets\train-2.record"
...
input_path: "Datasets\train-10.record"
}
shuffle: True
}
或者简单地说:
train_input_reader: {
tf_record_input_reader {
input_path: "Datasets\*.record"
}
shuffle: True
}
然而,shuffle
的 default value 无论如何都是 True,所以它只是为了冗长。
num_readers
的默认值为 64,filenames_shuffle_buffer_size
的默认值为 100,因此对于您拥有的 50 个文件来说一定足够了。