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