我有形象(6000*6000)果断。是不是一样:resize到(1000*1000)再resize到(512*512),直接resize到(512*512)?

I have image (6000*6000) resolute. Is it the same :resizing it to (1000*1000) then resizing to (512*512) and resizing it to(512*512) directly?

我在服务器上有大约 200GB+ 的图像数据(大约 6000*6000)。出于便携原因,我希望我可以将它的大小 (cv2) 调整为 (1000*1000),然后将数据传输到另一个云,然后调整为 (512*512) 并执行一些简单的分类任务。调整大小将为我节省很多生命。我只是想知道这样做,除了将 6000*6000 直接调整为 512*512 之外,数据是否会丢失一些信息?

结果应该不同,但我不知道它会如何影响我的模型精度。

img2= cv2.resize(img, (1000, 1000))
img3=cv2.resize(img, (512, 512))
img4=cv2.resize(img2, (512, 512))
img3==img4

array([[[ True,  True,  True],
        [ True,  True,  True],
        [ True,  True,  True],
        ...,
        [ True, False,  True],
        [ True, False,  True],
        [ True,  True,  True]],

       [[ True,  True,  True],
        [ True,  True,  True],
        [ True,  True,  True],
        ...,
        [ True,  True, False],
        [ True,  True,  True],
        [ True,  True,  True]],

       [[ True,  True,  True],
        [ True,  True,  True],
        [ True,  True,  True],
        ...,
        [ True, False,  True],
        [ True,  True,  True],
        [ True,  True,  True]],

       ...,

       [[ True,  True,  True],
        [ True,  True,  True],
        [ True,  True,  True],

当然会丢失信息。

假设您有一张 4 x 4 的图像:

xxxx
xoxo
xxxx
xoxo

示例图像是二进制的。现在您将分辨率更改为 2 x 2. 块,例如

xx
xo

需要在新分辨率定义的新栅格中分配 xo,因此它们更改为 x。结果是一张新的 2 x 2 图片:

xx
xx

现在您将其更改回 4 x 4 的分辨率。然而,在 2 x 2 图像中不再有任何 o 可用的信息,因此缩小会导致:

xxxx
xxxx
xxxx
xxxx

这明显不同。

这是一个微不足道的例子,发生多少数据丢失取决于格式的实现,特别是数据的表示和存储方式。但总的来说——是的,显然有信息丢失。

作为建议 - 根据您需要执行的操作,您可以改为将图像块发送到服务器,对这些图像进行分类,接收结果,发送下一个块等等。当然,如果您希望对跨越整个图像的对象进行分类,那么这将行不通。