tenorflow - применить суперпиксельный фильтр к выходу сети

Добрый день, у меня есть сверточная нейронная сеть, чтобы выполнить пиксельную классификацию с 6 классами серии изображений. Я хотел бы применить суперпиксельный алгоритм (тот, что в opencv) к выходу сети. На самом деле, суперпиксели будут рассчитываться по входным изображениям, а затем для каждого из этих местоположений суперпикселей в выходных данных сети я буду вычислять режим выходных классов, чтобы иметь один и тот же выходной класс для каждого суперпикселя входного изображения., Поскольку выходные данные сети во время прохода с прямой связью представляют собой тензор размера [batch, w, h, 6], я подумал изменить форму тензора на [batch*w, h, 6], а затем выполнить итерацию для каждого класса (для я в диапазоне (6)) и вычислить режим этого класса для каждого суперпикселя, а затем изменить его обратно к исходному размеру.

То, что я бы написал в скрипте на основе numpy, должно выглядеть примерно так:

for i in range ( number of superpixels):
    for j in range(number of classes=6):
        mask = superpixel_location[i]
        net_new_output[:,:,j][mask] = mode(net_output[:,:,j][mask])

Несмотря на то, что это легко кодировать в numpy, у меня возникают проблемы при попытке выполнить его в тензорном потоке, так как я не знаю, как реализовать циклы или как ими управлять.

Можете ли вы помочь мне?

Спасибо,

MC

0 ответов

Другие вопросы по тегам