【问题标题】:Feed multi resolution images to Neural Network Pytorch将多分辨率图像馈送到神经网络 Pytorch
【发布时间】:2020-02-13 18:45:10
【问题描述】:

我是这个领域的新手,如果我的问题看起来很愚蠢,请原谅。 我使用

创建了一个多分辨率图像金字塔

skimage.transform.pyramid_gaussian

图像是二维的。现在我想将这些图像提供给神经网络。神经网络的结构不是固定的。但我不能这样做,因为图像的大小不同。任何人都可以指导我找到有关这是否可以完成的任何资源吗?

谢谢

【问题讨论】:

    标签: python image-processing neural-network pytorch scikit-image


    【解决方案1】:

    有两种类型的神经网络:第一种可以处理可变输入大小,第二种需要固定输入大小。

    第一类的好例子是全卷积网络 (FCN)。它们被广泛用于对象检测和语义分割。下一个代码 sn-p 是测试来自 PyTorch 的预训练 keypointrcnn 的最小示例。这是对以前最先进技术的改进Mask R-CNN

    import torch
    import torchvision
    from PIL import Image
    
    model_rcnn = torchvision.models.detection.keypointrcnn_resnet50_fpn(pretrained=True)
    model_rcnn.eval()
    
    image1 = Image.open('image122 × 430.jpg')
    image2 = Image.open('image448 × 465.jpg')
    
    image_tensor1 = torchvision.transforms.functional.to_tensor(image1)
    image_tensor2 = torchvision.transforms.functional.to_tensor(image2)
    
    output1 = model_rcnn([image_tensor1])
    output2 = model_rcnn([image_tensor2])
    print(output1, output2)
    

    第二种神经网络需要固定大小的输入,例如 ResNet。 标准解决方案是在将图像输入网络之前使用调整大小变换。最小的例子:

    import torch
    import torchvision
    from torchvision import transforms
    from PIL import Image
    
    model_imagnet = torchvision.models.resnet50(pretrained=True)
    model_imagnet.eval()
    
    # don't forget to use the same normalization as in training, 
    # if you are using pre-trained model
    normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                     std=[0.229, 0.224, 0.225])
    my_transforms = transforms.Compose([transforms.Resize(224), 
                                       transforms.ToTensor(),
                                       normalize])
    
    image1 = Image.open('image122 × 430.jpg')
    image2 = Image.open('image448 × 465.jpg')
    
    image_tensor1 = my_transforms(image1)
    image_tensor2 = my_transforms(image2)
    
    
    output1 = model_imagnet(torch.unsqueeze(image_tensor1, 0))
    output2 = model_imagnet(torch.unsqueeze(image_tensor2, 0))
    

    有关模型的更多详细信息和使用方法,您可以参考 PyTorch documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-12
      • 2011-07-30
      • 2018-12-16
      • 2019-05-15
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      • 2018-09-28
      相关资源
      最近更新 更多