基于 Adaboost 算法的人脸检测分类器!

【人脸识别(五)】:基于Haar+Adaboost的人脸检测算法,及实例教程 看了很多的文章,认为liulina603和nk_wavelet对adaboost算法讲解的比较详细,查阅相关资料后,本文将介绍haar+adaboost算法理论和具体实现。 adaboost由来 adaboost方法是Boosting方法的提升版,Boosting方法又起源于PCA学习模型。1984年Valiant提出PCA模型,1990年,SChapire就首先构造出一种多项式级的算法,将弱... 阅读详情

人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的研究方向发展起来。

目前人脸检测的方法主要有两大类:基于知识和基于统计。

  • 基于知识的方法:主要利用先验知识将人脸看作器官特征的组合,根据眼睛、眉毛、嘴巴、鼻子等器官的特征以及相互之间的几何位置关系来检测人脸。主要包括模板匹配、人脸特征、形状与边缘、纹理特性、颜色特征等方法。

  • 基于统计的方法:将人脸看作一个整体的模式:二维像素矩阵,从统计的观点通过大量人脸图像样本构造人脸模式空间,根据相似度量来判断人脸是否存在。主要包括主成分分析与特征脸、神经网络方法、支持向量机、隐马尔可夫模型、Adaboost算法等。

本文主要基于统计的方法,通过Adaboost算法和Haar特征来构建Haar分类器,对人脸和非人脸进行分类。

本文目录

    1. 算法要点

        1.1. Haar分类器训练步骤

        1.2. Haar的局限性

    2. Haar原理解析

        2.1. Haar特征

        2.2. 积分图构建

        2.3. 计算Haar特征值

        2.4. Haar特征归一化

        2.5. 级联分类器

    3. 人脸检测案例

        3.1. 人脸检测

        3.2. 人脸检测+人眼检测

        3.3. 调用摄像头的动态人脸检测

一、算法要点

1.1 Haar分类器训练步骤

Haar分类器=Haar特征+积分图方法+Adaboost+级联。

其训练的五大步骤:

  1. 准备人脸、非人脸样本集;

  2. 使用Haar特征做检测;

  3. 使用积分图(Integral Image)对Haar特征求值进行加速;

  4. 使用AdaBoost算法训练区分人脸和非人脸的强分类器;

  5. 使用筛选式级联把强分类器级联到一起,提高准确率

具体步骤在第2节中会详细介绍。

1.2 Haar的局限性

  • 仅为人脸检测,非人脸“辩识”,即只能框出人脸的位置,看不出人脸是谁。

  • 仅能标出静态图片和视频帧上的人脸、人眼和微笑,不能进行“活体识别”,即不能看出这张脸是真人还是手机上的照片,如果用于人脸打卡签到、人脸支付的话会带来潜在的安全风险。

  • 仅为普通的机器学习方法,没有用到深度学习和深层神经网络。

二、Haar原理解析

2.1 Haar特征

Haar特征包含三种:边缘特征、线性特征、中心特征和对角线特征。每种分类器都从图片中提取出对应的特征。有点类似于卷积神经网络中的卷积核,每个卷积核提取出对应的特征。

我们最基础的卷积核(划掉),哦不haar特征为下图中的Basic Haar Set:

我们通常将Haar特征分为以下三类,我们根据名字就可以分辨出这三类的用途:

  • 第一类是边缘特征:

  • 第二类是线性特征:

  • 第三类是中心特征:

特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。Haar特征值反映了图像的灰度变化情况。

例如:脸部的一些特征能由矩形特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述特定走向(水平、垂直、对角)的结构。由于有时候人脸未必是定向的,可能是会有歪曲的,因此我们可以训练旋转一定角度的矩形特征来识别人脸。

总而言之,Haar特征就是利用一些固定的特征来模拟人脸中的相关特征。

矩形特征可位于图像任意位置,大小也可以任意改变,所以矩形特征值是矩形模版类别、矩形位置和矩形大小这三个因素的函数。故类别、大小和位置的变化,使得很小的检测窗口含有非常多的矩形特征,如:在24*24像素大小的检测窗口内矩形特征数量可以达到16万个。这样就有两个问题需要解决了:

(1)如何快速计算那么多的特征?---积分图大显神通;

(2)哪些矩形特征才是对分类器分类最有效的?---如通过AdaBoost算法来训练。

2.2 积分图构建

