2017-12-27 23 views
0

텐서 흐름을 사용하는 슬라이딩 윈도우 코드를 실행 중입니다.이미지 주문 텐서 흐름

그것은 Theano를위한 것입니다. 그래서 이미지 치수 순서 오류가 발생합니다.

누군가는 텐서 흐름을 위해 그것을 수정하는 방법을 말해 줄 수 있습니까?

에러 :

에 ValueError : 검사 오류 : 예상 INPUT_2하는 형상을 갖도록 (없음, 224, 224, 3) 그러나 형상 어레이 (1, 3, 224, 224)를 가지고

image=load_img('\e.jpg') 
image= np.array(image).reshape((3264,5896,3)) 
image = image.astype('float32') 
image /= 255 
plt.imshow(image) 
print(image.shape) 


#%%SLIDING WINDOW 
'' 
def find_a_object(image, step=224, window_sizes=[224]): 
    boxCrack = 0 
    locations = [] 
    for win_size in window_sizes: 
     #top = Y, left = X 
     for Y in range(0, image.shape[0] - win_size + 1, step): 
      for X in range(0, image.shape[1] - win_size + 1, step): 
       # compute the (top, left, bottom, right) of the bounding box 
       box = (Y, X, Y + win_size, X + win_size) 

       #crop original image 
       cropped_img = image[box[0]:box[2], box[1]:box[3]] 
       #reshape cropped image by window 
       cropped_img = np.array(cropped_img).reshape((1,3,224,224)) 


       boxCrack = predict_function(cropped_img) 

       if boxCrack ==0: 
        #print('box classified as crack') 
        #save location of it     
        locations.append(box) 
        print("found") 
     return locations 
#%%FUNCTIONS 
def predict_function(x): 
    result = model.predict_classes(x) 
    if result==0: 
     return 0 
    else: 
     return 1 
##SHOW CROPPED IMAGE 
#def show_image(im): 
# plt.imshow(im.reshape((100,100,3))) 
) 

#DRAW BOXES FROM LOCATIONS when classified 
def draw_boxes(image, locations): 
    fix,ax = plt.subplots(1) 
    ax.imshow(image)  
    for l in locations: 
     print (l) 
     rectR = patches.Rectangle((l[1],l[0]),224,224,linewidth=1,edgecolor='R',facecolor='none' 
     ax.add_patch(rectR) 


#%%get locations from image 
locations = find_a_object(image) 

draw_boxes(image,locations) 

답변

1

글쎄, 오류 메시지가 꽤 명확하다, TF의 순서는 (None, dim_x, dim,_y, n_channels)이어야합니다. 아래 그림과 같이 이미지 배열을 조 변경하면 트릭을 수행해야합니다.

cropped_img = image[box[0]:box[2], box[1]:box[3]] 
#reshape cropped image by window 
cropped_img = np.array(cropped_img).reshape((1,3,224,224)) 
cropped_img = cropped_img.transpose(0,2,3,1) 
+0

답장을 보내 주셔서 감사합니다. 이제 다음 오류가 발생합니다 : ValueError : 둘 이상의 요소가있는 배열의 진리 값이 모호합니다. a.any() 또는 a.all()을 사용하십시오 어떻게 해결할 수 있을까요? –

+0

어떤 줄에서 오류가 발생합니까? –

+0

locations = find_a_object (이미지). 그 행을 실행하면 오류가 발생합니다. –