【发布时间】:2023-04-04 19:33:02
【问题描述】:
我正在用 pytorch 实现一篇关于图像分割的论文。我需要做一些预处理步骤,但因为我是第一次尝试,所以我无法将它们合并到传统的管道中。
以下是预处理步骤-
1) N(w, h) = I(w, h) - G(w, h), (1) 其中 N 是归一化图像,I 是原始图像,G 是高斯模糊图像,内核大小为 65*65,均值为 0,标准差为 10。
2)对平均图像进行归一化,并将每个像素除以平均标准差。
以下是上述步骤的代码 sn-p-
def gaussian_blur(img):
image = cv2.GaussianBlur(image,(65,65),10)
new_image = img - image
return image
def normalise(img):
img_normalised = np.empty(img.shape)
img_std = np.std(img)
img_mean = np.mean(img)
img_normalized = (img-img_mean)/imgs_std
for i in range(img.shape[1]):
img_normalized[i] = (img_normalized -
np.mean(img_normalized))/np.std(img_normalized)
return img_normalized
我真的不知道如何在传统的 pytorch 数据加载器管道中添加上述函数,比如首先我应该使用 ImageFolder 加载数据集,然后应用或先应用然后使用 ImageFolder 方法。
【问题讨论】:
-
我现在懒得提供工作代码,但您可以阅读有关 Generic Transforms 的信息以轻松完成。
-
正如@Berriel 所说,通用转换工作正常,但我也向您推荐imgaug。您可能会在那里找到一些有用的代码。
-
@Berriel 关于如何为多个表达式编写 lambda 函数的任何想法,因为我的高斯模糊函数有 2 个表达式,我想了很久但无法弄清楚。
-
@Mark 如果您查看
transforms.Lambda(...)的代码,您会注意到您可以传递任何可调用对象。将您的转换包装在一个函数中并传递它。它应该可以工作。
标签: python-3.x deep-learning pytorch image-preprocessing