在一个图像窗口中,可以提取出大量的Haar矩形特征区域,如果在计算Haar特征值时,每次都遍历矩形特征区域,将会造成大量重复计算,严重浪费时间。积分图是一种快速计算矩形特征的方法,主要思想是将图像起始像素点到每一个像素点之间所形成的矩形区域的像素值的和,作为一个元素保存下来,即将原始图像转换为积分图(或者求和图),当求某一矩形区域的像素和时,只需要索引矩形区域4个角点在积分图中的取值,进行普通的加减运算,即可求得Haar特征值,整个过程只需遍历一次图像,计算特征的时间复杂度为常数(O(1)),可以大大提升计算效率。积分图中元素的公式定义如下:

上式含义是在位置处,积分图中元素为原图像中对应像素左上角所有像素值之和,表示一个积分图像。在具体实现时,可用下式进行迭代运算:

其中是行方向的累加和,初始值,但这个公式不是很好(为什么?),一个比较好的替代是下面这个公式:

2.3 计算Haar特征值

2.3.1 矩形特征

构建好积分图后,图像中任何矩形区域的像素值累加和都可以通过简单的加减运算快速得到,如下图所示,矩形区域D的像素和值计算公式如下:

矩形区域求和示意图 在下图中,以水平向右为轴正方向,垂直向下为轴正方向,可定义积分图公式Summed Area Table:

以及迭代求解式

对于左上角坐标为宽高为的矩形区域可利用积分图求取像素和值

2.3.2 旋转矩形特征

对于旋转矩形特征,相应的有°倾斜积分图用于快速计算Haar特征值,如下图所示,倾斜积分图的定义为像素点左上角°区域和左下角°区域的像素和,公式表示如下:

其递推公式计算如下:

其中

也可直接通过下式递归计算:

以上3个积分图计算公式是等价的。

如下图所示,构建好倾斜积分图后,可快速计算倾斜矩形区域的像素和值

2.3.3 举个例子 

了解了特征值的计算之后,我们来看看不同的特征值的含义是什么。我们选取MIT人脸库中2706个大小为的人脸正样本图像,计算如下图所示的Haar特征:

左边对应的人眼区域,右边无具体意义。

可以看到,图中2个不同Haar特征在同一组样本中具有不同的特征值分布,左边特征计算出的特征值基本都大于0(对样本的区分度大),而右边特征的特征值基本均匀分布于0两侧(对样本的区分度小)。所以,正是由于样本中Haar特征值分布不均匀,导致了不同Haar特征分类效果不同。显而易见,对正负样本区分度越大的特征分类效果越好,即红色曲线对应图中的的左边Haar特征分类效果好于右边Haar特征。

那么看到这里,应该理解了下面2个问题:

  1. 在检测窗口通过平移+缩放可以产生一系列Haar特征,这些特征由于位置和大小不同,分类效果也不同;

  2. 通过计算Haar特征的特征值,可以有将图像矩阵映射为1维特征值,有效实现了降维。

2.4 Haar特征归一化

从上图我们可以发现,仅仅一个维大小的Haar特征计算出的特征值变化范围从,跨度非常大。这种跨度大的特性不利于量化评定特征值,所以需要进行“归一化”,压缩特征值范围。假设当前检测窗口中的图像像素为,当前检测窗口为大小(例如上图中为2020大小),OpenCV采用如下方式“归一化”:

  • 计算检测窗口中图像的灰度值和灰度值平方和:

  • 计算平均值:

  • 计算归一化因子:

  • 归一化特征值:之后使用归一化的特征值与阈值对比。

2.5 级联

2.5.1 白话解释

这里我们并不打算详细阐述AdaBoost的完整工作机制以及一些更细节的部分,我们将从宏观层面来看级联的流程。

基于Haar特征的cascade级联分类器是Paul Viola和 Michael Jone在2001年的论文”Rapid Object Detection using a Boosted Cascade of Simple Features”中提出的一种有效的物体检测方法。

Cascade级联分类器的训练方法:Adaboost

级联分类器的函数是通过大量带人脸和不带人脸的图片通过机器学习得到的。对于人脸识别来说,需要几万个特征,通过机器学习找出人脸分类效果最好、错误率最小的特征。训练开始时,所有训练集中的图片具有相同的权重,对于被分类错误的图片,提升权重,重新计算出新的错误率和新的权重。直到错误率或迭代次数达到要求。这种方法叫做Adaboost,在Opencv中可以直接调用级联分类器函数。

