N-размерная работа скользящего окна в Python с использованием ускоренных библиотек графического процессора, предпочтителPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 N-размерная работа скользящего окна в Python с использованием ускоренных библиотек графического процессора, предпочтител

Сообщение Anonymous »

Я ищу применение операции с n-мерным скользящим окном с использованием n-мерного скользящего окна в Python с использованием Tensorflow. Вы можете опубликовать свою реализацию в Torch, Caffe или Theano, но я выберу реализацию Tensorflow в качестве принятого ответа. Пожалуйста, опубликуйте фрагмент рабочего кода, который выполняет 2D-средний фильтр (мы надеемся, что без изменения кода или минимального изменения кода может применяться к n-мерным изображениям)

С моими ограниченными знаниями на Tensorflow, я считаю, что 2 потенциальные модули для начала с Sliding_window_batch или Extract_Image_Patch_patches, и код, и код, и код, а затем и код, и код, и код.apply,reshape< /code> Magic? Обратите внимание, что я опубликовал аналогичный вопрос 2 года назад, запрашивая реализацию Theano, в настоящее время большинство людей используют TF /Keras или Torch. < /P>

import time
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import tensorflow as tf
from tensorflow.contrib.data.python.ops import sliding
from skimage import img_as_float, data
from scipy.signal import medfilt

imgs = img_as_float(data.camera())

### SCIPY median ###
stime = time.time()
scipysmoothed = medfilt(imgs,(9,9))
etime = time.time()
print('scipy smoothed: {:1.4f} seconds'.format(etime-stime))

### Failed attempt of TF median ###
method = 'Tensorflow'
stime = time.time()

window_func = lambda x: tf.contrib.distributions.percentile(x, 50.0)

# create TensorFlow Dataset object
data = tf.data.Dataset.from_tensor_slices(imgs)

# sliding window - only 1d is allowed?
window = 3
stride = 1
data = data.apply(sliding.sliding_window_batch(window, stride)).map(lambda x: window_func(x))

# create TensorFlow Iterator object
iterator = tf.data.Iterator.from_structure(data.output_types)
next_element = iterator.get_next()

# create initialization ops
init_op = iterator.make_initializer(data)
c=0
smoothed = np.zeros(imgs.shape)
with tf.Session() as sess:
# initialize the iterator on the data
sess.run(init_op)
while True:
try:
elem = sess.run(next_element)
smoothed[c,:]=elem
# obviously WRONG.
c+=1
except tf.errors.OutOfRangeError:
#print("End of dataset.")
break
#print(c)
etime = time.time()
print('tf smoothed: {:1.4f} seconds'.format(etime-stime))

plt.figure(figsize=(20,20))
plt.subplot(131)
plt.imshow(imgs,cmap='gray',interpolation='none')
plt.title('original')
plt.subplot(132)
plt.imshow(smoothed,cmap='gray',interpolation='none')
plt.title('actual smoothed\nwith {}'.format(method))
plt.subplot(133)
plt.imshow(scipysmoothed,cmap='gray',interpolation='none')
_=plt.title('expected smoothed')
< /code>

.

scipy smoothed: 1.1899 seconds
tf smoothed: 0.7485 seconds


Подробнее здесь: https://stackoverflow.com/questions/534 ... -libraries
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»