Я не совсем понимаю это руководство:
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/instance_segmentation.md
У меня много предметов трех классов. Согласно инструкции я должен сделать маску с размерами [N, H, W], где:
- N - количество объектов
- H - высота изображения
- Ш - ширина изображения
У меня есть эта функция для создания маски
def image_mask(img, polygons):
w, h = img.size
n = len(polygons)
mask = np.zeros([n, h, w], dtype=np.float32)
for i in range(0, n):
polygon = polygons[i].reshape((-1, 1, 2))
tmp_mask = np.zeros([h, w], dtype=np.float32)
cv2.fillPoly(tmp_mask, [polygon], (1, 1, 1))
mask[i, :, :] = tmp_mask
return mask
Я использую это руководство для создания своего набора данных:
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/using_your_own_dataset.md
Я добавляю маску в конец tf_example
tf_example = tf.train.Example(features=tf.train.Features(feature={
...
'image/object/class/label': dataset_util.int64_list_feature(classes),
'image/object/mask': dataset_util.bytes_list_feature(mask.reshape((-1))),
}))
Из-за reshape
(я полагаю), ОЗУ быстро заканчивается, и я получаю ошибку памяти. Что я делаю неправильно? Может быть, где-то есть подробное руководство, как создать маску для использования Mask-RCNN и Tensorflow Object Detection API? Я не нашел этого.