簡體   English   中英

如何在pytorch對象檢測中添加轉換

[英]how to add transformation in pytorch object detection

我是 PyTorch 的新手,正在瀏覽 PyTorch 對象檢測文檔教程pytorch docx 在他們的合作版本中,我進行了以下更改以添加一些轉換技術。

  1. 首先修改 PennFudanDataset(torch.utils.data.Dataset) 類的__getitem__方法
if self.transforms is not None:
   img = self.transforms(img)     
   target = T.ToTensor()(target)
   return img, target

In actual documentation it is 
if self.transforms is not None:
   img, target = self.transforms(img, target)  

其次,在get_transform(train)函數處。

def get_transform(train):
  if train:
    transformed = T.Compose([             
           T.ToTensor(),
           T.GaussianBlur(kernel_size=5, sigma=(0.1, 2.0)),
          T.ColorJitter(brightness=[0.1, 0.2], contrast=[0.1, 0.2], saturation=[0, 0.2], hue=[0,0.5])
    ])
    return transformed

  else:
    return T.ToTensor()

**In the documentation it is-** 
def get_transform(train):
    transforms = []
    transforms.append(T.ToTensor())
    if train:
        transforms.append(T.RandomHorizontalFlip(0.5))
    return T.Compose(transforms)

在實現代碼時,我收到以下錯誤。 我無法得到我做錯了什么。

TypeError: Caught TypeError in DataLoader worker process 0.
Original Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/worker.py", line 198, in _worker_loop
    data = fetcher.fetch(index)
  File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp>
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataset.py", line 272, in __getitem__
    return self.dataset[self.indices[idx]]
  File "<ipython-input-41-94e93ff7a132>", line 72, in __getitem__
    target = T.ToTensor()(target)
  File "/usr/local/lib/python3.6/dist-packages/torchvision/transforms/transforms.py", line 104, in __call__
    return F.to_tensor(pic)
  File "/usr/local/lib/python3.6/dist-packages/torchvision/transforms/functional.py", line 64, in to_tensor
    raise TypeError('pic should be PIL Image or ndarray. Got {}'.format(type(pic)))
TypeError: pic should be PIL Image or ndarray. Got <class 'dict'>

我相信 Pytorch 轉換僅適用於圖像(在這種情況下為 PIL 圖像或 np 數組),而不適用於標簽(根據跟蹤是字典)。 因此,我認為您不需要像在__getitem__函數中的這一行target = T.ToTensor()(target)那樣“張量化”標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM