得分方

  找出每部影片中最後一個擊球點到落地的羽球軌跡,經觀察我們大致將球路分成兩種類型,再依照斜率做下一步的判斷,第一類(左圖)是選手將羽球向前方打擊,羽球呈現類似於平球或殺球的軌跡,角度變化較小,而第二類(右圖)則是選手將羽球往上方打,直到羽球達到最高點,球速與動能皆為0後開始往下墜,直到落地彈起,類似具有拋物線的軌跡,軌跡角度變化較大。

(軌跡向前)

(軌跡向上)

  發生軌跡向前情況時,若球不在其原路徑上且偏離超過10度時,便將其判斷為已落地,並進而確認其是否出界。

(軌跡向前)

  若軌跡向上路徑的情況,當球路角度連續小於20度,並且之後角度出現大幅變動時,則判斷已落地,並進而確認是否出界。

(軌跡向上)

  此外軌跡異常、羽球被選手擋住等原因都會影響我們判斷得分方,因此去除這些因素影響的話,全資料共203筆資料,正確做出判斷的有187部影片,16部影片是判斷錯誤的,其原因是因為軌跡從網子下穿越對面因此判斷錯誤,準確率為92.12%,其中符合路徑一的有71部影片準確率為88.73%,符合路徑二的有132部影片準確率為93.94%。

球路

  為了準確的判斷羽球的球路,使用了不同的模型去對其進行分類。

  訓練的資料,除了先前透過不同偵測方式所獲取的羽球軌跡、人物節點及場地外,亦結合這三樣資料產生新的特徵值,去加以提高模型訓練的準確度。

  而在球路中,我們一共分成了下面8個類別:

0 1 2 3 4 5 6 7 8
發短球 發長球 長球 平球 殺球 網前小球 切球 挑球 推撲球

變數內容:

人物節點:2位選手25個節點的(x、y、z)坐標,一共有75個變數。

場地座標:場地打擊區域端點,8個點的(x、y)坐標,一共有16個變數。

羽球移動距離:1個變數。

羽球移動速度:1個變數。

羽球角度變化量:羽球的(x、y)坐標,一共2個變數。

羽球軌跡切成3段的資料:將兩個擊球幀之間的資料分成3等分,分別計算每段的距離和角度變化量,一共6個變數。

腳與發球線的y變化量:兩位選手的雙腳與發球線的y變化量,一共4個變數。

腳與中線的x變化量:兩位選手的雙腳與中線的x變化量,一共4個變數。

人體節點的前後5幀變化量:兩位選手的前後5幀變化量,一共18個變數

手肘角度變化量:打擊者的手肘角度變化的(x、y)坐標,一共2個變數。

擊球者:該球的擊球者是誰,1個變數。

是否有打對角:是或否,1個變數。

一共使用了四種機器學習的方式去進行分類訓練,分別是Logistic Regression、Svm、Random Forest及XGBoost,以下為訓練結果。

分類器/準確率 訓練集準確率 測試集準確率
LogisticRegression
(邏輯斯回歸)
0.82 0.73
SVM(支援向量機) 0.78 0.70
RandomForest(隨機森林) 0.80 0.70
XGBoost 0.77 0.71

從上方的表格來看,其實整體的訓練集準確率都落在或接近0.8左右,而測試也都落在0.7左右,因此我們挑選了準確率相對高的Logistic Regression來當作最後使用的模型。

但我們也想要從各種球路來觀察,是哪幾個種類比較容易被分錯,導致準確度不高,下表是各類的準確率及其混淆矩陣。

球種/準確率 發短球(0) 發長球(1) 長球(2) 平球(3) 殺球(4) 小球(5) 切球(6) 挑球(7)
準確率 0.82 0.69 0.61 0.40 0.80 0.85 0.51 0.70

(混淆矩陣)

其實觀察後會發現平球(3)、切球(6)的準確率較低,原因可能是這兩種資料的筆數都相對較少,也可能我們目前所使用的特徵還不足以對這些球路進行分類而導致。