将弱分类器聚合成强分类器

最终的分类器是这些弱分类器的加权和。之所以称之为弱分类器是因为每个分类器不能单独分类图片,但是将他们聚集起来就形成了强分类器。论文表明,只需要200个特征的分类器在检测中的精确度达到了95%。最终的分类器大约有6000个特征。(将超过160000个特征减小到6000个,这是非常大的进步了)。

级联的含义:需过五关斩六将才能被提取出来

事实上,一张图片绝大部分的区域都不是人脸。如果对一张图片的每个角落都提取6000个特征,将会浪费巨量的计算资源。

如果能找到一个简单的方法能够检测某个窗口是不是人脸区域,如果该窗口不是人脸区域,那么就只看一眼便直接跳过,也就不用进行后续处理了,这样就能集中精力判别那些可能是人脸的区域。为此,有人引入了Cascade 分类器。它不是将6000个特征都用在一个窗口,而是将特征分为不同的阶段,然后一个阶段一个阶段的应用这些特征(通常情况下,前几个阶段只有很少量的特征)。如果窗口在第一个阶段就检测失败了,那么就直接舍弃它,无需考虑剩下的特征。如果检测通过,则考虑第二阶段的特征并继续处理。如果所有阶段的都通过了,那么这个窗口就是人脸区域。作者的检测器将6000+的特征分为了38个阶段,前五个阶段分别有1,10,25,25,50个特征(前文图中提到的识别眼睛和鼻梁的两个特征实际上是Adaboost中得到的最好的两个特征)。根据作者所述,平均每个子窗口只需要使用6000+个特征中的10个左右。

简单地说,在进行人脸检测的过程中,需要使用一个强分类器,且其由多个弱分类器组成。那么其中的每个弱分类器都只包含一个Haar特征。每个分类器都将确定一个阈值,如果某区域的处理差值小于该阈值,则被归为负类,反之则进行下一级的弱分类,最终经过多个弱分类器后,可完成检测。其分类过程如下图所示:

2.5.2 举个例子

1. 首先,对于一幅图像,它可能存在K个面部特征,假设这些面部特征可以用来区分眼睛、眉毛、鼻子、嘴等特征。

2. 确定一些超参数,如滑动窗口的大小,及窗口的移动步长。窗口从上往下,从左向右地滑动。在滑动的过程中,每次都可以计算出一个数值$K$。

3. 滑动结束时,将得到的特征值进行排序,并选取一个最佳特征值(最优阈值),使得在该特征值下,对于该特征而言,样本的加权错误率最低。这样就训练出了一个弱分类器。

4. 因为面部特征的不同,我们将采用不同的滑动窗口进行特征提取。所以根据不同的窗口识别不同的特征,进而训练出了不同的弱分类器。

5. 对于每个弱分类器都将计算它的错误率,选择错误率最低的K个弱分类器,组合成强分类器。

6. 一组样本投入强分类器后,在每个渐进的阶段,分类器逐渐在较少的图像窗口上使用更多的特征(负类被丢弃)。如果某个矩形区域在所有弱分类器中都被归结为正类,那么可以认为该区域是存在人脸的。

其中,弱分类器训练的具体步骤如下:

1. 对于每个特征,计算所有训练样本的特征值,并将其排序:

2. 扫描一遍排好序的特征值,对排好序的表中的每个元素,计算下面四个值:

  • 计算全部正例的权重和;

  • 计算全部负例的权重和;

  • 计算该元素前之前的正例的权重和;

  • 计算该元素前之前的负例的权重和

3. 选取当前元素的特征值和它前面的一个特征值之间的数作为阈值,所得到的弱分类器就在当前元素处把样本分开 —— 也就是说这个阈值对应的弱分类器将当前元素前的所有元素分为人脸(或非人脸),而把当前元素后(含)的所有元素分为非人脸(或人脸)。该阈值的分类误差为:

于是,通过把这个排序表从头到尾扫描一遍就可以为弱分类器选择使分类误差最小的阈值(最优阈值),也就是选取了一个最佳弱分类器。

三、人脸检测例子

3.1 人脸检测

