使用Python完成口罩数据集训练,并实现摄像头口罩识别
一、准备数据集
下载地址
大家还可以自己找数据集进行训练。
二、导入Keras库,并划分数据集
import keras
keras.__version__
import os, shutil #复制文件
# 原始目录所在的路径
# 数据集未压缩
original_dataset_dir0 = 'D:\\Workspaces\\Jupyter-notebook\\datasets\\mldata\\人脸口罩数据集\\mask\\mask'
original_dataset_dir1 = 'D:\\Workspaces\\Jupyter-notebook\\datasets\\mldata\\人脸口罩数据集\\mask\\unmask'
# 我们将在其中的目录存储较小的数据集
base_dir = 'D:\\Workspaces\\Jupyter-notebook\\datasets\\mldata\\mask_small'
os.mkdir(base_dir)
# # 训练、验证、测试数据集的目录
train_dir = os.path.join(base_dir, 'train')
os.mkdir(train_dir)
validation_dir = os.path.join(base_dir, 'validation')
os.mkdir(validation_dir)
test_dir = os.path.join(base_dir, 'test')
os.mkdir(test_dir)
# 戴口罩训练图片所在目录
train_mask_dir = os.path.join(train_dir, 'mask')
os.mkdir(train_mask_dir)
# 不戴口罩训练图片所在目录
train_unmask_dir = os.path.join(train_dir, 'unmask')
os.mkdir(train_unmask_dir)
# 戴口罩验证图片所在目录
validation_mask_dir = os.path.join(validation_dir, 'mask')
os.mkdir(validation_mask_dir)
# 不戴口罩验证数据集所在目录
validation_unmask_dir = os.path.join(validation_dir, 'unmask')
os.mkdir(validation_unmask_dir)
# 戴口罩测试数据集所在目录
test_mask_dir = os.path.join(test_dir, 'mask')
os.mkdir(test_mask_dir)
# 不戴口罩测试数据集所在目录
test_unmask_dir = os.path.join(test_dir, 'unmask')
os.mkdir(test_unmask_dir)
# 将前600张戴口罩图像复制到train_mask_dir
fnames = ['mask{}.jpg'.format(i) for i in range(600)]
for fname in fnames:
src = os.path.join(original_dataset_dir0, fname)
dst = os.path.join(train_mask_dir, fname)
shutil.copyfile(src, dst)
# 将600张戴口罩图像复制到validation_mask_dir
fnames = ['mask{}.jpg'.format(i) for i in range(600)]
for fname in fnames:
src = os.path.join(original_dataset_dir0, fname)
dst = os.path.join(validation_mask_dir, fname)
shutil.copyfile(src, dst)
# 将600张戴口罩图像复制到test_mask_dir
fnames = ['mask{}.jpg'.format(i) for i in range(600)]
for fname in fnames:
src = os.path.join(original_dataset_dir0, fname)
dst = os.path.join(test_mask_dir, fname)
shutil.copyfile(src, dst)
# 将前1000张不戴口罩图像复制到train_unmask_dir
fnames = ['unmask{}.jpg'.format(i) for i in range(1000)]
for fname in fnames:
src = os.path.join(original_dataset_dir1, fname)
dst = os.path.join(train_unmask_dir, fname)
shutil.copyfile(src, dst)
# 将500张不戴口罩图像复制到validation_unmask_dir
fnames = ['unmask{}.jpg'.format(i) for i in range(1000, 1500)]
for fname in fnames:
src = os.path.join(original_dataset_dir1, fname)
dst = os.path.join(validation_unmask_dir, fname)
shutil.copyfile