eecn/Hyperspectral-Classification

在对数据提取patch的时候,代码是否有小问题?

Ponytai1j opened this issue · 4 comments

    x_pos, y_pos = np.nonzero(mask)
    p = self.patch_size // 2
    self.indices = np.array([(x,y) for x,y in zip(x_pos, y_pos) if x > p and x < data.shape[0] - p and y > p and y < data.shape[1] - p])
    self.labels = [self.label[x,y] for x,y in self.indices]
    np.random.shuffle(self.indices)

此处代码是否有问题?
若patch_size=3,,图片6*6 则p=3//2=1,
呢么找到的符合条件中心x > 1 and x < 5,则x = 2,3,4,
在取path时,x1 = x - 3// 2 = 1, 则永远取不到0

个人认为此处改为x > p - 1,更好可以多一个patch。

eecn commented

当x=0时,在取patch时会出现错误,对y坐标也是一样。如果要这样取可以先给输入数据根据patch_size进行padding.

这里确实少了一个patch, 这里取0的是第一个patch的序号,不会导致错误,可以改成x>p-1或想x>=p,y同理,改完之后输出一下patch总数也是对的.

eecn commented

这里确实少了一个patch, 这里取0的是第一个patch的序号,不会导致错误,可以改成x>p-1或想x>=p,y同理,改完之后输出一下patch总数也是对的.

我check一下,很久没跑过代码了

eecn commented
    x_pos, y_pos = np.nonzero(mask)
    p = self.patch_size // 2
    self.indices = np.array([(x,y) for x,y in zip(x_pos, y_pos) if x > p and x < data.shape[0] - p and y > p and y < data.shape[1] - p])
    self.labels = [self.label[x,y] for x,y in self.indices]
    np.random.shuffle(self.indices)

此处代码是否有问题? 若patch_size=3,,图片6*6 则p=3//2=1, 呢么找到的符合条件中心x > 1 and x < 5,则x = 2,3,4, 在取path时,x1 = x - 3// 2 = 1, 则永远取不到0

个人认为此处改为x > p - 1,更好可以多一个patch。

嗯嗯,是会出现这个问题。数据索引从0开始,没有考虑全面