在开始介绍Haar特征描述算子之前,为了便于理解,我们直接看具体怎么通过opencv调用训练好的haar模型,从而实现人脸识别。首先Mark一下一些已经训练好的haar的模型,可以直接下载,里面包含了多种人类特征检测的训练模型,包括脸、身体、眼睛、笑脸等,链接戳我。

我们打开的github链接长这样:

我们下载其中一个作为示例(点Raw后下载网页)。然后我们导入待识别图:

执行以下代码,即可获得人脸检测的结果:

img = cv2.imread("Pic/1.jpg")


face_engine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')


faces = face_engine.detectMultiScale(img,scaleFactor=1.3,minNeighbors=5)


for (x,y,w,h) in faces:
   img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)


cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

检测结果不负众望:

我们留意到以上代码的face_engine步骤,其作用是导入人脸级联分类器引擎,'.xml'文件里包含训练出来的人脸特征。随后用人脸级联分类器引擎进行人脸识别,返回的faces为人脸坐标列表,1.3是放大比例,5是重复识别次数。

3.2 人脸检测和人眼检测

我们也可以尝试前面xml文件中的人眼检测:

#导入opencv
import cv2


# 导入人脸级联分类器引擎,'.xml'文件里包含训练出来的人脸特征,cv2.data.haarcascades即为存放所有级联分类器模型文件的目录
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')
# 导入人眼级联分类器引擎吗,'.xml'文件里包含训练出来的人眼特征
eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_eye.xml')


# 读入一张图片,引号里为图片的路径,需要你自己手动设置
img = cv2.imread('image3.png')


# 用人脸级联分类器引擎进行人脸识别,返回的faces为人脸坐标列表,1.3是放大比例,5是重复识别次数
faces = face_cascade.detectMultiScale(img, 1.3, 5)


# 对每一张脸,进行如下操作
for (x,y,w,h) in faces:
   # 画出人脸框,蓝色(BGR色彩体系),画笔宽度为2
   img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
   # 框选出人脸区域,在人脸区域而不是全图中进行人眼检测,节省计算资源
   face_area = img[y:y+h, x:x+w]
   eyes = eye_cascade.detectMultiScale(face_area)
   # 用人眼级联分类器引擎在人脸区域进行人眼识别,返回的eyes为眼睛坐标列表
   for (ex,ey,ew,eh) in eyes:
       #画出人眼框,绿色,画笔宽度为1
       cv2.rectangle(face_area,(ex,ey),(ex+ew,ey+eh),(0,255,0),1)


# 在"img2"窗口中展示效果图
cv2.imshow('img2',img)
# 监听键盘上任何按键,如有案件即退出并关闭窗口,并将图片保存为output.jpg
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('output.jpg',img)

上面的代码最值得注意的就是face_area = img[y:y+h, x:x+w],这一步会将人脸区域框出来,在其中执行人眼检测。同样对上图进行检测,结果如下:

3.3 调用电脑摄像头进行实时人脸识别和人眼识别

import cv2


face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')


eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_eye.xml')
# 调用摄像头摄像头
cap = cv2.VideoCapture(0)


while(True):
   # 获取摄像头拍摄到的画面
   ret, frame = cap.read()
   faces = face_cascade.detectMultiScale(frame, 1.3, 5)
   img = frame
   for (x,y,w,h) in faces:
  # 画出人脸框,蓝色,画笔宽度微
       img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
  # 框选出人脸区域,在人脸区域而不是全图中进行人眼检测,节省计算资源
       face_area = img[y:y+h, x:x+w]
       eyes = eye_cascade.detectMultiScale(face_area)
  # 用人眼级联分类器引擎在人脸区域进行人眼识别,返回的eyes为眼睛坐标列表
       for (ex,ey,ew,eh) in eyes:
           #画出人眼框,绿色,画笔宽度为1
           cv2.rectangle(face_area,(ex,ey),(ex+ew,ey+eh),(0,255,0),1)


# 实时展示效果画面
   cv2.imshow('frame2',img)
   # 每5毫秒监听一次键盘动作
   if cv2.waitKey(5) & 0xFF == ord('q'):
       break


# 最后,关闭所有窗口
cap.release()
cv2.destroyAllWindows()

