【问题标题】:Sort labeled dataset with labels in separate csv file?在单独的 csv 文件中对带有标签的标签数据集进行排序?
【发布时间】:2021-02-19 20:05:11
【问题描述】:

我有一个约 3500 张图像的数据集,每个图像的标签都在一个 csv 文件中。 csv 文件有两列:第一列包含图像文件的确切名称(即 00001.jpg),第二列包含图像的标签。共有 7 个不同的标签。

如何有效地将图像从一个巨大的文件夹分类到 7 个不同的文件夹(每个图像在其各自的类别中)?有没有人有脚本可以做到这一点?

另外,我有什么方法可以使用 Google 云端硬盘做到这一点?我已经将数据集上传到云端硬盘,以便尽快与 Colab 一起使用,所以我不想再做一次(大约需要 2.5 小时)。

【问题讨论】:

  • 这是一个很小的数据集。这听起来更像是操作系统问题。您是在复制还是移动文件?
  • 复制或移动是什么意思?即手动对数据集进行排序?
  • 如果你移动一个文件,它应该可以忽略不计,因为它只是将文件重新定位到正确的子文件夹中,而不需要对文件内容做任何事情。

标签: python


【解决方案1】:

我不确定性能,可能有更好的方法...
但这将是我对这个问题的看法:
(未经测试,因此可能需要小幅调整)

我假设图像位于子文件夹 /images/ 中,但 csv 和脚本位于根目录中。此外,我假设 csv 名为 images.csv,而 csv 中的列名为 filelabel

import pandas as pd
import os

df = pf.DataFrame.from_csv('images.csv')

for _, row in df.iterrows():
  f = row['file']
  l = row['label']
  os.replace(f'images/{f}', f'images/{l}/{f}')

我不知道 google drive 会用它做什么,但只要你可以在 google-drive-synced 文件夹上运行它,我不知道为什么这会是个问题。

注意:如果你测试它,你可能想在文件的副本上这样做,以防我搞砸了......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多