项目思路介绍

一切开始前,先来总体介绍一下我这个项目是的大体情况。
这个项目是我们小组的一个结课大作业,但是大部分都是我亲自完成的,这里仅分享我制作的那部分(主要是因为同学后来加的那部分语音识别太鸡肋,点了检测按钮还得再说一声开始检测才能打开摄像头,我觉得毫无意义)。虽然不算太难,但是从开始研究到最后结束我花了将近两个星期(因为平时还得正常上课)。
这是一个单人或多人口罩识别的应用,主要运用卷积神经网络(lenet5)来进行判别,预期效果是若检测到没有人戴口罩则在屏幕实时显示警报,并发出声音提示。
下面是一组效果图:
(单人)
在这里插入图片描述
(多人)
在这里插入图片描述
看完效果图之后,我们废话不多说,直接进入正题

数据集的构建

要使用卷积神经网络,我们首先得有一个庞大的数据集,用来训练神经网络。我这里采用的数据集有8个分类,每个类有22张照片,使用其中17张为训练集、5张为验证集。这些照片设定大小为200*200RGB图片(因为太小会失真检测效果大大减少)
下面是一个数据集的一部分在这里插入图片描述
图片是从各处搜集到的,大小不一,形状各异。但是我们要明白一个基本知识传入卷积神经网络的图片要求大小相同。所以我们就涉及到了批量处理数据的问题。于是我编写了一段代码:
你使用时只需要改写输入地址和输出地址和循环次数(图片个数)即可。 此外,我这里只需要将图片大小更改,所以只有这一个功能,你可以根据你的所需将图片二值化、进行灰度处理等等

ObjDir = 'D:\matlab\new\my\4\';%将被改变的图像地址,称为目标地址
OtpDir = 'D:\matlab\new\HandWrittenDataset\12\';%输出图像地址,称为输出地址

for i = 1:5%我的图像标号是
%输入区
    bgFile = [ObjDir,num2str(i,'%d'),'.jpg'];%这句话读取目标地址里面的格式为jpg的图片
    bgFile = imread(bgFile);%把图片读成matlab认识的,类型为:图片

%在这里插入你想要的功能。
    img = imresize(bgFile,[200 200]);%调整大小到200*200

%输出区
    filename=[num2str(i,'%d'),'.jpg'];%输出的图片名称是
    path=fullfile(OtpDir,filename);%输出的路径
    imwrite(img,path,'jpg');%以jpg格式输出出去
end

好了!数据集的创建就说到这里,后面还会有:怎样训练卷积神经网络、怎样从matlab对摄像头进行操作、怎样构造屏幕刷新函数、怎样构建一个GUI、怎样进行软件打包,想要跟着我了解一套完整课程设计该怎么做就关注我吧!近期会爆肝更新!!!

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