YOLOv8训练检测人脸是否戴眼镜

YOLOv8训练检测人脸是否戴眼镜

大致可以分为三部1. 下载YOLOv8源码。2. 寻找并标注训练所需素材。3.训练模型
飞浆的数据集:https://aistudio.baidu.com/datasetdetail/83830
建议起码100+以上的数据。有些数据集是标注是json格式的,可以找找工具转成yolov8所需的txt格式,或者自己进行标记。

下载YOLOv8模型

官网地址:https://www.ultralytics.com/zh/yolo
官网github源码地址: https://github.com/ultralytics/ultralytics
gitee源码地址:https://gitee.com/archerprince/yolov8?_from=gitee_search
官网地址有比较详细的问题,可以多了解一些其他的。Github下载过慢,国内可以使用gitee进行下载,项目目录结构如下。
在这里插入图片描述

下载图片进行标注

可以在百度飞浆,或者其他地方下载一些图片进行标注。我使用的是lableimg标注工具
通过pip install lableimg可以安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里面要保存成yolov8训练所需的txt数据集,要和图片对应起来

训练模型

  1. 项目根目录创建如下文件夹,素材图片放进1,标注txt文件放入2
    在这里插入图片描述
  2. 可以复制一个coco128.yaml文件,mycoco128.yaml,内容修改成如下图,path地址根据自己实际情况进行填写
    在这里插入图片描述
    3.复制一份yolov8.yaml配置文件,因为只有一种标注类型,nc修改成1。其他保持不变
    在这里插入图片描述
    4.根目录创建mytrain.py文件,注意上述文件路径,yolov8n.pt可以通过官网快速入门模块代码直接运行下载。训练轮次和设备可以根据自己设置,如果是GPU设备可以配置GPU速度更快点,执行mytrain.py开始训练.
    在这里插入图片描述
    5.训练完毕,会有两个模型,一个是最后一次训练好的模型,一个是评估最好的
    在这里插入图片描述
    6.验证
    可以百度找些图片进行验证,验证失败可以标注下加入自己训练集,重新训练。Save设置为True方便自己观测
    在这里插入图片描述
    7.验证结果
    在这里插入图片描述
YOLOv8是一种用于目标检测的深度学习模型,可以用于人脸检测。下面是使用YOLOv8实现人脸检测的步骤[^1][^2]: 1. 下载YOLOv8的代码和预训练权重。可以从GitHub上的YOLOv8仓库下载代码,并从YOLO官方网站下载预训练权重。 2. 安装依赖项。在运行YOLOv8之前,需要安装一些依赖项,例如OpenCV、NumPy等。 3. 加载模型和权重。使用代码加载YOLOv8模型和预训练权重。 4. 读取图像。将待检测的图像加载到内存中。 5. 图像预处理。对图像进行预处理,例如缩放、归一化等。 6. 运行模型。将预处理后的图像输入到YOLOv8模型中,运行模型并获取检测结果。 7. 解析结果。解析模型输出的结果,提取人脸检测框的位置和置信度。 8. 绘制检测结果。将检测结果绘制在原始图像上,可以使用OpenCV等库进行绘制。 9. 显示结果。将绘制好的图像显示出来,可以保存结果或实时展示。 下面是一个使用YOLOv8实现人脸检测的Python代码示例: ```python import cv2 import numpy as np # 加载模型和权重 net = cv2.dnn.readNetFromDarknet('yolov3.cfg', 'yolov3.weights') # 读取图像 image = cv2.imread('image.jpg') # 图像预处理 blob = cv2.dnn.blobFromImage(image, 1/255, (416, 416), swapRB=True, crop=False) # 运行模型 net.setInput(blob) output_layers_names = net.getUnconnectedOutLayersNames() layer_outputs = net.forward(output_layers_names) # 解析结果 boxes = [] confidences = [] class_ids = [] for output in layer_outputs: for detection in output: scores = detection[5:] class_id = np.argmax(scores) confidence = scores[class_id] if confidence > 0.5: center_x = int(detection[0] * image.shape[1]) center_y = int(detection[1] * image.shape[0]) width = int(detection[2] * image.shape[1]) height = int(detection[3] * image.shape[0]) left = int(center_x - width / 2) top = int(center_y - height / 2) boxes.append([left, top, width, height]) confidences.append(float(confidence)) class_ids.append(class_id) # 非最大抑制 indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4) # 绘制检测结果 font = cv2.FONT_HERSHEY_PLAIN colors = np.random.uniform(0, 255, size=(len(boxes), 3)) for i in range(len(boxes)): if i in indexes: x, y, w, h = boxes[i] label = str(class_ids[i]) confidence = confidences[i] color = colors[i] cv2.rectangle(image, (x, y), (x + w, y + h), color, 2) cv2.putText(image, label, (x, y - 5), font, 1, color, 1) # 显示结果 cv2.imshow("Image", image) cv2.waitKey(0) cv2.destroyAllWindows() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值