见上一篇博客
①下载口罩数据集和yolov4代码包 ②由于该数据集中有xml文件,所以直接将xml文件复制到下面这个位置 ③将训练图片复制到以下位置 ④划分数据集 代码如下:
import os import numpy as np import codecs import json from glob import glob import cv2 import shutil from sklearn.model_selection import train_test_split labelme_path = "D:\\kouzhao\\mask\\train" + os.sep # 原始labelme标注数据路径 saved_path = "D:\\kouzhao\\mask\\train" + os.sep + "VOC2007" + os.sep # 保存路径 # 2.创建要求文件夹 if not os.path.exists(saved_path + "Annotation"): os.makedirs(saved_path + "Annotations") if not os.path.exists(saved_path + "JPEGImages" + os.sep): os.makedirs(saved_path + "JPEGImages" + os.sep) if not os.path.exists(saved_path + "ImageSets" + os.sep + "Main" + os.sep): os.makedirs(saved_path + "ImageSets" + os.sep + "Main" + os.sep) txtsavepath = saved_path + "ImageSets" + os.sep + "Main" + os.sep ftrainval = open(txtsavepath + os.sep + 'trainval.txt', 'w') ftest = open(txtsavepath + os.sep + 'test.txt', 'w') ftrain = open(txtsavepath + os.sep + 'train.txt', 'w') fval = open(txtsavepath + os.sep + 'val.txt', 'w') # 需要修改路径 total_files = glob("D:\\kouzhao\\mask\\train" + os.sep + "VOC2007" + os.sep + "Annotation" + os.sep + "*.xml") total_files = [i.split(os.sep)[-1].split(".xml")[0] for i in total_files] trainval_files = [] test_files = [] trainval_files, test_files = train_test_split(total_files, test_size=0.1, random_state=55) for file in trainval_files: ftrainval.write(file + "\n") train_files, val_files = train_test_split(trainval_files, test_size=0.1, random_state=55) # train for file in train_files: ftrain.write(file + "\n") # val for file in val_files: fval.write(file + "\n") for file in test_files: print(file) ftest.write(file + "\n") ftrainval.close() ftrain.close() fval.close() ftest.close()划分结果,将生成以下txt文件: ⑤复制以下文件到yolov4项目中 ⑥添加类别信息 ⑦运行以下两个代码 ⑧运行train.py,生成权重文件,我设置的训练轮数为5,这里需要等待一段时间 ⑨训练完成,将生成以下文件: ⑩加载权重,修改以下地方的内容: ⑪将测试照片导入项目中 ⑫运行predict.py进行预测测试 运行结果:
①运行video.py,调用摄像头测试自己的人脸 ②结果:
①输入以下内容: ②点击该链接: ③结果如下:
可以看到loss曲线和val_loss曲线都呈下降趋势,所以该训练网络正常,训练结果还算比较好,但是由于训练轮数或者训练照片过少,有漏掉目标的情况,后续我会改善这些地方,提高模型的精确度。
①https://blog.csdn.net/shuaigeek/article/details/105210500 ②https://blog.csdn.net/Dongjiuqing/article/details/84763430
