Tensorflow에서 동적으로 결정된 이미지 자르기 방법을 파악하려고합니다. 아래는 내가 성취하려고 시도하는 것의 예입니다. 그러나 나는 그것을 작동시키는 것처럼 보이지 않습니다. 본질적으로, 나는 그래프 안에 그 이미지에 대한 이미지들과 자르기 값을 공급하고, 그 자른 조각들에 대한 다른 계산들을 계속하고 싶다. 나의 현재 시도 :Tensorflow의 동적 이미지 자르기
import tensorflow as tf
from matplotlib import pyplot as plt
import numpy as np
sess = tf.InteractiveSession()
img1 = np.random.random([400, 600, 3])
img2 = np.random.random([400, 600, 3])
img3 = np.random.random([400, 600, 3])
images = [img1, img2, img3]
img1_crop = [100, 100, 100, 100]
img2_crop = [200, 150, 100, 100]
img3_crop = [150, 200, 100, 100]
crop_values = [img1_crop, img2_crop, img3_crop]
def crop_image(img, crop):
tf.image.crop_to_bounding_box(img,
crop[0],
crop[1],
crop[2],
crop[3])
image_placeholder = tf.placeholder("float", [None, 400, 600, 3])
crop_placeholder = tf.placeholder(dtype=tf.int32)
sess.run(tf.global_variables_initializer())
cropped_image = tf.map_fn(lambda img, crop: crop_image(img, crop), elems=[image_placeholder, crop_placeholder])
result = sess.run(cropped_image, feed_dict={image_placeholder: images, crop_placeholder:crop_values})
plt.imshow(result)
plt.show()
/Users/p111/anaconda/bin/python /Users/p111/PycharmProjects/analysis_code/testing.py Traceback (most recent call last): File "/Users/p111/PycharmProjects/analysis_code/testing.py", line 31, in cropped_image = tf.map_fn(lambda img, crop: crop_image(img, crop), elems=[image_placeholder, crop_placeholder]) File "/Users/p111/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/functional_ops.py", line 390, in map_fn swap_memory=swap_memory) File "/Users/p111/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/control_flow_ops.py", line 2636, in while_loop result = context.BuildLoop(cond, body, loop_vars, shape_invariants) File "/Users/p111/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/control_flow_ops.py", line 2469, in BuildLoop pred, body, original_loop_vars, loop_vars, shape_invariants) File "/Users/p111/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/control_flow_ops.py", line 2419, in _BuildLoop body_result = body(*packed_vars_for_body) File "/Users/p111/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/functional_ops.py", line 380, in compute packed_fn_values = fn(packed_values) TypeError:() missing 1 required positional argument: 'crop'
편집 : elems는 하나의 텐서을 받아 들일 것으로 보인다. 즉, 어떻게 든 두 개의 텐서를 하나로 결합한 다음 값을 얻기 위해 함수에서 압축을 풀어야한다는 의미입니다. 나는 그런 종류의 텐서 조작을 어떻게 수행 할 지 모르겠습니다. 나는 엿볼 방법을 이미 발견했으나 효과가있다. 그러나이 특정 방법으로 동일하게 처리 할 수 있는지 궁금하다. 주로, 나는이 방법으로 사용할 수 있도록 한 쌍의 텐서를 어떻게 조합하고 나눌 지 궁금합니다.
? 역 추적이 있다면, 전체를 게시하십시오! 미안해, – mrry
. 추가 스택 추적. 나는 그 문제가 명백해질 수있는 아주 간단한 문제인 것 같아서 방금 생각했다. 나는 이것에 대해 어떻게 든 최선의 방법으로 가고 있다고 확신하지 못합니다. – Beaker