【人脸检测】Haar分类器原理2——AdaBoost级联分类器 Haar分类器使用AdaBoost算法,但是把它组织为筛选式的级联分类器,每个节点是多个树构成的分类器,且每个节点的正确识别率很高。在任一级计算中,一旦获得“不在类别中”的结论,则计算终止。只有通过分类器中所有级别,才会认为物体被检测到。这样的优点是当目标出现频率较低的时候(即人脸在图像中所占比例小时),筛选式的级联分类器可以显著地降低计算量,因为大部分被检测的区域可以很早被筛选掉,迅速判断该区域没有要求被检测的物体。 阅读详情

相关推荐

基于AdaBoost的人脸检测 含源码

需要完整源码 联系我QQ 1752744377@qq.com 基于AdaBoost的人脸检测 一 、实验目的   掌握利用AdaBoost及级联分类器进行人脸检测的基本方法,通过实验加深对基本概念的理解。 二 实验原理 人脸检测是指对于任意一幅给定的图像,采用一定的策略对其进行搜索以确定其中是否含有人脸,如果是则返回人脸的位置、大小和姿态。 Adaboost核心思想是通过训练分类器得到检测的目的...

majiawenzzz的博客 5665

基于Adaboost算法的人脸检测分类器!

↑↑↑关注后"星标"Datawhale每日干货&每月组队学习,不错过Datawhale干货作者:陈锴,Datawhale优秀学习者,中山大学数学系人脸检测...

Datawhale 4186

【OpenCV】基于Adaboost和Haar-like特征人脸识别

毕设算是告一段落,里面用了一点点人脸识别,其实完全是OpenCV自带的,源自两篇论文: P. Viola and M. Jones.  Rapid object detection using a boosted cascade of simple features. R. Lienhart and J. Maydt.  An Extended Set of Haar-like Feature

小魏的修行路 4万+

Adaboost算法详解(haar人脸检测)

转自:https://wizardforcel.gitbooks.io/dm-algo-top10/content/adaboost.html(脸书动不动上不去故转载)(主要看adaboost的例子、公式) 数据挖掘算法学习(八)Adaboost算法(例子好) 来源:http://blog.youkuaiyun.com/iemyxie/article/details/40423907 Adabo

linux嵌入式 - 虚拟机 主机Ping不通,即虚拟机不可上网问题解决方法 1万+

【一起学】实时人脸识别项目(5)Adaboost人脸检测

一起学栏目文章——实时人脸识别项目。作者每周更新栏目文章,和读者一起从原理剖析到代码实践,完整实现实时人脸识别项目。

weixin_73120575的博客 1073

Adaboost 人脸检测基本原理

Adaboost 人脸检测基本原理1. 1  特征的选取及特征值的计算  在人脸检测过程中,需要对候选图像进行分析,判断是否为人脸,多数人脸检测系统都是使用特征对人脸模式进行建模,这些特征都应有一定的人脸和非人脸区分性. Adaboost 用于人脸检测时,需要从人脸中抽取大量的简单特征. 本检测器选择由Rain2er Lienhart [2 ]等人提出的扩展的Haar2like 特征,如图1~3

Embed98 3888

人脸检测--基于Adaboost算法的实现

毕设的时候,做了基于肤色特征的人脸检测之后,通过肤色建模和肤色分割发现检测率并没有预想中的那么好,于是为了提高人脸检测的效率,对基于肤色特征的人脸检测算法那进行了改进,也就是基于模板匹配的人脸检测算法:以下两篇是人脸检测实现的两篇博客,当然也是从自己的毕设论文中搬出来共享给大家的: 1、人脸检测---基于肤色检测的实现 2、人脸检测-基于模板匹配的实现 这两种方法都是基于肤色特征实现的,

我只是一个单纯的2的博客 2万+

人脸检测——基于机器学习3】AdaBoost算法

AdaBoost算法中弱分类器可以是任何分类器,包括决策树,神经网络等等。弱分类器的分类正确率一般不需要太高,只需要比随机猜测稍好,超过50%即可。大部分文献及开源代码都选择了决策树作为弱分类器。

liuyuehui的专栏 1507

AdaBoost中利用Haar特征进行人脸识别算法分析与总结2——级联分类器与检测过程

上一篇连接:http://blog.youkuaiyun.com/weixingstudio/article/details/7631241   1. 弱分类器 在确定了训练子窗口中的矩形特征数量和特征值后,需要对每一个特征f ,训练一个弱分类器h(x,f,p,O) 。 在优快云里编辑公式太困难了,所以这里和公式有关的都用截图了。 特别说明:在前期准备训练样本的时候,需要将样本

