首页 > 解决方案 > 在python中对图像数据进行欠采样

问题描述

欠采样的主要思想是随机删除具有足够观察值的类,以便两个类的比较比率在我们的数据中是显着的。那么,如何在 python 中对图像数据进行欠采样呢?请帮我:(

我从 Kaggle 获取眼底图像数据。有 5 个类别的 35127 张图像。0类:25810数据,1类:2443数据,2类:5292数据,3类:873数据,4类:708数据,

我希望每个班级在第 4 节课之后有多达 708 张图像。如何删除 Python 中的其余图像?

标签: pythonimage-processingoversamplingimagedata

解决方案


我知道这是一个老问题,但为了人们寻找答案,这段代码完美运行:

    path = r'C:/The_Path'# You can provide the path here
    n = 2500 # Number of random images to be removed
    img_names = os.listdir(path)  # Get image names in folder
    img_names = random.sample(img_names, n)  # Pick 2500 random images
    for image in img_names:  # Go over each image name to be deleted
        f = os.path.join(path, image)  # Create valid path to image
        os.remove(f)  # Remove the image

正如您的问题所述,您希望所有类都等于第 4 类,即 708 个图像。只需找出差异并替换n,例如,第3类图像和708图像之间的差异为165图像,因此n = 165。此外,您可以将其制成一个函数以对其进行更多概括。

代码取自,但经过编辑:

如何使用python从多个文件夹中删除多个图像

https://stackoverflow.com/users/10512332/vikrant-sharma回答了这个问题。

谢谢!


推荐阅读