日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > pytorch >内容正文

pytorch

06-机器学习(Haar+Adaboost实现人脸、人眼检测)

發(fā)布時(shí)間:2023/12/1 pytorch 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 06-机器学习(Haar+Adaboost实现人脸、人眼检测) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

機(jī)器學(xué)習(xí)是什么?
機(jī)器學(xué)習(xí)=訓(xùn)練樣本+特征+分類器,通過讓機(jī)器學(xué)習(xí)的方式,來(lái)達(dá)到某種功能的過程
深度學(xué)習(xí)是什么?
深度學(xué)習(xí)=海量的學(xué)習(xí)樣本+人工神經(jīng)網(wǎng)絡(luò)

機(jī)器學(xué)習(xí)需要:樣本、特征、分類器、對(duì)訓(xùn)練后的數(shù)據(jù)進(jìn)行預(yù)測(cè)或檢驗(yàn)
人臉樣本+haar特征+adaboost分類器===>就可以實(shí)現(xiàn)人臉識(shí)別
haar是由一系列模板組成
adaboost分類器是由三級(jí)極點(diǎn)組成,(強(qiáng)分類器、弱分類器、node結(jié)點(diǎn))組成

hog特征+svm支持向量機(jī)===>實(shí)現(xiàn)小獅子的識(shí)別

一、視頻分解圖片

實(shí)現(xiàn)步驟:
1,將視頻加載進(jìn)去load
2,讀取視頻的info信息
3,對(duì)視頻信息進(jìn)行解碼parse,拿到單幀視頻
4,可以通過imshow進(jìn)行展示,也可以通過imwrite進(jìn)行保存

(flag,frame) = cap.read()
讀取每一幀,人眼可分辨每秒看到16幀
參數(shù)一:flag表示讀取是否成功
參數(shù)二:frame表示圖片的內(nèi)容

將1.mp4視頻文件分解成圖片

import cv2 cap = cv2.VideoCapture("E:\Jupyter_workspace\study\DL\data/1.mp4")# 獲取一個(gè)視頻打開cap 1 file name isOpened = cap.isOpened# 判斷是否打開‘ print(isOpened) fps = cap.get(cv2.CAP_PROP_FPS)#幀率:視頻每秒可以展示的圖片 width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#視頻的寬度信息 height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#視頻的高度信息 print(fps,width,height) i = 0 while(isOpened):if i == 10:breakelse:i = i+1(flag,frame) = cap.read()# 讀取每一張 flag frame fileName = 'E:\Jupyter_workspace\study\DL\data/image'+str(i)+'.jpg'print(fileName)if flag == True:cv2.imwrite(fileName,frame,[cv2.IMWRITE_JPEG_QUALITY,100]) print('end!')

二、圖片合成視頻

將視頻寫入進(jìn)去,對(duì)寫入對(duì)象的創(chuàng)建
cv2.VideoWriter('2.mp4',-1,5,size)
參數(shù)一:圖片合成視頻
參數(shù)二:-1表示使用一個(gè)支持的解碼器
參數(shù)三:每秒處理的幀數(shù),5幀
參數(shù)四:圖片視頻格式的大小

將一系列imagei(1<i<10)圖片合成2.mp4視頻

import cv2 img = cv2.imread('E:\Jupyter_workspace\study\DL\data/image1.jpg') imgInfo = img.shape size = (imgInfo[1],imgInfo[0]) print(size) videoWrite = cv2.VideoWriter('2.mp4',-1,5,size)# 寫入對(duì)象 1 file name # 2 編碼器 3 幀率 4 size for i in range(1,11):fileName = 'E:\Jupyter_workspace\study\DL\data/image'+str(i)+'.jpg'img = cv2.imread(fileName)videoWrite.write(img) print('end!')

三、Haar特征原理

什么是Haar特征?
特征:圖像某個(gè)區(qū)域的像素點(diǎn),經(jīng)過某種四則運(yùn)算之后得到的結(jié)果,言而與之:像素進(jìn)行運(yùn)算所得到的結(jié)果;這個(gè)結(jié)果有可能是一個(gè)具體的值、向量、矩陣、多維

Haar是個(gè)具體的值,是經(jīng)過白色方塊和黑色方塊之后相減得到的,故Haar特征得到的是一個(gè)值

如何利用特征區(qū)分目標(biāo)?
通過閾值判決

如何得到判決?
通過機(jī)器學(xué)習(xí)得到判決文獻(xiàn),讓機(jī)器知道什么是特征;通過機(jī)器學(xué)習(xí)獲取判決;利用計(jì)算的特征獲得閾值判決

計(jì)算公式:

特征=白色-黑色
特征=整個(gè)區(qū)域權(quán)重 + 黑色權(quán)重
特征=(p1-p2-p3+p4)*w

