目录
一、项目背景:
在医疗和食品行业,口罩佩戴是维护卫生规范的重要要求。口罩佩戴目标检测系统系统可以用于确保员工和工作人员在工作时正确佩戴口罩,减少交叉污染的风险。
2019新型冠状病毒(2019-nCoV)突袭中国武汉,感染人数感染危害之震惊全球!在党和国家的强有力和正确的领导下,全国人民众志成城,团结一致战胜疫情狙击战。平台上线了口罩识别检测系统,实现实时检测未佩戴口人员并及时预警, 为构建人们安全架起一道安全防线网。
二、项目配置:
数据集:
Masks play a crucial role in protecting the health of individuals against respiratory diseases, as is one of the few precautions available for COVID-19 in the absence of immunization. With this dataset, it is possible to create a model to detect people wearing masks, not wearing them, or wearing masks improperly.
This dataset contains 853 images belonging to the 3 classes, as well as their bounding boxes in the PASCAL VOC format.
The classes are:
- With mask;
- Without mask;
- Mask worn incorrectly.
数据集格式:图片格式png,大小853张
先去自己的anaconda的安装的envs(虚拟环境),在导航栏输入cmd,进入命令窗口,确保3.11>=python>=3.8(YOLOv8要求)
创建一个虚拟环境
conda create -n torch1.12.1 python=3.11.1
到官方网站下载YOLOv8模型 ,下载好后解压,里面有个文件requirements.txt https://github.com/ultralytics/ultralytics
安装一个整体包:(路径要按自己的文件路径改,不然会报错:pip install -r 自己的文件路径\requirements.txt )
pip install -r .\requirements.txt
然后安装ultralytics
pip install ultralytics
YOLOv8本身的模型权重并没有识别口罩,所以需要自己训练模型权重,并完成口罩的识别。
三、模型训练:
1.数据集预处理:
数据集解压得到两个文件夹,分别存储着图片与标注信息,格式为(png)和(xml)
打开其中一个xml文件
with open('../data/annotations/maksssksksss0.xml') as f:
contents = f.read()
print(contents)
得到标注信息
学习YOLOv8的模型训练,使用的是txt标注信息,所以需要对原xml标注信息进行转换,将xml标注信息转成YOLOv8模型训练样式,仅保留YOLOv8模型训练所需的类别和标记信息。剔除后得到包含类别的标记信息的文件。
此数据集只需要三个类别,写在classes.txt,类别包括(["without_mask", "with_mask", "mask_weared_incorrect"])。
xml的标记信息是像素值标注,YOLOv8中的txt是比例标注,所以进行一个转换,获取文件id,输出成txt文件保存。
def x