我正在實施有關資料增強的 timm 教程,以增加我的資料集的影像數量。根據他們的教程,我實作了相同的代碼,但它不起作用。
代碼
import numpy as np
import torch
from PIL import Image
from timm.data.transforms_factory import create_transform
a = create_transform(224, is_training=True)
print(a)
pets_image_paths = './download.png'
image = Image.open(pets_image_paths)
# We can convert this into a tensor, and transpose the channels into the format that PyTorch expects:
np_image = np.array(image, dtype=np.float32)
image = torch.as_tensor(np_image).transpose(2, 0)[None]
from timm.data.transforms import RandomResizedCropAndInterpolation
tfm = RandomResizedCropAndInterpolation(size=350, interpolation='random')
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, 4, figsize=(10, 5))
for idx, im in enumerate([tfm(image) for i in range(4)]):
ax[0, idx].imshow(im)
for idx, im in enumerate([tfm(image) for i in range(4)]):
ax[1, idx].imshow(im)
fig.tight_layout()
plt.show()
追溯
Traceback (most recent call last):
File "/home/cvpr/PycharmProjects/timm_tutorials/9_augmentation.py", line 24, in <module>
for idx, im in enumerate([tfm(image) for i in range(4)]):
File "/home/cvpr/PycharmProjects/timm_tutorials/9_augmentation.py", line 24, in <listcomp>
for idx, im in enumerate([tfm(image) for i in range(4)]):
File "/home/cvpr/anaconda3/envs/timm_tutorials/lib/python3.8/site-packages/timm/data/transforms.py", line 181, in __call__
i, j, h, w = self.get_params(img, self.scale, self.ratio)
File "/home/cvpr/anaconda3/envs/timm_tutorials/lib/python3.8/site-packages/timm/data/transforms.py", line 143, in get_params
area = img.size[0] * img.size[1]
TypeError: 'builtin_function_or_method' object is not subscriptable
uj5u.com熱心網友回復:
正如前面的答案提到的RandomResizedCropAndInterpolation
那樣PIL.Image
。
您可以查看以下中的timm檔案Note
:
注意:RandomResizedCropAndInterpolation 期望輸入是 PIL.Image 的實體,而不是 torch.tensor。
所以你可以洗掉張量轉換:
import numpy as np
import torch
from PIL import Image
from timm.data.transforms_factory import create_transform
a = create_transform(224, is_training=True)
print(a)
pets_image_paths = './download.png'
image = Image.open(pets_image_paths)
from timm.data.transforms import RandomResizedCropAndInterpolation
tfm = RandomResizedCropAndInterpolation(size=350, interpolation='random')
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, 4, figsize=(10, 5))
for idx, im in enumerate([tfm(image) for i in range(4)]):
ax[0, idx].imshow(im)
for idx, im in enumerate([tfm(image) for i in range(4)]):
ax[1, idx].imshow(im)
fig.tight_layout()
plt.show()
uj5u.com熱心網友回復:
RandomResizedCropAndInterpolation
期望輸入是PIL.Image
and not的一個實體torch.tensor
。如果您需要將其轉換為張量,則必須稍后完成。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/493000.html
標籤:Python 数组 python-3.x python-2.7 火炬