訂閱
糾錯(cuò)
加入自媒體

用機(jī)器學(xué)習(xí)識(shí)別排球比賽的階段

排球比賽的階段

人工智能分析排球比賽有多種方法。我過(guò)去常常跟蹤球,以便將比賽時(shí)間從整個(gè)視頻中分離出來(lái)。

另一種方法是確定游戲階段,并根據(jù)階段流程做出決策。

讓我們假設(shè)排球比賽包括4個(gè)階段:

· 沒(méi)有開(kāi)始。沒(méi)有人或少數(shù)人在場(chǎng)上徘徊。

· 靜止階段。人們?cè)诒荣惽罢局粍?dòng)。

· 比賽階段。

· 歡呼階段。即使比賽輸了,人們也會(huì)聚在一起互相歡呼。

所有這些階段都因人們相對(duì)于場(chǎng)和彼此的位置而不同。這意味著我們首先要做的是在圖片中找到人。

人員檢測(cè)

人員檢測(cè)器生成帶有玩家坐標(biāo)的方框。該信息將作為階段分類模型的輸入。

有時(shí)探測(cè)器會(huì)漏掉人,這會(huì)給數(shù)據(jù)增加一些噪音。

數(shù)據(jù)準(zhǔn)備

出于手動(dòng)分類圖片所需的訓(xùn)練目的,請(qǐng)將其移動(dòng)到4個(gè)不同的文件夾中。

還有一個(gè)很好的問(wèn)題是如何表示機(jī)器學(xué)習(xí)的輸入數(shù)據(jù)。有兩個(gè)主要選項(xiàng):

· 使用檢測(cè)到的框的數(shù)字表示

· 使用圖片

我決定使用圖片選項(xiàng),因?yàn)椋?/p>

· 輸入大小應(yīng)該是穩(wěn)定的,但我們事先不知道檢測(cè)的數(shù)量。球場(chǎng)上最多可能有12名球員,但球迷、裁判和替補(bǔ)球員可能會(huì)增加這個(gè)數(shù)字。圖片大小是固定的。

· 檢測(cè)是無(wú)序的。為了將它們用作數(shù)組輸入,我們需要以某種方式對(duì)它們進(jìn)行排序,例如,從左到右、按大小等。

· 人性化。盒子上的數(shù)字是很難理解的。圖片化顯示能提供一個(gè)很好的線索。

為了將檢測(cè)結(jié)果表示為輸入圖片,我在黑色背景上繪制了白色實(shí)心矩形,并將其大小調(diào)整為64x64。

def get_mask(boxes):  
   

 pic = np.zeros((H,W,1), np.uint8)  


 clr = 255  
   

 for r in boxes:    

   cv.rectangle(pic, (r[0], r[1]), (r[0] + r[2], r[1] + r[3]), clr, thickness=-1)  
   

 pic = cv.resize(pic, (64, 64))  

 return pic

然后為每個(gè)階段準(zhǔn)備了掩碼:

歡呼階段:

沒(méi)有開(kāi)始階段:

比賽階段:

靜止階段:

選擇分類方法

多標(biāo)簽分類有多種方法,因此選擇并不容易。最后,選擇了兩種最基本也是最流行的方法:

· sklearn的近鄰(又名KNN)

· 具有Tensorflow Keras(又名TFK)的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)

KNN對(duì)相同數(shù)據(jù)的準(zhǔn)確率為81%,對(duì)隨機(jī)樣本的準(zhǔn)確率為66%。

TFK也穩(wěn)定在80%左右。

測(cè)試分類

讓我們挑選一段排球測(cè)試視頻。用的是格拉茨計(jì)算機(jī)視覺(jué)研究所提供的奧地利業(yè)余聯(lián)賽的開(kāi)放式視頻。

1. 從游戲中提取幀。人的移動(dòng)速度不是很快,所以每秒2幀就足夠了:

ffmpeg -i video.mp4 -r 2 frames/%05d.jpg

2. 在幀上運(yùn)行MobileSSD檢測(cè)器并生成json文件。

def detect_pic(ssd, img, thr = 0.3):

 rows = img.shape[0]

 cols = img.shape[1]
 

 ssd.setInput(cv.dnn.blobFromImage(img, 1.0/127.5, (600, 600), (127.5, 127.5, 127.5), swapRB=True, crop=False))

 out = ssd.forward()

 r = np.a(chǎn)rray([cols, rows, cols, rows])
 

 boxes = []

 scores = []

 for d in out[0,0,:,:]:

   score = float(d[2])

   cls = int(d[1])
   

   if cls 。 1:

     continue
   

   if score < thr:

     continue
     

 box = d[3:7] * r

   box[2] -= box[0]

   box[3] -= box[1]

   boxes.a(chǎn)ppend(box.a(chǎn)stype("int"))

   scores.a(chǎn)ppend(score)
   

 if len(boxes) < 1:

   return []
   

 dxs = cv.dnn.NMSBoxes(boxes, scores, thr, 0.1)

 return [boxes[i].tolist() for i in dxs.flatten()]

3. 將檢測(cè)轉(zhuǎn)換為輸入掩碼

4. 對(duì)輸入掩碼進(jìn)行分類

兩種方法的表現(xiàn)都比訓(xùn)練期間差:

· KNN-72%

· TFK-70%

5. 預(yù)測(cè)階段

令人驚訝的是,KNN的表現(xiàn)也略好于TFK

結(jié)論

分類結(jié)果令人鼓舞,即使它們不夠精確,這也可以為視頻編輯器和觀眾節(jié)省一些時(shí)間。

減少視頻大小有多種原因:

加密整個(gè)游戲記錄。它使視頻變得更。s占原始視頻的30%),存儲(chǔ)成本更低,加載速度更快,對(duì)觀眾更具吸引力。

將漫長(zhǎng)的游戲分成有意義的部分。這對(duì)球員、他們的父母和球迷都很重要——小型視頻可以很容易地分享或保存在個(gè)人照片中。

參考文獻(xiàn):

(Required by video dataset owner)

Improved Sport Activity Recognition using Spatio-temporal ContextGeorg Waltner, Thomas Mauthner and Horst BischofIn Proc. DVS-Conference on Computer Science in Sport (DVS/GSSS), 2014

Indoor Activity Detection and Recognition for Automated Sport Games AnalysisGeorg Waltner, Thomas Mauthner and Horst BischofIn Proc. Workshop of the Austrian Association for Pattern Recognition (AAPR/OAGM), 2014

       原文標(biāo)題 : 用機(jī)器學(xué)習(xí)識(shí)別排球比賽的階段

聲明: 本文由入駐維科號(hào)的作者撰寫(xiě),觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問(wèn)題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無(wú)評(píng)論

暫無(wú)評(píng)論

    掃碼關(guān)注公眾號(hào)
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯(cuò)
    x
    *文字標(biāo)題:
    *糾錯(cuò)內(nèi)容:
    聯(lián)系郵箱:
    *驗(yàn) 證 碼:

    粵公網(wǎng)安備 44030502002758號(hào)