При использовании TFRecord, как я могу собирать изображения объектов (обрезанные ограничивающими рамками) и создавать пакеты?
У меня есть хорошо работающая сеть обнаружения объектов, и я использовал ее для обучения следующим образом.
# minimal codes for creating training batch
dataset = slim.dataset.Dataset(...)
provider = slim.dataset_data_provider.DatasetDataProvider(dataset,...)
[image, labels, bboxes] = provider.get(...)
batch = tf.train.batch([image, labels, bboxes], batch_size=16, ...)
Теперь, скажем, с другой целью, я хочу собрать изображения патчей объекта (т.е. обрезать bboxes
) и создавать из них партии. (то есть подрезанная машина, человек, кошка, собаки, ...). Как вы можете себе представить, изображение может включать в себя различное количество объектов.
Другими словами, будет две части: обрезать изображение и обрезать очередь и создать пакет. Если бы я мог использовать собственный код Python, это было бы как
# for given image, labels, bboxes
crops = []
for label, bbox in zip(labels, bboxes):
crop = some_crop_fn(image, bbox)
crops.append(crop)
# somehow queue "crops" and pop by batch size every iteration
Я не уверен, как я могу сделать это при использовании функций TFRECORD и TF. Пожалуйста помоги!