Неточные маски с Mask-RCNN: эффект лестницы и внезапные остановки - PullRequest
0 голосов
/ 09 июля 2020

Я использовал маску R-CNN компании Matterport для обучения на пользовательском наборе данных. Однако, похоже, есть некоторые параметры, которые я не смог правильно определить, потому что практически на всех изображениях нижняя или верхняя часть маски объекта обрезана: innacurate prediction: mask is cut-off on the bottom

As you can see, the bounding box is fine since it covers the whole blade, but the mask seems to suddenly stop in a horizontal line on the bottom.

On another hand, there is a stair-like effect on masks of larger and curvier objects such as this one (in addition to the bottom and top cut-offs): введите описание изображения здесь

  • Исходные изображения уменьшаются до IMAGE_MIN_DIM = IMAGE_MAX_DIM = 1024 с использованием «квадратного» режима.
  • USE_MINI_MASK устанавливается в значение true с MINI_MASK_SHAPE = (512, 512) (каким-то образом, если я установил он выключен, оперативная память заполняется и обучение сбивается).
  • RPN_ANCHOR_SCALES = (64, 128, 256, 512, 1024), поскольку объекты занимают большое пространство изображения.

Не похоже, что проблема исходит от объем обучения. Эти два прогноза получены из 6 эпох по 7000 шагов в эпоху (заняло около 17 часов). И проблема возникает на ранней стадии и сохраняется на протяжении всех эпох.

Есть идеи, какие изменения внести?

1 Ответ

2 голосов
/ 09 июля 2020

Вот как работает Mask-RCNN, и это известный побочный эффект. Ничего из того, что вы можете сделать при реализации, чтобы это не отображалось. PointRend обсуждает проблему (доказывая, что это не только вы), а также предлагает свой собственный алгоритм (который является расширением Mask-RCNN) для ее решения. На изображении ниже вы можете увидеть изображение из этого документа. Вверху слева они запустили Mask-RCNN на изображении 28x28, на котором вы также можете увидеть лестницу. Остальные изображения относятся к тому, как они ее решают.

Плохая новость, конечно, заключается в том, что нелегко просто вставить код PointRend в Mask-RCNN, я по крайней мере не знаю хороших реализаций. Сам PointRend github также не позволяет переобучать ваши собственные данные.

this

EDIT:

For postprocessing, there's a lot of approaches you can take. How about this one:

введите описание изображения здесь

...