fer2013中无用数据的删除
最近在做机器学习的练习,发现fer2013数据集中有很多的干扰数据或者说干扰图片,大致分为两类,非人脸图片以及错匹配人脸图片。后者我认为需要手动修改的实在是懒得搞,但是前面的非人脸图片还是能轻松去除的。
错例1
错例2
假设你已经把csv文件转成了图片并且存在了某文件夹下
// An highlighted block
from PIL import Image
import numpy as np
import os
root = r'D:\AAAA\python\pythonproject\fer2013_practice\data\fer2013\test\6'
imgs = [os.path.join(root, img) for img in os.listdir(root)] # 获取全部图片的路径到一个字典中
for ii,img in enumerate(imgs): # 遍历其中的图片
# print(ii,img) # 此处ii为标号,img为此图片的路径
im = Image.open(img) # 打开这张图片
im = im.convert("L") # 转换成matrix矩阵的方法
data = im.getdata()
data = np.matrix(data)
a = data.copy() # 统计小于10的个数
a[a <= 10] = 1
a[a > 10] = 0
aaa = np.sum(a)
b = data.copy() # 统计大于220的个数
b[b < 240] = 0
b[b >= 240] = 1
bbb = np.sum(b)
if aaa > 0.65*48*48 or bbb > 0.65*48*48:
os.remove(img) # 删掉文件
print("Delete File: " + img)
把root中的文件夹改成你的文件夹即可