推導(dǎo)Haar特征公式:
黑色和白色的整體權(quán)重為-1;白色部分的權(quán)重值為1,黑色部分的權(quán)重值為-2
特征 = 整個(gè)區(qū)域 * 權(quán)重1 + 黑色 * 權(quán)重2 = (黑+白)* 1 + 黑 * (-2) = 黑+白 - 2 * 黑 = 白-黑

四、Haar特征遍歷原理

需要將haar模板從上到下,從左到右進(jìn)行遍歷,也需要知道圖片的大小以及模板的大小,若原圖像大小為100100,harr模板大小為1010,則需要100次才可以將整個(gè)圖片遍歷完畢
原圖100100 模板1010 步長(zhǎng)10 使用模板滑動(dòng)
模板不僅可以進(jìn)行滑動(dòng),還可以進(jìn)行模板的縮放;例如原先的模板為1010,每次縮放10%,則下次的模板大小為1111,若為20級(jí),則進(jìn)行20次的縮放
舉例:原圖像為1080720大小,模板步長(zhǎng)step為2,原始模板大小為1010
要想計(jì)算整個(gè)圖像上的haar特征當(dāng)前的計(jì)算量為:14(14個(gè)模板) * 20(20級(jí)縮放,也就是20次縮放) * (1080/2 * 720/2)(需要這么多的模板) * (10 * 10這一百個(gè)點(diǎn)的加減運(yùn)算) = 50-100億次的運(yùn)算
若要求計(jì)算機(jī)處理每秒不得低于15幀,則 50-100億次 * 15 = 基本上為1000億次的運(yùn)算量,故運(yùn)算量太大,國(guó)外有個(gè)大神研究出了積分圖的概念,可以極大的減小運(yùn)算量。

五、積分圖


A為1,B為1 2,C為1 3,D為1 2 3 4
若求第4部分 = A-B-C+D = (1) - (1+2) - (1+3) + (1+2+3+4) = 4

六、Adaboost分類器

例如檢測(cè):

蘋果、蘋果、蘋果、香蕉
0.1 — 0.1 — 0.1 — 0.5

則通過檢測(cè)的結(jié)果可以區(qū)分種類,此時(shí)需要一個(gè)終止條件
訓(xùn)練終止條件:
1、迭代的最大次數(shù)
2、每次迭代完之后有個(gè)檢測(cè)概率p,即最小的誤差概率,例如三個(gè)蘋果,一個(gè)香蕉,此時(shí)的檢測(cè)概率為75%

分類器的結(jié)構(gòu)、Adaboost分類器的計(jì)算過程、opencv自帶的人臉分類器的文檔xml結(jié)構(gòu)

分類器的結(jié)構(gòu):設(shè)定一個(gè)閾值T,若haar特征>閾值T,則認(rèn)為是蘋果,否則認(rèn)為是香蕉,這是一級(jí)分類器,但效果不太好
haar>T1 and haar>T2,此時(shí)可以使用兩級(jí)分類器,兩個(gè)閾值。對(duì)于每一級(jí)的分類器規(guī)定為強(qiáng)分類器,則這是兩個(gè)強(qiáng)分類器組成;正常情況下Adaboost有15-20個(gè)強(qiáng)分類器所組成,若一個(gè)目標(biāo)連續(xù)通過15-20這些閾值,則認(rèn)為是準(zhǔn)確目標(biāo)。

Adaboost分類器的計(jì)算過程
如上圖,三個(gè)強(qiáng)分類器組成:第一個(gè)強(qiáng)分類器特征為x1,閾值為t1、第二個(gè)強(qiáng)分類器特征為x2,閾值為t2、第三個(gè)強(qiáng)分類器特征為x3,閾值為t3
進(jìn)行判決的時(shí)候x1>t1表明已經(jīng)通過了第一個(gè)強(qiáng)分類器,同理,最后需要都通過這些強(qiáng)分類器,即:x1>t1 and x2>t2 and x3>t3 三個(gè)強(qiáng)分類器都通過時(shí),則認(rèn)為是目標(biāo)

強(qiáng)分類器作用:判斷當(dāng)前的閾值與當(dāng)前的特征是否吻合,從而達(dá)到目標(biāo)判決的效果
弱分類器作用:計(jì)算強(qiáng)分類器的特征,即計(jì)算當(dāng)前的x1,x2,x3

例如:弱分類器計(jì)算的特征為y1,y2,y2;第二個(gè)強(qiáng)分類器的閾值x2 = sum(y1,y2,y3)由三個(gè)弱分類器計(jì)算的特征進(jìn)行累加從而得到強(qiáng)分類器的特征x2