Work Hard, Play Harder! 4万+

动态实时车牌追踪识别 - Python 完整代码分享

然后,我们需要加载一个预训练的车辆检测模型。在这里,我们将使用 OpenCV 提供的 Haar 特征分类器来检测车辆。在开始之前,请确保您已经安装了以下 Python 库:OpenCV、Numpy 和 Pytesseract。在本文中,我将为您提供一份完整的 Python 代码,用于实现动态实时车牌追踪和识别。这个项目可以帮助您从视频流中检测和识别车辆的车牌号码。这就是完整的动态实时车牌追踪识别的 Python 代码。现在,我们可以开始实时视频处理。接下来,我们将逐步介绍实现动态实时车牌追踪识别的代码。

KsClang的博客 424

LAMMPS实战指南 - 从in文件到分子动力学模拟的完整流程解析

本文详细解析了LAMMPS分子动力学模拟的完整流程,从理解in文件的核心作用与基础结构开始,逐步指导如何创建模拟体系、选择势函数、进行能量最小化与初始化,并深入讲解了NVT/NPT系综弛豫与生产模拟的关键步骤。文章还提供了常见问题的避坑指南与实战技巧,帮助初学者快速掌握从编写in文件到成功运行模拟的全过程。

weixin_28365523的博客 395

人脸检测:经典的VJ人脸检测器(类Harr特征,积分图加速法,级联的Adaboost强分类器)

著名的VJ人脸检测算法就是一种基于Adaboost分类器的方法。该检测器由Paul Viola和Michael Jones在2001年的提出。在当年的硬件条件下VJ算法可以达到每秒15帧图像的处理速度,是人脸检测技术发展的一个里程碑。虽然性能跟现在基于深度学习的方法没法比,但肯定也是值得去拜读的。

kill2013110的博客 3299

ROS 入门教程:小乌龟仿真器和基础操作

小乌龟仿真器和ros基础操作

zlflll的博客 4125

基于Adaboost的人脸检测算法

