[Pytorch]Pytorch中圖像的基本操作(TenCrop)


轉自:https://www.jianshu.com/p/73686691cf13

下面是幾種常寫的方式

第一種方式

        normalize = transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
        transformList = []
        transformList.append(transforms.RandomResizedCrop(transCrop))
        transformList.append(transforms.RandomHorizontalFlip())
        transformList.append(transforms.ToTensor())
        transformList.append(normalize)
        transformSequence = transforms.Compose(transformList)

第二種方式

train_augmentation = torchvision.transforms.Compose([torchvision.transforms.Resize(256),
                                                    torchvision.transforms.RandomCrop(224),                                                                            
                                                    torchvision.transofrms.RandomHorizontalFlip(),
                                                    torchvision.transforms.ToTensor(),
                                                    torch vision.Normalize([0.485, 0.456, -.406], [0.229, 0.224, 0.225])
                                                    ])

需要主要的是:

  • Pytorch 常用PIL庫來讀取圖像數據,讀取之后的格式是PIL Image
  • 在進行Normalize時, 需要先轉成Tensor的形式.
  • Resize和crop的操作是對 PIL Image 的格式進行的操作.現在論文中一般將圖片先resize到(256,256)然后randomCrop到(224,和224)中.

Resize和Crop的區別

resize相當於對原來的圖像進行壓縮,大致的形狀是不發生變化的,也就是說可以看到圖片的樣子
Crop是對圖片進行隨機的剪切,切出來的可能是整個圖片的一部分,其中RandomCrop的操作更常用
RandomResizedCrop類也是比較常用, 總的來講就是先做crop,再resize到指定尺寸

FiveCrop和TenCrop

這兩種操作之后,一張圖變成五張,一張圖變成十張,那么在訓練或者測試的時候怎么避免和標簽混淆呢
思路是,這多個圖擁有相同的標簽,假如是分類任務,就可以使用交叉熵進行,然后求10張圖的平均

transform = Compose([
    TenCrop(size), # this is a list of PIL Images
    Lambda(lambda crops: torch.stack([ToTensor()(crop) for crop in crops])) # returns a 4D tensor
])

#In your test loop you can do the following:
input, target = batch # input is a 5d tensor, target is 2d
bs, ncrops, c, h, w = input.size()
result = model(input.view(-1, c, h, w)) # fuse batch size and ncrops
result_avg = result.view(bs, ncrops, -1).mean(1) # avg over crops

      </div>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM