国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法

這篇具有很好參考價(jià)值的文章主要介紹了互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

0 前言

?? 優(yōu)質(zhì)競(jìng)賽項(xiàng)目系列,今天要分享的是

基于深度學(xué)習(xí)的手勢(shì)檢測(cè)與識(shí)別算法

該項(xiàng)目較為新穎,適合作為競(jìng)賽課題方向,學(xué)長(zhǎng)非常推薦!

?? 更多資料, 項(xiàng)目分享:

https://gitee.com/dancheng-senior/postgraduate文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-808702.html

1 實(shí)現(xiàn)效果

廢話不多說(shuō),先看看學(xué)長(zhǎng)實(shí)現(xiàn)的效果吧
互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java
互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java
互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java
互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java
互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java
互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java

2 技術(shù)原理

2.1 手部檢測(cè)

主流的手勢(shì)分割方法主要分為靜態(tài)手勢(shì)分割和動(dòng)態(tài)手勢(shì)分割兩大類方法。

  • 靜態(tài)手勢(shì)分割方法: 單張圖片利用手和背景的差異進(jìn)行分割,

  • 動(dòng)態(tài)手勢(shì)分割方法: 利用了視頻幀序列的信息來(lái)分割。

2.1.1 基于膚色空間的手勢(shì)檢測(cè)方法

膚色是手和其他背景最明顯的區(qū)分特征,手的顏色范圍較統(tǒng)一并且有聚類性,基于膚色的分割方法還有處理速度快,對(duì)旋轉(zhuǎn)、局部遮擋、姿勢(shì)變換具有不變性,因此利用不同的顏色空間來(lái)進(jìn)行手勢(shì)分割是現(xiàn)在最常用的方法。

膚色分割的方法主要有以下幾種:基于參數(shù)、非參數(shù)的顯式膚色聚類方法。參數(shù)模型使用高斯顏色分布,非參數(shù)模型則是從訓(xùn)練數(shù)據(jù)中獲得膚色直方圖來(lái)對(duì)膚色區(qū)間進(jìn)行估計(jì)。膚色聚類顯式地在某個(gè)特定的顏色空間中定義了膚色的邊界,廣義上看是一種靜態(tài)的膚色濾波器,如Khan根據(jù)檢測(cè)到的臉部提出了一種自適應(yīng)的膚色模型。

膚色是一種低級(jí)的特征,對(duì)計(jì)算的消耗很少,感知上均勻的顏色空間如CIELAB,CIELUV等已經(jīng)被用于進(jìn)行膚色檢測(cè)。正交的顏色空間如,YCbCr,YCgCr,YIQ,YUV等也被用與膚色分割,如Julilian等使用YCrCb顏色空間,利用其中的CrCb分量來(lái)建立高斯模型進(jìn)行分割。使用膚色分割的問(wèn)題是誤檢率非常高,所以需要通過(guò)顏色校正,圖像歸一化等操作來(lái)降低外界的干擾,提高分割的準(zhǔn)確率。

基于YCrCb顏色空間Cr, Cb范圍篩選法手部檢測(cè),實(shí)現(xiàn)代碼如下:

?
# 膚色檢測(cè)之二: YCrCb中 140<=Cr<=175 100<=Cb<=120
img = cv2.imread(imname, cv2.IMREAD_COLOR)
ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb) # 把圖像轉(zhuǎn)換到Y(jié)UV色域
(y, cr, cb) = cv2.split(ycrcb) # 圖像分割, 分別獲取y, cr, br通道分量圖像

skin2 = np.zeros(cr.shape, dtype=np.uint8) # 根據(jù)源圖像的大小創(chuàng)建一個(gè)全0的矩陣,用于保存圖像數(shù)據(jù)
(x, y) = cr.shape # 獲取源圖像數(shù)據(jù)的長(zhǎng)和寬

# 遍歷圖像, 判斷Cr和Br通道的數(shù)值, 如果在指定范圍中, 則置把新圖像的點(diǎn)設(shè)為255,否則設(shè)為0
for i in  range(0, x): 
	for j in  range(0, y):
		if (cr[i][j] >  140) and (cr[i][j] <  175) and (cb[i][j] >  100) and (cb[i][j] <  120):
			skin2[i][j] =  255
		else:
			skin2[i][j] =  0

cv2.imshow(imname, img)
cv2.imshow(imname +  " Skin2 Cr+Cb", skin2)

檢測(cè)效果:

互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java
互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java

2.1.2 基于運(yùn)動(dòng)的手勢(shì)檢測(cè)方法

基于運(yùn)動(dòng)的手勢(shì)分割方法將運(yùn)動(dòng)的前景和靜止的背景分割開(kāi),主要有背景差分法、幀間差分法、光流法等。

幀間差分選取視頻流中前后相鄰的幀進(jìn)行差分,設(shè)定一定的閾值來(lái)區(qū)分前景和后景,從而提取目標(biāo)物體。幀差法原理簡(jiǎn)單,計(jì)算方便且迅速,但是當(dāng)前后景顏色相同時(shí)檢測(cè)目標(biāo)會(huì)不完整,靜止目標(biāo)則無(wú)法檢測(cè)。

背景差分需要建立背景圖,利用當(dāng)前幀和背景圖做差分,從而分離出前后景。背景差分在進(jìn)行目標(biāo)檢測(cè)中使用較多。有基于單高斯模型,雙高斯模型的背景差分,核密度估計(jì)法等。景差分能很好的提取完整的目標(biāo),但是受環(huán)境變化的影響比較大,因此需要建立穩(wěn)定可靠的背景模型和有效的背景更新方法。

?
1, 讀取攝像頭
2, 背景減除
fgbg1 = cv.createBackgroundSubtractorMOG2(detectShadows=True)
fgbg2 = cv.createBackgroundSubtractorKNN(detectShadows=True)
# fgmask = fgbg1.apply(frame)
fgmask = fgbg2.apply(frame) # 兩種方法
3, 將沒(méi)幀圖像轉(zhuǎn)化為灰度圖像 在高斯去噪 最后圖像二值化
gray = cv.cvtColor(res, cv.COLOR_BGR2GRAY)
blur = cv.GaussianBlur(gray, (11, 11), 0)
ret, binary = cv.threshold(blur, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
4, 選取手部的 ROI 區(qū)域 繪制輪廓
gesture = dst[50:600, 400:700]
contours, heriachy = cv.findContours(gesture, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) # 獲取輪廓本身
for i, contour in enumerate(contours): # 獲取輪廓
cv.drawContours(frame, contours, i, (0, 0, 255), -1) # 繪制輪廓
print(i)

互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java

2.1.3 基于邊緣的手勢(shì)檢測(cè)方法

基于邊緣的手勢(shì)分割方法利用邊緣檢測(cè)算子在圖像中計(jì)算出圖像的輪廓,常用來(lái)進(jìn)行邊緣檢測(cè)的一階算子有(Roberts算子,Prewitt算子,Sobel算子,Canny算子等),二階算子則有(Marr-
Hildreth算子,Laplacian算子等),這些算子在圖像中找到手的邊緣。但是邊緣檢測(cè)對(duì)噪聲比較敏感,因此精確度往往不高。

邊緣檢測(cè)代碼示例:

?
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import scipy.signal as signal # 導(dǎo)入sicpy的signal模塊

# Laplace算子
suanzi1 = np.array([[0, 1, 0],  
                    [1,-4, 1],
                    [0, 1, 0]])

# Laplace擴(kuò)展算子
suanzi2 = np.array([[1, 1, 1],
                    [1,-8, 1],
                    [1, 1, 1]])

# 打開(kāi)圖像并轉(zhuǎn)化成灰度圖像
image = Image.open("pika.jpg").convert("L")
image_array = np.array(image)

# 利用signal的convolve計(jì)算卷積
image_suanzi1 = signal.convolve2d(image_array,suanzi1,mode="same")
image_suanzi2 = signal.convolve2d(image_array,suanzi2,mode="same")

# 將卷積結(jié)果轉(zhuǎn)化成0~255
image_suanzi1 = (image_suanzi1/float(image_suanzi1.max()))*255
image_suanzi2 = (image_suanzi2/float(image_suanzi2.max()))*255

# 為了使看清邊緣檢測(cè)結(jié)果,將大于灰度平均值的灰度變成255(白色)
image_suanzi1[image_suanzi1>image_suanzi1.mean()] = 255
image_suanzi2[image_suanzi2>image_suanzi2.mean()] = 255

# 顯示圖像
plt.subplot(2,1,1)
plt.imshow(image_array,cmap=cm.gray)
plt.axis("off")
plt.subplot(2,2,3)
plt.imshow(image_suanzi1,cmap=cm.gray)
plt.axis("off")
plt.subplot(2,2,4)
plt.imshow(image_suanzi2,cmap=cm.gray)
plt.axis("off")
plt.show()

2.1.4 基于模板的手勢(shì)檢測(cè)方法

基于模版的手勢(shì)分割方法需要建立手勢(shì)模版數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)記錄了不同手勢(shì)不同場(chǎng)景下的手勢(shì)模版。計(jì)算某個(gè)圖像塊和數(shù)據(jù)庫(kù)中各個(gè)手勢(shì)的距離,然后使用滑動(dòng)窗遍歷整幅圖像進(jìn)行相同的計(jì)算,從而在圖像正確的位置找到數(shù)據(jù)庫(kù)中的最佳匹配。模版匹配對(duì)環(huán)境和噪聲魯棒,但是數(shù)據(jù)庫(kù)需要涵蓋各種手型、大小、位置、角度的手勢(shì),并且因?yàn)樾枰闅v整個(gè)圖像進(jìn)行相同的計(jì)算,實(shí)時(shí)性較差。

