2024-04-27 16:57:13 发布
网友
我是这方面的新手,所以如果我的问题看起来很愚蠢,请原谅。 我已经创建了一个多分辨率图像金字塔使用
skimage.transform.pyramid_gaussian
图像是二维的。现在我想把这些图像输入到神经网络。神经网络的结构不是固定的。但我不能这么做,因为图像大小不一样。有没有人能给我提供任何关于这是否可以做到的资源?你知道吗
谢谢
有两种类型的神经网络:第一种可以处理可变的输入大小,第二种需要固定的输入大小。你知道吗
第一类的好例子是完全卷积网络(FCN)。它们广泛应用于目标检测和语义分割。下一个代码片段是从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))
有关模型和用法的更多详细信息,请参阅PyTorchdocumentation
有两种类型的神经网络:第一种可以处理可变的输入大小,第二种需要固定的输入大小。你知道吗
第一类的好例子是完全卷积网络(FCN)。它们广泛应用于目标检测和语义分割。下一个代码片段是从PyTorch测试预先训练的keypointrcnn的最小示例。这是对现有技术的改进Mask R-CNN
第二类神经网络需要固定大小的输入,例如ResNet。标准解决方案是在将图像传送到网络之前使用调整大小变换。最小示例:
有关模型和用法的更多详细信息,请参阅PyTorchdocumentation
相关问题 更多 >
编程相关推荐