Как выбрать пиксели ROI на карте объектов - PullRequest
0 голосов
/ 03 января 2019

В Faster RCNN или Mask RCNN слои выравнивания ROI принимают входные данные разных размеров и проецируют их на один и тот же размер слоя.В настоящее время я реализую эту статью , где авторы принимают повернутые прямоугольники в качестве входных данных для начального слоя для дальнейшего обнаружения.Это сквозной конвейер распознавания текста, который сначала выполняет обнаружение текстового поля (та же задача, что и обнаружение объекта), затем текстовые поля передаются в кодировщик-декодер для распознавания символов.

Вывод определения поля в виде повернутого ограничивающего прямоугольника, карты оценок и последней карты объектов имеет формат:

# Feature Map from text detector Shape 
torch.Size([1, 256, 128, 128])
# ROI from text detector Shape 
torch.Size([1, 5, 128, 128])
# Score from text detector Shape 
torch.Size([1, 2, 128, 128])

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

Исходная архитектура детектора текста основана на востоке. .Я был в состоянии соответствовать его базовым оценкам.

Я застрял на части выборки сетки в настоящее время.Сначала я преобразовываю 5 значений - (4 расстояния, 1 угол) в соответствующие 8 координат для повернутого bbox в виде четырехугольника (масштабируется до размера карты объектов, отфильтровывается по оценкам), чтобы получить тензор координат в формате:

# raw coord coords shape {numberOfPredictionsX8}
torch.Size([2960, 8])

Теперь мне нужно выбрать только эти пиксели между этими координатами на верхней карте объектов и затем передать их слою nn.Functional.Interpolate().

Как это сделать, сохранив градиент без изменений.Я наивно сделал

cv2.fillPoly(fm_, (coords_.reshape(-1, 4, 2)).astype(np.int32), (255, 255, 255), 8)

, чтобы сохранить только значения пикселей из fm_, представленные внутри четырехугольника, описанного точками в coords_
, но функция cv работает только со значениями np.Но преобразование в np приведет к потере градиентного потока.

...