PyTorch資料增強:如何對圖片進行水平或垂直的Pixel Shift?

Yanwei Liu
Nov 15, 2021

介紹

在本文當中將介紹如何透過torchvision的transforms.RandomAffine將圖片進行水平或垂直的Pixel Shift,使得圖片在水平方向和垂直方向與原有照片能有不同的效果。

如上圖所示,原圖為一黑色方塊。透過RadnomAffine的translate參數調整。

假設translate=(a,b),a可以控制X軸的水平移動;b可以控制Y軸的垂直移動

我們可以對圖片進行水平及垂直的shift,有個fillcolor的地方則是可以對圖片經過shift後留下的地方,填入指定的顏色,本範例以紅色255, 0, 0為例。

# 若要使用plot(affine_images),請先定義以下functiondef plot(imgs, with_orig=False, row_title=None, **imshow_kwargs):
if not isinstance(imgs[0], list):
# Make a 2d grid even if there's just 1 row
imgs = [imgs]
num_rows = len(imgs)
num_cols = len(imgs[0]) + with_orig
fig, axs = plt.subplots(nrows=num_rows, ncols=num_cols, squeeze=False)
for row_idx, row in enumerate(imgs):
row = row
for col_idx, img in enumerate(row):
ax = axs[row_idx, col_idx]
ax.imshow(np.asarray(img), **imshow_kwargs)
ax.set(xticklabels=[], yticklabels=[], xticks=[], yticks=[])
plt.tight_layout()

參考資料

python — How to generate burst of images from a single image by adding misalignment? — Stack Overflow

torchvision.transforms.RandomAffine — Torchvision 0.11.0 documentation (pytorch.org)

学习笔记|Pytorch使用教程08(transforms数据预处理方法(二))_NotFound1911的博客-CSDN博客_transforms.colorjitter

--

--