AdaBoost算法是一种自适应的Boosting算法,基本思想是选取若干弱分类器,组合成强分类器。根据人脸的灰度分布特征,AdaBoost选用了Haar特征[38]。AdaBoost分类器的构造过程如图2-4所示。 图2-4 Adaboost分类器的构造过程 1)Haar-like矩形特征 Haar-like矩形特征是根据图像的区域灰度对比特性进行设计的,常用的Haar-like特征[3

Studying…… 8670

企业级智能问数开发的核心痛点与技术聚焦

本文介绍了企业级智能问数系统开发的三大核心问题和解决方案:语义解析不精准、SQL生成不健壮、企业适配难落地。文章从开发者视角出发,详细拆解了NLU语义解析、SQL生成、对话记忆、企业级适配四大核心模块的技术实现。 在技术选型方面,推荐了LangChain+DeepSeek-R1、FAISS/Milvus、SQLAlchemy等工具链组合。针对企业级需求,重点讲解了: 语义解析模块的意图识别优化和要素提取技术 SQL生成模块的语法校验与性能优化方案 对话记忆模块的Redis存储实现 企业级适配的三层防护体系和

lamehsl的专栏 1047

机器学习预测材料性能:从特征工程到SHAP可解释性分析

机器学习在材料科学中的应用,核心在于将复杂的材料性能预测问题转化为数据驱动的建模任务。其基本原理是通过算法从历史数据中学习特征与目标属性之间的映射关系。这项技术的价值在于能够大幅加速新材料的发现与设计周期,降低传统“试错法”的高昂成本。在工程实践中,它广泛应用于预测如形成能、带隙、弹性模量以及居里温度等关键材料性能。具体到磁性材料领域,居里温度的准确预测对于永磁体和自旋电子器件设计至关重要。本项目深入探讨了如何利用特征工程从材料成分与结构中构建有效描述符,并借助SHAP这一可解释性工具,揭示模型决策背后的物

weixin_27155667的博客 650

Haar人脸检测:Haar特征 + Adaboost+ 级联分类器及改进

前言 最近准备开始系统的学习AI,之前都是零零散散的在用一些SVM这些,对其架构原理一知半解 所以最近找了一些资料准备开始慢慢深入 备注:部分内容包括图片有些是其他资料里来的 目的: 1.Haar的实现原理以及cascade分类器(classifiers) 的介绍 2.cascade分类器与Adaboost的关系 Haar原理: 1.人脸区域的特征提取 以Haar特征分类器为基础的对象检测技术是一种非常有效的对象检测技术,多用于人脸检测、行人检测等。Haar-like特征是计算机视...

mcu旺仔acm的博客 2393

Sony微单相机alpha6000 wifi远程控制(1)

引言 Sony’s Camera Remote API beta SDK allows you to control a number of Sony cameras, including Sony Action cams, Sony Alpha cameras and Lens Style cameras, wirelessly from another device. 索尼于2017年三月Re...

markfuk996的博客 4966

AdaBoost人脸检测训练算法 (上)

前在实际中应用的人脸检测方法多为基于Adaboost学习算法的方法,这种检测方法最初由剑桥大学的两位大牛Paul Viola和Michael Jones[ViolaJones01]提出,并由另一位大牛英特尔公司的Rainer Lienhart[Lienhart02]对这一方法进行了改善。这里,我先介绍ViolaJones的人脸检测方法,然后再介绍Lienhart的人脸检测算法。我们可以发现

超越梦想的专栏 2万+

基于 YOLOv8 的自动驾驶车辆障碍物检测与避障路径规划

本文探讨基于YOLOv8的自动驾驶车辆障碍物检测与避障路径规划系统。在感知层面,采用YOLOv8模型实现多类别障碍物识别,结合单目视觉距离估计和ByteTrack多目标跟踪算法,完成障碍物的稳定检测与运动状态估计。在路径规划层面,设计分层规划架构,融合全局路径规划与局部避障算法,重点实现Frenet坐标系下的采样优化算法和基于模型预测控制的实时避障轨迹生成。通过完整的代码实现与仿真实验,验证系统在复杂交通场景下的有效性与实时性,为自动驾驶开发者提供从理论到实践的完整技术参考。 关键词:YOLOv8;自动驾驶

huanghm88的专栏 249

C# + NAudio:构建支持实时音频处理的语音聊天应用(含回声消除)

本文介绍了如何利用C#和NAudio库开发实时语音聊天应用,重点实现回声消除功能。首先概述了NAudio库在音频处理中的作用,包括音频录制、播放和实时处理能力。然后详细讲解了构建基础语音聊天应用的过程,包括麦克风录制和扬声器播放的实现。接着深入探讨了回声消除的原理和实现方法,提出通过比较麦克风输入和扬声器输出的音频信号来消除回声,并给出了核心代码示例。最后,文章还讨论了性能优化方向,如多线程处理和网络传输扩展。该方案为开发高质量实时语音应用提供了实用参考。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1011

Adaboost 人脸检测:Haar特征及积分图、分类器的级联

日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Haar-like 特征可以分为边缘特征、中心特征、对 角线特征以及线性特征。 (a)即为边缘特征,其用于检测目标图像在边缘上 的变化信息,如人脸边缘与背景的灰度变化,人 头发与人脸额头之间的灰度变化等; (b)即为线性特征,其用于检测目标图像在水平以 及垂直方向上的变化信息,如人的鼻梁两侧肤色 要比鼻梁上的颜色深等; (c)即为中心特征和.

あずにゃん梓喵的博客 4424

深度解析与实战:长短时记忆网络(LSTM)在股票走势预测中的应用(基于Python + PyTorch)

本文全面探讨了LSTM在股票价格预测中的应用,从理论基础到实践操作。文章首先强调了股票市场预测的重要性,并介绍了LSTM网络结构及其在处理时间序列数据中的优势。接着,详细说明了数据预处理的关键步骤,包括数据收集、清洗、特征选择和归一化。文章还讨论了LSTM模型的构建、训练和评估,并提供了Python及PyTorch的实操案例。最后,总结了LSTM在股票预测的成果,并提出了未来研究的方向,如模型优化和特征工程,旨在帮助读者掌握LSTM在股票价格预测中的应用,并探索提升模型性能的方法。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2101

AdaBoost人脸检测训练算法 (中)

(3)采用AdaBoost算法选取优化的弱分类器 通过Adaboost算法挑选数千个有效的haar特征来组成人脸检测器,Adaboost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,对于h1分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突出出来,从而得到一个新的样本分布U2。在新的样本分布下,再次

超越梦想的专栏 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 整理了 25 个 Pandas 实用技巧,拿走不谢!
下一篇: 建议你吃透这68个内置函数!
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值