2.1.5 基于機(jī)器學(xué)習(xí)的手勢(shì)檢測(cè)方法

貝葉斯網(wǎng)絡(luò),聚類分析,高斯分類器等等也被用來(lái)做基于膚色的分割。隨機(jī)森林是一種集成的分類器,易于訓(xùn)練并且準(zhǔn)確率較高,被用在分割和手勢(shì)識(shí)別上。建立膚色分類的模型,并且使用隨機(jī)森林對(duì)像素進(jìn)行分類,發(fā)現(xiàn)隨機(jī)森林得到的分割結(jié)果比上述的方法都要準(zhǔn)確.

3 手部識(shí)別

毫無(wú)疑問(wèn),深度學(xué)習(xí)做圖像識(shí)別在準(zhǔn)確度上擁有天然的優(yōu)勢(shì),對(duì)手勢(shì)的識(shí)別使用深度學(xué)習(xí)卷積網(wǎng)絡(luò)算法效果是非常優(yōu)秀的。

3.1 SSD網(wǎng)絡(luò)

SSD網(wǎng)絡(luò)是2016年提出的卷積神經(jīng)網(wǎng)絡(luò),其在物體檢測(cè)上取得了很好的效果。SSD網(wǎng)絡(luò)和FCN網(wǎng)絡(luò)一樣,最終的預(yù)測(cè)結(jié)果利用了不同尺度的特征圖信息,在不同尺度的特征圖上進(jìn)行檢測(cè),大的特征圖可以檢測(cè)小物體,小特征圖檢測(cè)大物體,使用金字塔結(jié)構(gòu)的特征圖,從而實(shí)現(xiàn)多尺度的檢測(cè)。網(wǎng)絡(luò)會(huì)對(duì)每個(gè)檢測(cè)到物體的檢測(cè)框進(jìn)行打分,得到框中物體所屬的類別,并且調(diào)整邊框的比例和位置以適應(yīng)對(duì)象的形狀。

互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java

3.2 數(shù)據(jù)集

我們實(shí)驗(yàn)室自己采集的數(shù)據(jù)集:

數(shù)據(jù)集包含了48個(gè)手勢(shì)視頻,這些視頻是由谷歌眼鏡拍攝的,視頻中以第一人稱視角拍攝了室內(nèi)室外的多人互動(dòng)。數(shù)據(jù)集中包含4個(gè)類別的手勢(shì):自己的左右手,其他人的左右手。數(shù)據(jù)集中包含了高質(zhì)量、像素級(jí)別標(biāo)注的分割數(shù)據(jù)集和檢測(cè)框標(biāo)注數(shù)據(jù)集,視頻中手不受到任何約束,包括了搭積木,下棋,猜謎等活動(dòng)。

互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java

需要數(shù)據(jù)集的同學(xué)可以聯(lián)系學(xué)長(zhǎng)獲取

3.3 最終改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)

互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java
互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java

最后整體實(shí)現(xiàn)效果還是不錯(cuò)的:
互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法,python,java

4 最后

?? 更多資料, 項(xiàng)目分享:

https://gitee.com/dancheng-senior/postgraduate

到了這里,關(guān)于互聯(lián)網(wǎng)加競(jìng)賽 基于機(jī)器視覺(jué)的手勢(shì)檢測(cè)和識(shí)別算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包