弱分類器特征y1,y2,y3的計(jì)算:每個(gè)弱分類器是由若干個(gè)Node結(jié)點(diǎn)組成,最后的弱分類器的特征的計(jì)算還得歸結(jié)于特征節(jié)點(diǎn)Node的計(jì)算
Node結(jié)點(diǎn)計(jì)算弱分類器特征:在opencv中一個(gè)弱分類器最多支持3個(gè)haar特征,每一個(gè)haar特征構(gòu)成一個(gè)Node結(jié)點(diǎn)
例如Node1對(duì)應(yīng)haar特征1,若haar特征1 > Node結(jié)點(diǎn)1的閾值判決(haar1 > Node1 T),則把當(dāng)前的結(jié)點(diǎn)特征z1 = α1
若haar特征1 < Node結(jié)點(diǎn)1的閾值判決(haar1 < Node1 T),則把當(dāng)前的結(jié)點(diǎn)特征z1 = α2

這是Node1,同理可計(jì)算出z2、z3
Z = sum(z1,z2,z3),若Z>判決文獻(xiàn)T,則弱分類器的計(jì)算特征y1=AA
Z = sum(z1,z2,z3),若Z<判決文獻(xiàn)T,則弱分類器的計(jì)算特征y1=BB
將所有弱分類器的計(jì)算特征求和,可得強(qiáng)分類器x,x=sum(y1,y2,y3)
強(qiáng)分類器在和強(qiáng)分類器的閾值文獻(xiàn)T進(jìn)行比較,x >T1
若連續(xù)通過三個(gè)強(qiáng)分類器的閾值判決文獻(xiàn),則認(rèn)為是目標(biāo)

Adaboost訓(xùn)練步驟
1,完成初始化數(shù)據(jù)的權(quán)值分布

蘋果 蘋果 蘋果 香蕉
0.1—0.1—0.1—0.1

2、遍歷閾值,計(jì)算出一系列的誤差概率P,選取一個(gè)最小的誤差概率minP,其對(duì)應(yīng)的權(quán)值為t
3、計(jì)算權(quán)重G1(x)
4、更新訓(xùn)練數(shù)據(jù)的權(quán)重分布

蘋果 蘋果 蘋果 香蕉
0.2—0.2—0.2—0.8

檢測(cè)人臉和人眼,并描繪出來(lái)

步驟:
1、加載xml文件
2、加載圖片
3、計(jì)算圖片的haar特征和對(duì)圖像進(jìn)行灰度處理,haar特征的計(jì)算opencv已經(jīng)封裝好了,調(diào)用即可;其中用戶自需要對(duì)圖像進(jìn)行灰度處理即可,因?yàn)閛pencv中的所有haar特征都是基于灰度圖片來(lái)進(jìn)行計(jì)算的
4、進(jìn)行檢測(cè),檢測(cè)出當(dāng)前haar特征的人臉以及人臉上的特征,例如:人臉和眼睛
5、對(duì)檢測(cè)出來(lái)的結(jié)果進(jìn)行遍歷,并繪制出檢測(cè)出來(lái)的方框

face_xml.detectMultiScale(gray,1.3,5)
參數(shù)一:需要進(jìn)行人臉檢測(cè)的灰度圖
參數(shù)二:縮放系數(shù),即比例縮放
參數(shù)三:人臉目標(biāo)大小

import cv2 import numpy as np # xml文件的引入 face_xml = cv2.CascadeClassifier('E:\Jupyter_workspace\study\DL\data/haarcascade_frontalface_default.xml') eye_xml = cv2.CascadeClassifier('E:\Jupyter_workspace\study\DL\data/haarcascade_eye.xml') # 加載含有人臉的圖片 img = cv2.imread('E:\Jupyter_workspace\study\DL\data/aa.jpg') cv2.imshow('src',img) # 計(jì)算haar特征和對(duì)圖像進(jìn)行灰度轉(zhuǎn)化gray gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 人臉識(shí)別的檢測(cè) faces = face_xml.detectMultiScale(gray,1.3,5) print('face=',len(faces))#檢測(cè)當(dāng)前的人臉個(gè)數(shù) # 繪制人臉,為檢測(cè)到的每個(gè)人臉進(jìn)行畫方框繪制 for (x,y,w,h) in faces:cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)#人臉識(shí)別roi_face = gray[y:y+h,x:x+w]#灰色人臉數(shù)據(jù)roi_color = img[y:y+h,x:x+w]#彩色人臉數(shù)據(jù)# 1 grayeyes = eye_xml.detectMultiScale(roi_face)#眼睛識(shí)別,圖片類型必須是灰度圖print('eye=',len(eyes))#打印檢測(cè)出眼睛的個(gè)數(shù)for (e_x,e_y,e_w,e_h) in eyes:#繪制眼睛方框到彩色圖片上cv2.rectangle(roi_color,(e_x,e_y),(e_x+e_w,e_y+e_h),(0,255,0),2)cv2.imshow('dst',img) cv2.waitKey(0)

