Я ищу применение операции с 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
N-размерная работа скользящего окна в Python с использованием ускоренных библиотек графического процессора, предпочтител ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ошибка Python colab только при работе графического процессора вместо процессора
Anonymous » » в форуме Python - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-