IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 使用opencv.js分类器和hbuilderx开发一个分类器app -> 正文阅读

[人工智能]使用opencv.js分类器和hbuilderx开发一个分类器app

一、开发工具简介

1、opencv分类器

基于图像HAAR与LBP特征训练的级联分类器,只需要简单的正负样本数据集图片,就可以训练一个检测正样本的级联分类器。最重要的是,经过编译好的的exe类文件训练出来的分类器,在C++,Python,Js几种语言环境中都可以调用。训练方法很简单,跟着教程按部就班即可。网上也有很多教程,具体方法如下:

训练方法

1、获取opencv_createsamples.exe和opencv_traincascade.exe

链接:https://pan.baidu.com/s/1fGX8RBnL5HiHKkfPv-K5iw?pwd=2vis
提取码:2vis

2、制作正负样本数据集、需要转灰度图

gray = cv.cvtColor(resize, cv.COLOR_BGR2GRAY)

path='*/”图片文件路径”'
pathdir=os.listdir(path)
for i in pathdir:
    #遍历目录下子文件夹
    imgpath=path+i
    img=cv.imread(imgpath)
    gray=cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    cv.imwrite(imgpath,gray, [cv.IMWRITE_PNG_COMPRESSION, 0])

3、进入正负样本数据集、制作图片路径txt文件

dir /b/s/p/w *.jpg > pos.txt
#当前目录所有文件夹绝对路径保存到pos.txt中。或使用下面4中的方法制作txt说明文件。

4、为txt文件中的路径添加后缀1 0 0 224 224,后两位为正样本图片尺寸

path='*/”图片文件路径”'
for img in os.listdir(path):
    line = path+img+' 1 0 0 224 224\n'
    with open('pos.txt','a') as f:
        f.write(line)

5、生成vec文件,

opencv_createsamples.exe -info pos.txt -vec pos.vec -bg neg.txt -num 299 -w 20 -h 20

参数:
-info:样本说明文件
-vec:描述文件的名字及路径
-num:正样本数
-w -h:样本缩放尺寸。

6、训练

opencv_traincascade.exe -data xml -vec pos.vec -bg neg.txt -numPos 200 -numNeg 700 
-numStages 50 -featureType HAAR -w 20 -h 20

参数:
-data:存放训练好的xml文件的文件夹,需提前创建
-vec:正样本vec文件路径
-bg:负样本neg.txt说明文件路径
-numPos:正样本的数量
-numNeg:负样本的数量
-numStages:训练步数
-featureTyp:特征类型,HAAR最常用
-w -h 是正样本的宽高
-minHitRate:最小命中率,即分类器每一级希望得到的最小检测率。本文希望分类器每一级得到的最小检测率是0.9999
-maxFalseAlarmRate :分类器每一级希望得到的最小误检率。本文希望分类器每一级得到的最小检测率是0.5。影响每个强分类器中弱分类器的个数,设置的如果较大,每级可以滤除负样本的比例就会较小,这样就在测试过程中虚警率就较高;如果设置的较小,每级强分类器中弱分类器的个数就较多,检测的时间就会相对要长。
-All:会加载所有的Haar特征模板

7、测试、读取训练好的参数进行测试

CASE:
(1)出现报错:Traincascade Error: Bad argument (Can not get new positive sample. The most possible reason is insufficient count of samples in given vec-file.)

分析原因:设置的numPos太大,因为POS_count会随着设置的numPos正样本数增加而增加,每个级别都会按照一定的顺序增加。 以后可能超过样本库中的所有正样本数,就会报这个错误。为了避免opencv报错,在使用opencv_traincascade.exe时,-numPos应该比实际的正样本数略低。 比如如果有2100的正样本,可以设置numpos为1900-2000

(2) 每次修改参数重新训练需将之前训练保存的xml文件移除。

(3) 支持断点训练,若模型未移除,可输入同样代码从上次训练停止步数numStages开始训练。
(4) 训练到最后分类器总是卡到某一层就不在继续进行,当剩下所有的negtive样本在临时的cascade Classifier中evaluate的结果都是0(也就是拒绝了),随机取样本的数目到几百万都是找不到误检测的neg样本了,因而没法跳出循环!
解决方法是,增大负样本数目,增大负样本之间的变化!P.S. 因为负样本原则应该是数量越多而且越具多样性越好,这在现实中是不可行的,所以我们采集的负样本一般无论从数量上还是多样性上都很难满足要求,所以出现上述问题就很正常了,不过此时的分类器已经完全额、可以使用,因为它的误检率已经很低,从实用性上时没有任何问题的。
参考链接:
https://www.jianshu.com/p/e35260f7cbf0?

HbuilderX

H5+,Uniapp调试打包软件,不多赘述,傻瓜式安装,然后打开项目即可。

二、Demo(一个简单的级联分类器识别人脸图片项目)

源码来自opencv.js官网的Demo,这里稍微对其进行简单的修改成Hbuilder项目,一个图像检测,一个视频流,然后测试到打包成app到手机上
项目地址:https://github.com/sk8boi/OpencvJSDemo.git
图片检测

总结

很多二分类的图像识别任务不用想着立马上神经网络,可以用简单的级联分类器解决。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:04:57  更:2022-08-19 19:07:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:45:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码