效果圖如下:

檢測(cè)人臉,將人臉進(jìn)行ROI提取,并保存

# 1 load xml 2 load jpg 3 haar gray 4 detect 5 draw import cv2 import numpy as np # load xml 1 file name face_xml = cv2.CascadeClassifier('E:\Jupyter_workspace\study\DL\data/haarcascade_frontalface_default.xml') eye_xml = cv2.CascadeClassifier('E:\Jupyter_workspace\study\DL\data/haarcascade_eye.xml') # load jpg img = cv2.imread('E:\Jupyter_workspace\study\DL\data/face.jpg') cv2.imshow('src',img) # haar gray gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # detect faces 1 data 2 scale 3 5 faces = face_xml.detectMultiScale(gray,1.3,5) print('face=',len(faces)) # draw index = 0 for (x,y,w,h) in faces:cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)roi_face = gray[y:y+h,x:x+w]roi_color = img[y:y+h,x:x+w]fileName = "E:\Jupyter_workspace\study\DL\data/"+str(index)+'.jpg'cv2.imwrite(fileName,roi_color)index = index + 1# 1 grayeyes = eye_xml.detectMultiScale(roi_face)print('eye=',len(eyes))#for (e_x,e_y,e_w,e_h) in eyes:#cv2.rectangle(roi_color,(e_x,e_y),(e_x+e_w,e_y+e_h),(0,255,0),2) cv2.imshow('dst',img) cv2.waitKey(0)


總結(jié)

以上是生活随笔為你收集整理的06-机器学习(Haar+Adaboost实现人脸、人眼检测)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩精品电影一区二区 | 小泽玛利亚一区二区三区视频 | av大片免费看 | 久色免费视频 | 丰满人妻在公车被猛烈进入电影 | 人妻精品一区一区三区蜜桃91 | 少妇太爽了太深了太硬了 | 中文字幕不卡视频 | 国产精品久久久久久妇女6080 | 蜜乳av懂色av粉嫩av | 69er小视频 | 国产成人精品二区三区亚瑟 | 青久草视频 | 亚洲www色| 好吊在线视频 | 午夜免费在线 | 香蕉视频成人在线观看 | 国产精品第3页 | 一区二区三区在线视频播放 | 精品成人无码久久久久久 | www.黄色国产 | 性欧美精品 | 91碰碰| 亚洲最大看欧美片网站 | 日本一区二区在线 | av小说天堂网 | 99999av | 国产精品第五页 | 国产毛片久久久久久国产毛片 | 黑鬼巨鞭白妞冒白浆 | 精品视频久久 | 久久超碰av | 美国式禁忌1980 | 高清二区| 精品国产一区二区视频 | 国产香蕉97碰碰碰视频在线观看 | 一级黄色片免费看 | 97超碰网| 黄色调教视频 | 人妻一区二区在线 | 日韩网站在线观看 | 欧美久久久久久久久 | 久久精品国产欧美亚洲人人爽 | 操操久久 | 婷婷色吧 | 女同动漫免费观看高清完整版在线观看 | 国产精品久久久久影院色老大 | 网站一区二区 | 亚洲在线视频一区 | 久久久噜噜噜 | 日韩一区欧美一区 | 精品久久毛片 | 成人春色影视 | 天天综合网在线观看 | 麻豆视频在线观看免费网站黄 | 午夜视频网站在线观看 | 天天天天操 | 亚洲五月六月 | 国产无套内射普通话对白 | 熟妇人妻无乱码中文字幕真矢织江 | 国产偷亚洲偷欧美偷精品 | 天天干,天天操 | 国产成人免费观看视频 | 香蕉手机网 | 色老板精品凹凸在线视频观看 | 欧美三级小视频 | 四虎永久免费观看 | 91精品啪| 99综合在线| 三上悠亚痴汉电车 | 精品一区二区三区四 | 精品国产91乱码一区二区三区 | 黄视频在线播放 | 亚洲男人的天堂在线观看 | 国产黄色小说 | 黄色av电影在线 | 精品人妻一区二区三区日产 | 日韩精品亚洲精品 | 黄a免费网络| 欧美黑人疯狂性受xxxxx野外 | 黄色国产小视频 | 成人激情小视频 | 亚洲国产精彩中文乱码av | 久91 | 久久伊人爱 | 骚黄网站| 6080午夜 | japanese在线观看 | 性激烈视频在线观看 | 91精品国自产在线偷拍蜜桃 | 秋葵视频在线 | 黄色免费看视频 | 国产一级一级国产 | 欧美女人一区二区 | 在线观看麻豆视频 | 青青草社区 | 久久久高潮 | 久操影视 | 国产精品91av|