从 Google Drive 读取到 Google Colab 后,图像数据以不同/随机顺序存储在数组中

Row*_*zat 5 python google-colaboratory

我正在尝试使用 Google Colab 使用 U-net 进行图像分割过程。我可以将图像数据集从 Drive 读取到 Colab 并保存在数组中。仅供参考:我的 Google Drive 中有一个文件夹,其中包含所有训练数据,其中包含 2 个子文件夹(分别为 Image 和 Mask)。

现在,当我使用“plt.show”检查图像时,在阅读并调整图像和蒙版大小后,我注意到图像编号的顺序存在差异。例如,当我随机选取第 10 张图像时,该图像与谷歌驱动器中的第 10 张图像不匹配。更糟糕的是,我的蒙版得到了完全不同的图像,这使得我的图像和蒙版不同(主要问题!!)。

有人遇到过类似的情况吗?知道如何解决这个问题吗?

小智 5

我遇到了这个问题。从目录将图像从谷歌驱动器导入到谷歌colab似乎是随机导入图像。

\n

所以我首先检查了这段代码以证实我的理论。

\n
inside = os.listdir('/content/gdrive/MyDrive/files/')\nfor i in range(20):\n    print(inside[i])\n
Run Code Online (Sandbox Code Playgroud)\n

给出了输出:

\n
15588_KateOMara_32_f.jpg\n15658_KatharineRoss_68_f.jpg\n15741_MaryTamm_40_f.jpg\n15661_KatharineRoss_72_f.jpg\n15621_KateOMara_70_f.jpg\n15646_KatharineRoss_46_f.jpg\n15851_St\xd0\x92phaneAudran_22_f.jpg\n15810_SarahDouglas_61_f.jpg\n15486_JeanetteMacDonald_46_f.jpg\n15831_StefaniePowers_56_f.jpg\n15670_KathrynGrayson_26_f.jpg\n15539_JulieBishop_36_f.jpg\n15696_KathrynGrayson_75_f.jpg\n15738_MaryTamm_33_f.jpg\n15853_St\xd0\x92phaneAudran_24_f.jpg\n15665_KathrynGrayson_21_f.jpg\n15815_StefaniePowers_24_f.jpg\n15748_MaryTamm_51_f.jpg\n15759_PamelaSueMartin_26_f.jpg\n15799_SarahDouglas_43_f.jpg\n
Run Code Online (Sandbox Code Playgroud)\n

我正在使用

\n
os.listdir(self.directory)\n
Run Code Online (Sandbox Code Playgroud)\n

它返回指定路径中所有文件和目录的列表。所以我只是用了

\n
sorted()\n
Run Code Online (Sandbox Code Playgroud)\n

函数对列表进行排序,这解决了问题。

\n
sorted_dir = sorted(os.listdir('/content/gdrive/MyDrive/files/'))\nfor i in range(20):\n    print(sorted_dir[i])\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
0_MariaCallas_35_f.jpg\n10000_GlennClose_62_f.jpg\n10001_GoldieHawn_23_f.jpg\n10002_GoldieHawn_24_f.jpg\n10003_GoldieHawn_24_f.jpg\n10004_GoldieHawn_27_f.jpg\n10005_GoldieHawn_28_f.jpg\n10006_GoldieHawn_29_f.jpg\n10007_GoldieHawn_30_f.jpg\n10008_GoldieHawn_31_f.jpg\n10009_GoldieHawn_35_f.jpg\n1000_StephenHawking_1_m.jpg\n10010_GoldieHawn_35_f.jpg\n10011_GoldieHawn_37_f.jpg\n10012_GoldieHawn_39_f.jpg\n10013_GoldieHawn_44_f.jpg\n10014_GoldieHawn_45_f.jpg\n10015_GoldieHawn_45_f.jpg\n10016_GoldieHawn_50_f.jpg\n10017_GoldieHawn_51_f.jpg\n
Run Code Online (Sandbox Code Playgroud)\n

前:

\n
for i, file in enumerate(os.listdir(self.directory)):\n            file_labels = parse('{}_{person}_{age}_{gender}.jpg', file)\n
Run Code Online (Sandbox Code Playgroud)\n

后:

\n
for i, file in enumerate(sorted(os.listdir(self.directory))):\n            file_labels = parse('{}_{person}_{age}_{gender}.jpg', file)\n
Run Code Online (Sandbox Code Playgroud)\n