(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

这篇具有很好参考价值的文章主要介绍了(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

目录

前言

一、分类器制作

1.样本准备

2.样本制作

(1)图片重命名

(2)修改图片像素

 3.生成资源记录文件

 4.生成vec文件

  5.训练模型

二、检验分类器​

总结


前言

本文详细介绍怎么制作属于自己的分类器,本篇以口罩识别为例来讲解.

一、分类器制作

1.样本准备

在pycharm建立的项目根目录中建立mask文件夹

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

在mask文件夹下分别建立have_mask和no_mask,分别用来放正样本,即戴口罩的照片,和负样本,即不带口罩的照片,搜一搜可以下载到口罩检测训练集,我这里因为文件数量太多无法上传。

 (详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

正样本未处理

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

负样本未处理

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

2.样本制作

(1)图片重命名

方便对样本进行批量处理,我们需要对样本进行重命名,运行以下即可获得以1000开头的连续图片命名的正样本。

改为负样本的路径,且把count改为10000即可获得为10000开头的连续图片命名的负样本

coding:utf-8
import os

path = r'C:\Users\Gaomagic\PycharmProjects\kouzhaodetect\mask\have_mask'  # 人脸口罩数据集正样本的路径
filelist = os.listdir(path)
count = 1000  # 开始文件名1000.jpg
for file in filelist:
    Olddir = os.path.join(path, file)
    if os.path.isdir(Olddir):
        continue
    filename = os.path.splitext(file)[0]
    filetype = os.path.splitext(file)[1]
    Newdir = os.path.join(path, str(count) + filetype)
    os.rename(Olddir, Newdir)
    count += 1

(2)修改图片像素

将正样本尺寸统一修改为20×20来提高模型训练精度,负样本数据集像素不低于50×50
import pandas as pd
import cv2

for n in range(10000, 11790):  # 代表正数据集中开始和结束照片的数字
    path = r'C:\Users\Gaomagic\PycharmProjects\kouzhaodetect\mask\no_mask/' + str(n) + '.jpg'
    # 读取图片
    img = cv2.imread(path)
    img = cv2.resize(img, (80, 80))  # 修改样本像素为20x20
    cv2.imwrite(r'C:\Users\Gaomagic\PycharmProjects\kouzhaodetect\mask\no_mask/' + str(n) + '.jpg', img)
    n += 1

修改完后效果如下

正样本

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

负样本

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

 3.生成资源记录文件

按下win+r输入cmd打开命令提示符界面进入have_mask文件夹

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

输入以下代码即可创建路径文件

dir /b/s/p/w *.jpg > have_mask.txt

 此时在have_mask下就会产生一个have_mask.txt文件,并将其放到上一层目录

 (详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

 对于no_mask进行上述重复步骤即可

最后结果如下

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

 之后要对正样本进行预处理,在have_mask.txt末尾加入1 0 0 20 20执行以下代码即可

coding:utf-8
Houzhui=r" 1 0 0 20 20" #后缀
filelist = open(r'C:\Users\Gaomagic\PycharmProjects\kouzhaodetect\mask\have_mask.txt','r+',encoding = 'utf-8')
line = filelist.readlines()
for file in line:
    file=file.strip('\n')+Houzhui+'\n'
    print(file)
    filelist.write(file)

最后得到的文件

 (详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

 4.生成vec文件

将如下opencv包里的文件复制到项目mask文件夹下,并在当前文件夹创建xml放置训练好的模型

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

 

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

 按 win+R 输入 cmd 进入命令窗口, 然后进入到 mask 文件夹,然后输入如下命令:

opencv_createsamples.exe -vec havemask.vec -info have_mask.txt -num 400 -w 20 -h 20

得到havemask.vec文件  

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

  5.训练模型

在当前文件夹下新建text文件加入以下代码

opencv_traincascade.exe -data xml -vec havemask.vec -bg no_mask.txt -numPos 250 -numNeg 500 -numStages 20 -w 20 -h 20 -mode ALL

pause

 修改文件名称为start.bat

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

打开start.bat开始训练模型 

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

 根据训练样本数目多少来确定训练时间长短,我训练的比例为250:500,预计半小时左右时间

训练完成后在xml文件下即可看到以下文件,第一个文件即为我们训练好的分类器

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

 

二、检验分类器

 输入以下代码

import cv2

detector = cv2.CascadeClassifier(r'C:\Users\Gaomagic\PycharmProjects\kouzhaodetect\mask\xml\haarcascade_mcs_nose.xml')
mask_detector = cv2.CascadeClassifier(r'C:\Users\Gaomagic\PycharmProjects\kouzhaodetect\mask\xml\cascade.xml')
cap = cv2.VideoCapture(0)
while True:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    nose = detector.detectMultiScale(gray, 1.1, 3)
    if ret:
        for (x, y, w, h) in nose:
            face = img[y:y + h, x:x + w]  
            mask_face = mask_detector.detectMultiScale(gray, 1.1, 5)
            cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
            cv2.putText(img, "no_mask", (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
            for (x2, y2, w2, h2) in mask_face:
                cv2.rectangle(img, (x2, y2), (x2 + w2, y2 + h2), (0, 255, 0), 2)
                cv2.putText(img, "have_mask", (x2, y2), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
        cv2.imshow('mask', img)
        cv2.waitKey(3)

cap.release()
cv2.destroyAllWindows()

得到如下测试结果 

(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

 (详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)

 训练精度不是很高,当检测到鼻子识,说明没有戴口罩。


总结

本篇以口罩识别为例,讲述了如何制作自己的分类器文章来源地址https://www.toymoban.com/news/detail-439043.html

到了这里,关于(详细教程)opencv+python+pycharm 训练属于自己的分类器(以口罩识别为例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 适合小白的超详细yolov8环境配置+实例运行教程,从零开始教你如何使用yolov8训练自己的数据集(Windows+conda+pycharm)

      目录 一、前期准备+所需环境配置  1.1. 虚拟环境创建 1.2 下载yolov8源码,在pycharm中进行配置 1.2.1 下载源码 1.2.2 在pycharm终端中配置conda 1.3 在pycharm的terminal中激活虚拟环境  1.4 安装requirements.txt中的相关包 1.5 pip安装其他包 1.6 预训练权重的下载  1.7 验证环境配置是否成功

    2024年02月05日
    浏览(61)
  • 开源LLM微调训练指南:如何打造属于自己的LLM模型

    今天我们来聊一聊关于LLM的微调训练,LLM应该算是目前当之无愧的最有影响力的AI技术。尽管它只是一个语言模型,但它具备理解和生成人类语言的能力,非常厉害!它可以革新各个行业,包括自然语言处理、机器翻译、内容创作和客户服务等,成为未来商业环境的重要组成

    2024年02月12日
    浏览(35)
  • 必看新手教程!一篇就够!pycharm链接云服务器--yolov5 yolov7训练自己的数据集(矩池云)

    趁着寒假期间稍微尝试跑了一下yolov5和yolov7的代码,由于自己用的笔记本没有独显,台式机虽有独显但用起来并不顺利,所以选择了租云服务器的方式,选择的平台是矩池云(价格合理,操作便捷) 需要特别指出的是,如果需要用pycharm链接云服务器训练,必须要使用pycharm的

    2024年02月03日
    浏览(39)
  • 深度学习:使用UNet做图像语义分割,训练自己制作的数据集,详细教程

    语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支。与分类任务不同,语义分割需要判断图像每个像素点的类别,进行精确分割。语义分割目前在自动驾驶、自动抠图、医疗影像等领域有着比较广泛的应用。我总结了使用UNet网络做图像语义分割的方法,教程很详

    2024年02月03日
    浏览(36)
  • 深度学习:使用UNet做图像语义分割,训练自己制作的数据集并推理测试(详细图文教程)

    语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支。与分类任务不同,语义分割需要判断图像每个像素点的类别,进行精确分割。语义分割目前在自动驾驶、自动抠图、医疗影像等领域有着比较广泛的应用。我总结了使用UNet网络做图像语义分割的方法,教程很详

    2024年01月18日
    浏览(34)
  • 如何基于stable diffusion训练出自己的模型,给出详细的python代码

    首先,基于 stable diffusion 训练自己的模型需要了解 stable diffusion 的原理和基本操作。 Stable diffusion 是一种基于最小化相对熵的机器学习方法,旨在解决在机器学习中常见的过拟合问题。它通过在模型训练过程中引入一个惩罚项来限制模型的复杂度,从而使模型更稳定。 下面是

    2024年02月11日
    浏览(33)
  • opencv-python 在pycharm中的安装教程

    方法:在pycharm中搜索opencv-python,并安装 1.点击file——settings 2.选中当前项目,再选中Project Interpreter ,下一步选中右边的加号‘+’ 3. 在搜索栏中输入opencv-python,并选中,然后点击左下角的安装按钮。 4.在左下角显示\\\"package opencv-python installed successful\\\",即为安装成功 5.测试,输

    2024年02月11日
    浏览(31)
  • Alist安装教程,十分钟搭建一个属于自己的网盘系统

    不想看文档的的,可以看bilibili上的视频教程:网盘这样用,也太爽了!- 神器 AList 详细使用教程 | 网盘整合、在线播放、WebDAV_哔哩哔哩_bilibili 官网地址:https://alist.nn.ci/ AList是一个支持多种存储,支持网页浏览和 WebDAV 的文件列表程序,由 gin 和 Solidjs 驱动。简单的来说就是

    2024年02月04日
    浏览(39)
  • 保姆级教程教你快速搭建属于自己的AI绘画系统!(收藏)

    Midjourney收费高、无法支付,且生成想要的图片受限,风格固定,如果能够10分钟快速搭建属于自己的AI绘画系统,并且对电脑配置无要求,你心动了吗? 先来看看AI系统构建完成后的画面,只需要输入自定义的prompt,就能生成自己想要的人像、风景、动物各种主体,科幻、油

    2024年02月03日
    浏览(39)
  • Anaconda(python,pycharm)半详细安装教程

    目录 文章目录 简介 一.Anaconda(python,pycharm)简介概述 二.Python安装  三.Anaconda安装  四:pycharm安装 本文尽量通过精简的语言,一次说明白安装的流程及其注意事项。。。文章中是以电脑中已经安装了python为基础但又想在额外安装anaconda以及保留原有python版本的情况进行讲解

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包