簡體   English   中英

使用 Dataloader 加載時,PyTorch 正在平鋪圖像

[英]PyTorch is tiling images when loaded with Dataloader

我正在嘗試使用 PyTorch 數據加載器加載圖像數據集,但生成的轉換是平鋪的,並且沒有像我期望的那樣將原始圖像裁剪到中心。

transform = transforms.Compose([transforms.Resize(224),
                             transforms.CenterCrop(224),
                             transforms.ToTensor()])

dataset = datasets.ImageFolder('ml-models/downloads/', transform=transform)
dataloader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True)


images, labels = next(iter(dataloader))
import matplotlib.pyplot as plt
plt.imshow(images[6].reshape(224, 224, 3))

生成的圖像是平鋪的,而不是中心裁剪的。[![如這里的 Jupyter 快照所示][1]][1]

提供的轉換有問題嗎? (鏈接如下圖所示:)[1]: https : //i.stack.imgur.com/HtrIa.png

Pytorch 以通道優先格式存儲張量,因此 3 通道圖像是形狀為 (3, H, W) 的張量。 Matplotlib 期望數據采用通道最后的格式,即 (H, W, 3)。 重塑不會重新排列尺寸,為此您需要Tensor.permute

plt.imshow(images[6].permute(1, 2, 0))

水平平鋪人像的算法(w <h) images into 16:9 ratio landscape montages< div><div id="text_translate"><p> 我想寫一個程序,將一組具有相同高度但不同寬度的縱向(即寬度&lt;高度)圖像文件,將它們水平平鋪成N個合成圖像,這樣每個合成圖像都盡可能接近16:9的比例盡可能。 這甚至可能嗎? 我能找到的最接近我想要的算法是<a href="https://en.wikipedia.org/wiki/Knapsack_problem" rel="nofollow noreferrer">https://en.wikipedia.org/wiki/Knapsack_problem</a> 。</p></div></h)>

[英]Algorithm for horizontally tiling portrait (w<h) images into 16:9 ratio landscape montages

暫無
暫無

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

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