TypeError: объект 'module' не вызывается при запуске изображений PIL - PullRequest
0 голосов
/ 02 апреля 2020
import skimage.io 
import time

def get_pred(learner, tile):
#     pdb.set_trace()
    t_img = Image(pil2tensor(tile[:,:,:3],np.float32).div_(255))
    outputs = learner.predict(t_img)
    im = image2np(outputs[2].sigmoid())
    im = (im*255).astype('uint8')
    return im

urls = ['/content/drive/My Drive/Mexico/Testing/Sentinel-2 L1C from 2020-03-30.jpg']

import image_slicer
from image_slicer import join

num_tiles = 16
tiles = image_slicer.slice(urls[0], num_tiles)


result_all = []
for url in a_i:
  t1 = time.time()
  test_tile = cv2.imread(url)
  result = get_pred(inference_learner, test_tile )
  print(f'GPU inference took {t2-t1:.2f} secs')
  fig, (ax1, ax2) = plt.subplots(1,2, figsize=(10,5))
  ax1.imshow(test_tile)
  ax2.imshow(result)
  ax1.axis('off')
  ax2.axis('off')
  plt.show()
  # print(result`enter code here`.shape)
  result_all.append(result)

, пожалуйста, помогите мне с этим TypeError: объект 'module' не является вызываемой ошибкой. поскольку я пытаюсь прочитать изображение и нарезать его на плитки, и пытаюсь выполнить мой вывод CNN в плитки.

----> 6     t_img = Image(pil2tensor(tile[:,:,:3],np.float32).div_(255))
      7     outputs = learner.predict(t_img)
      8     im = image2np(outputs[2].sigmoid())

TypeError: 'module' object is not callable

отредактировал код, как показано ниже, и завершился следующей ошибкой.

import skimage.io 
import time
from torchvision import transforms    


def get_pred(learner, tile):
    # pdb.set_trace()
    t_img = (pil2tensor(tile[:,:,:3],np.float32).div_(255))
    # t_img = Image(transforms.ToTensor()((tile[:,:,:3],np.float32).div_(255)))
    t_img = Image.fromarray(t_img)
    print(t_img)
    outputs = learner.predict(t_img)
    im = image2np(outputs[2].sigmoid())
    im = (im*255).astype('uint8')
    return im

Ошибка

/usr/local/lib/python3.6/dist-packages/PIL/Image.py in fromarray(obj, mode)
   2668     .. versionadded:: 1.1.6
   2669     """
-> 2670     arr = obj.__array_interface__
   2671     shape = arr["shape"]
   2672     ndim = len(shape)

AttributeError: 'Tensor' object has no attribute '__array_interface__'
...