Download as pdf or txt
Download as pdf or txt
You are on page 1of 27

ĐẠI HỌC BÁCH KHOA HÀ NỘI

Trường Điện – Điện Tử

BÁO CÁO BÀI TẬP LỚN

Đề tài: Golfswing analysis

Tối ưu bài toán xác định 8 tư thế của cú


swing

Giảng viên hướng dẫn: TS. Võ Lê Cường


Đồng hướng dẫn: Đoàn Tiến Đạt
Môn học: Trí tuệ nhân tạo và ứng dụng

Sinh viên thực hiện: Nhóm 2

Lê Thanh Nam (tn) 20193027


Vũ Phương Nam 20193038
Khổng Minh Tăng 20193097

Hà Nội, 12/2023
MỤC LỤC

CHƯƠNG 1. ĐẶT VẤN ĐỀ ................................................................................ 2


1.1 Vấn đề cần giải quyết ..................................................................................... 2
CHƯƠNG 2. ĐỀ XUẤT PHƯƠNG PHÁP ........................................................ 5
2.1 Khảo sát bài báo ......................................................................................... 5
2.2 Các sản phẩm của công ty .......................................................................... 5
Golf swing analyzer ++ ............................................................... 6
Golf Fix – AI Swing Analyzer .................................................... 7
2.3 Phương pháp giải quyết bài toán của nhóm ............................................... 8
CHƯƠNG 3. 3. CỤ THỂ PHƯƠNG PHÁP SỬ DỤNG ................................. 11
3.1 Trích xuất khung xương sử dụng thư viện Mediapipe. ............................ 11
BlazePose Detector ................................................................... 11
Pose Landmark Model .............................................................. 11
3.2 SwingNet .................................................................................................. 12
Chi tiết triển khai....................................................................... 12
CHƯƠNG 4. DATA ........................................................................................... 13
4.1 Dataset GolfDB ........................................................................................ 13
Cách thu thập data ..................................................................... 13
Gán nhãn. .................................................................................. 13
4.2 Quá trình tạo data cho bài toán của nhóm. ............................................... 14
CHƯƠNG 5. KẾT QUẢ .................................................................................... 16
5.1 Mô tả metric đánh giá .............................................................................. 16
Mức dung sai δ .......................................................................... 16
Chỉ số đánh giá PCE ................................................................. 16
5.2 Kết quả đánh giá....................................................................................... 17
5.3 Cách train và test model ........................................................................... 18
Cách train model ....................................................................... 18
Cách test model ......................................................................... 18
CHƯƠNG 6. CÔNG VIỆC TIẾP THEO ........................................................ 20
6.1 Các vấn đề gặp phải khiến cho kết quả thấp hơn so với bài báo gốc....... 20
Nhiễu nền .................................................................................. 20
Kết quả trích xuất khung xương chưa đủ tốt............................. 20
BẢNG PHÂN CHIA CÔNG VIỆC
Người thực hiện Nhiệm vụ
3. Cụ thể phương pháp sử dụng.
Lê Thanh Nam
4. Cách tìm và tạo Dataset

Kết quả
Vũ Phương Nam
Công việc tiếp theo

1.Đặt vấn đề
Khổng Minh Tăng
2.Đề xuất các phương pháp
DANH MỤC HÌNH VẼ
Hình 1-1: Mô tả 8 tư thế chuẩn của một cú swing ................................................. 3
Hình 3-1: Mô tả cách vận hành của BlazeFace .................................................... 11
Hình 3-2: Chi tiết và tên 33 mốc tư thế ................................................................ 11
Hình 3-: Kiến trúc model SwingNet .................................................................... 12
Hình 4-1: Phân phối của GolfDB. Tổng số khung hình trong các mẫu thời gian
thực và chạy chậm là gần bằng nhau (≈195k mỗi mẫu).. .................................... 13
Hình 4-2: Thời gian sự kiện trung bình từ Địa chỉ đến Tác động của 5 người chơi
golf chuyên nghiệp nữ (5 người đứng đầu) và nam (5 người dưới cùng) sử dụng
gậy driver hoặc gậy gỗ fairway. Thời gian sự kiện được chuẩn hóa từ Address
đến Impact. ........................................................................................................... 14
Hình 4-3: Frame đã trích xuất khung xương ........................................................ 14
Hình 5-1: Minh họa chỉ số PCE trung bình đạt được .......................................... 17
Hình 5-2: Frame sau khi đã tối ưu các mốc tư thế ............................................... 18

DANH MỤC BẢNG BIỂU


Bảng 5-1: Kết quả PCE trung bình so sánh trên 2 bộ dataset. ............................. 17
LỜI MỞ ĐẦU

Trong thể thao chuyên nghiệp, việc phân tích chuyển động và kỹ thuật thể
thao là vô cùng quan trọng để nâng cao thành tích và phòng tránh chấn thương.
Trong môn golf, động tác swing đòi hỏi sự phối hợp nhịp nhàng và chính xác
giữa nhiều bộ phận cơ thể. Việc phân tích chuyển động swing sẽ giúp các golfer
nhận biết được lỗi kỹ thuật và cải thiện hiệu suất một cách khoa học. Tuy nhiên,
quá trình này thường tốn nhiều thời gian và công sức nếu thực hiện thủ công. Các
huấn luyện viên golf cũng gặp khó khăn trong việc theo dõi và phân tích kỹ thuật
của nhiều vận động viên cùng lúc.
Do đó, áp dụng công nghệ trí tuệ nhân tạo hiện đại để tự động phân tích và
nhận diện các giai đoạn quan trọng trong động tác swing golf là hết sức cần thiết.
Các kỹ thuật học sâu như Convolutional Neural Networks và Recurrent Neural
Networks đã cho thấy hiệu quả trong việc phân tích hình ảnh và video. Việc ứng
dụng các kỹ thuật này vào lĩnh vực thể thao sẽ mang lại nhiều lợi ích cho cả huấn
luyện viên và vận động viên.
Trong báo cáo này, nhóm em đề xuất một phương pháp dựa trên học sâu
để tự động phân tích và nhận diện các sự kiện trọng yếu trong golf swing từ
video. Hệ thống kết hợp mô hình Convolutional Neural Network (CNN) và Long
Short-Term Memory (LSTM) để trích xuất các đặc trưng về không gian và thời
gian từ các khung hình video. Nghiên cứu đóng góp một giải pháp để hỗ trợ phân
tích golf swing một cách nhanh chóng và chính xác bằng trí tuệ nhân tạo.
Nhóm em xin chân thành cảm ơn thầy và các bạn đã dành thời gian đọc
báo cáo này. Em và thành viên trong nhóm rất mong nhận được ý kiến đóng góp
và phản hồi của thầy và các bạn để nhóm có thể cải thiện và hoàn thiện báo cáo
của mình.

Trân trọng.

1
CHƯƠNG 1. ĐẶT VẤN ĐỀ

1.1 Vấn đề cần giải quyết

Trong lĩnh vực thể thao, việc phân tích kỹ thuật và chuyển động của vận động
viên đóng vai trò hết sức quan trọng trong việc nâng cao thành tích thể thao.
Trong môn golf, động tác swing đòi hỏi sự phối hợp chính xác và nhịp nhàng
giữa nhiều bộ phận cơ thể. Phân tích đúng đắn các giai đoạn trong golf swing sẽ
giúp các vận động viên nhận biết được những lỗi kỹ thuật để kịp thời điều chỉnh
và cải thiện kỹ năng.
Cụ thể, golf swing bao gồm các bước sau:
• 1.Tư thế đứng chuẩn: Đứng 2 chân rộng bằng vai, dồn trọng lượng cân
đối vào giữa 2 chân. Thả lỏng cơ thể và Khuỵu chân xuống hơi thấp và
giữ lưng thẳng cho hướng vai song song với đường bóng, mắt nhìn theo
bóng
• 2. Tư thế Takeaway: Đưa gậy lên cao và ra xa khỏi bóng, Hướng mũi
gậy đưa thẳng lên trời. Giữ cánh tay trái trước mặt thẳng, khuỷu tay phải
đưa gần vào cơ thểBắt đầu thực hiện di chuyển gậy ổn định. Bên cạnh đó,
khi đánh, trọng lượng nên chuyển từ chân trái sang chân phải (đối với
người đánh tay phải) và ngược lại khi hoàn thành cú đánh.
• 3. Tư thế Backswing: Quá trình backswing đảm bảo giữ vai trái cứng và
không di chuyển quá nhiều. Golfer xoay vai và đưa gậy lên cao, dồn trọng
lượng xuống chân phải, đưa thẳng tay ra xa để cho quỹ đạo swing rộng và
đẹp nhất. Như vậy, bóng sẽ đi đúng quỹ đạo với khoảng cách xa và tiếp
cận mục tiêu một cách chuẩn xác. Khi gậy đạt đến điểm cao nhất, vai phải
nên hướng về phía mục tiêu.
• 4. Tư thế Top of swing: Thực hiện tư thế top of swing là một trong
những bước khó nhất cần thực hiện một cách nhuần nhuyễn để tránh dẫn
tới downswing sai làm cho cú đánh lệch hướng, kém hiệu quả hoặc có thể
gây chấn thương cho người chơi. Cách thực hiện động tác chuẩn như sau:
Mũi gậy đưa gần và hướng thẳng tới. Xoay vai đến mức tối đa theo hướng
đánh sao cho lưng đối diện với bóng. Gậy golf nằm giữa vai và tai của
mình.
• 5. Tư thế Downswing: Quá trình downswing bắt đầu bằng việc xoay
hông về phía trái và di chuyển gậy hướng từ vị trí top of swing về phía
bóng, kết thúc bằng cú đánh ra. Ở bước này, trọng lượng chuyển từ chân
phải sang chân trái, đặc biệt là khi tiến vào giai đoạn cuối của downswing
và đi vào cú đánh.
• 6. Tư thế Impact: Tư thế “impact” trong swing golf chính là khoảnh khắc
gậy tiếp xúc với quả bóng. Đây là một trong những giai đoạn quan trọng
nhất trong cú đánh vì nó quyết định hướng, độ cao và tốc độ của quả bóng
sau khi bị đánh. khi gậy tiếp xúc với bóng, cần xoay hông về phía mục
tiêu, trọng lượng dồn hẳn về phía chân trái, 2 tay cầm gậy đánh bóng
mạnh và dứt khoát thành 1 đường thẳng.

2
• 7. Tư thế Follow through: Sau khi gậy golf tiếp xúc với bóng, golf thủ
tiếp tục xoay người, duỗi thẳng cánh tay hết sức và xoay qua thân. Tư thế
“follow through” là giai đoạn sau khi tiếp xúc với bóng, khi gậy và cơ thể
tiếp tục chuyển động theo hướng của cú đánh.
• 8. Tư thế kết thúc (Finish): Là tư thế cuối cùng kết thúc một cú đánh
swing. Để có tư thế finish đúng và đẹp mắt, golf thủ kết thúc bằng tư thế
khi nút khóa lưng đối diện với mục tiêu thì cú swing đã chuẩn xác. Hoàn
thành cú đánh với cả hai chân cân bằng trên mặt đất và người hướng về
mục tiêu.

Hình 1-1: Mô tả 8 tư thế chuẩn của một cú swing

Golf swing analysis là một tập hợp các hành động liên quan đến việc phân tích
lỗi sai của cú swing, đánh giá, dự đoán kết quả của cú swing và đưa ra phương
án cải thiện cú swing.
Tuy nhiên, quá trình phân tích swing thủ công rất tốn thời gian và công
sức. Các huấn luyện viên gặp nhiều khó khăn trong việc theo dõi và phân tích
chuyển động của nhiều vận động viên cùng lúc. Do đó, xây dựng một hệ thống tự
động phân tích golf swing dựa trên trí tuệ nhân tạo là hết sức cấn thiết, góp phần
nâng cao hiệu quả đào tạo cho các vận động viên golf.

3
2.2 Tầm quan trọng của vấn đề
Theo như ước tính thì trên toàn thế giới có đến hơn 80 triệu người chơi golf (
năm 2005),nhu cầu xã hội phát triển con số này ngày càng tăng lên.Môn thể thao
này phổ biến nhất ở Bắc Mỹ,nơi có 54% dân cư chơi golf trên toàn châu lục.Ở
Hoa Kỳ,tổng tác động kinh tế của ngành golf công nghiệp ước tính khoảng 191,9
tỷ đô ( năm 2003).Ở Canada,golf đã có tỉ lệ tham gia cao nhất so với bất kì môn
thể thao nào kể từ năm 1998.Có thể hiểu một cách hợp lý rằng nhiều người chơi
golf bị cuốn hút vào môn thể thao này thông qua sự tiến bộ liên tục.Cú đánh golf
là một tổ hợp chuyển động phức tạp đòi hỏi sự phối hợp nhịp nhàng.Chính vì
vậy,có thể sẽ phải mất nhiều năm thực hành và hướng dẫn để có thể thực hiện
một cú đánh đúng chuẩn.
Khi công nghệ chưa phát triển, để phân tích được những thông số liên quan đến
swing,golfer cần sự hướng dẫn chi tiết từ các chuyên gia điều này gây ra những
chi phí tốn kém với mỗi buổi học golf trực tiếp và khi golf luyện tập một mình
thì sẽ không phát hiện được lỗi cú đánh swing của mình dẫn đến tạo thành cú
đánh sai hay sử dụng các thiết bị đo cảm biến chuyển động thì cũng gây ra những
cản trở,khó khăn mất thời gian khi chuyển động của golfer.Chính vì vậy, việc
ứng dụng công nghệ deep learning và phân tích video vào golf swing analysis sẽ
giúp giải quyết những vấn đề nhược điểm trên. Công nghệ giúp ghi lại hình ảnh,
zoom và so sánh những động tác của người chơi với các động tác tiêu chuẩn
trong swing golf. Chỉ với một chiếc điện thoại thông minh, một vài thao tác đơn
giản, giá thành hợp lý là bạn đã có ngay cho mình một người bạn đồng hành,
giúp phân tích những thông số kỹ thuật và chỉ rõ ra những ưu nhược điểm trong
kỹ thuật đánh của golfer. Bên cạnh đó, những ứng dụng này còn giúp các golfer
linh hoạt trong quá trình luyện tập, giúp golf và đời sống trở nên hòa nhập
hơn. Từ đó, giúp golfer có những nhận định khách quan về cú đánh của mình và
đưa ra lộ trình luyện tập để cải thiện và nâng cao trình độ.

4
CHƯƠNG 2. ĐỀ XUẤT PHƯƠNG PHÁP

2.1 Khảo sát bài báo

Tên Ranking Phương pháp Open Dữ liệu Độ chính Điểm Điểm


paper của bài báo sử dụng Source sử dụng xác mạnh yếu
paper
AI Golf: IEEE Input: 2 motion -- GolfDB Phase -- --
Golf Access sequences classification
Swing (H- Output: accuracy =
Analysis index: Intermediate 0.918
Tool for 204) human pose
Self-
Training
(**)

Tên paper Ranking của Phương pháp Open Dữ liệu Độ Điểm


paper bài báo sử Source sử dụng chính mạnh/
dụng xác yếu
Learning International Input: Video -- GolfDB 83.4% Cải thiện
Golf Swing Joint đầu vào Accuracy
Key Events Conference Ouput:8 key (7.3%) so
from on Neural frames với
Gaussian Networks SwingNet
Soft Labels (IJCNN)
Using Multi- (H-index:
Scale 90)
Temporal
MLPFormer

GolfDB: A IEEE/CVF Input: A Link GolfDB PCE = --


Video Computer single swing 76.2 %
Database for Society video
Golf Swing Conference Output:
Sequencing on Computer Classes tương
(*) Vision and ứng với từng
Pattern Frame
Recognition
Workshops and one No-
(CVPRW) event class.)
H-index:
176
2.2 Các sản phẩm của công ty

5
Golf swing analyzer
-Input: tự động detect cú
swing thông qua appwatch
-Ouput: chuyển động của tay
trong cú swing và các thông
số:
• Grip: cách golfer đặt
tay trên cán gậy golf
=> ảnh hưởng trực
tiếp đến hướng của
mặt gậy ở impact.
• Swing speed: tốc độ
của cú swing
• Tempo: thời gian
swing tính từ
backswing đến
follow-through
• Cách tính: tỷ lệ của
backswing:
downswing tempo =
3:1 (good)
• Swing plane: mặt
phẳng tạo bởi gậy
golf và đôi cánh tay
khi chúng xoay quanh
cơ thể tron cú swing

-Hand speed: tốc độ của tay


-Impact angle (attack angle): góc
thẳng đứng (up-down) mà đầu gậy
đang di chuyển khi impact.
-Arm lean: góc tạo bởi cánh tay
dẫn đầu (lead arm),cánh tay trái
nếu golfer thuận tay phải, và cán
gậy trong suốt quá trình đánh.
Arm lean đóng vai trò quan trọng
trong việc kiểm soát attack angle,
độ cao và khoảng cách của cú
đánh golf.
-Path (swing path): hướng mà đầu
gậy di chuyển

6
Golf Fix – AI Swing Analyzer
Input: video cú swing được quay
trực tiếp bằng app hoặc video cú
swing có sẵn trong điện thoại.
Output:
- tự động phát hiện khung xương
của golfer
- theo dõi cú swing trong từng sự
kiện
- nhận xét và đưa ra gợi ý sửa lỗi

- 2 phần chính:
• main analysis: nhận xét và
gợi ý sửa lỗi
• full swing: theo dõi cú
swing qua các event, có take
note trên từng event

7
shoulder tilt( độ nghiêng vai)

Tư thế cổ tay

2.3 Phương pháp giải quyết bài toán của nhóm


Hiện nay các ứng dụng nên thị trường đều sử dụng phân việc phân tích toàn bộ
video của các golfer thực hiện.Việc trong quá trình quay video không chất lượng
dẫn đến việc phân tích có thể không chính xác và những thông tin không cần
thiết dẫn đến lãng phí tài nguyên bộ nhớ.

8
Hình 2-1 Ảnh data gốc
Bộ data gốc có nhiều thông tin nhiễu ,nhiều thông tin dư thừa,thay vì đưa tất cả
thông tin trên video để phân tích thì ta chỉ cần tập chung quan tâm đến các tư thế
của người đánh.Chính vì vậy nhóm chúng em đã sử dụng phương pháp trích xuất
khung xương giúp loại bỏ các thông tin nền không cần thiết,giúp tối ưu bài hiệu
suất.
Các phương pháp trích xuất khung xương:
-Open Pose:
+Link bài báo: Realtime Multi-Person 2D Pose Estimation using Part Affinity
Fields
+Đánh giá: Đạt độ chính xác cao nhất về phát hiện keypoint và khung xương
thời điểm công bố. Giới thiệu phương pháp dùng Part Affinity Fields hiệu
quả.
+Độ chính xác: Đạt mAP 79.1% trên subset, 75.6% trên MPII Multi-Person
full testing Dataset.
+Mã nguồn: Có sẵn mã nguồn mở https://github.com/CMU-Perceptual-
Computing-Lab/openpose
Đánh giá cảm quan về độ tương đồng, tính khả thi để sử dụng lên golfDB: Có
tiềm năng áp dụng tốt với các đối tượng là người —> Có thể dễ dàng phát
hiện được khung xương của golfer.
-HRNet:
+Link bài báo: Deep High-Resolution Representation Learning for Visual
Recognition
+Đánh giá: Đạt độ chính xác cao nhờ duy trì độ phân giải cao trong suốt quá
trình trích xuất đặc trưng. Giảm mất mát thông tin so với các mạng khác.
+Độ chính xác: Đạt mAP 76.3% trên COCO test-dev, cao hơn OpenPose.
+Mã nguồn:
https://github.com/leoxiaobin/deep-high-resolution-net.pytorch**

9
Nhận xét: So với OpenPose, HRNet có độ chính xác cao hơn nhờ kiến trúc
mạng giữ nguyên độ phân giải ảnh. Tuy nhiên tốc độ xử lý chậm hơn.
-Mediapipe pose:
+Mã nguồn:
https://colab.research.google.com/github/googlesamples/mediapipe/blob/
main/examples/pose_landmarker/python/%5BMediaPipe_Python_Tasks%
5D_Pose_Landmarker.ipynb
+Đánh giá:Độ chính xác cao,33 điểm khớp 3d,sử dụng được trên nhiều thiết
bị.
Nhận xét:So với OpenPose,HRNet,Mediapipe pose có tốc độ nhanh hơn,ứng
dụng được nhiều hơn.
Như vậy sẽ dùng mediapipe pose để sử dụng trích xuất khung xương

10
CHƯƠNG 3. CỤ THỂ PHƯƠNG PHÁP SỬ DỤNG

3.1 Trích xuất khung xương sử dụng thư viện Mediapipe.


MediaPipe Pose là giải pháp học máy cho phép theo dõi chuyển động cơ thể với
độ chính xác cao, suy luận ra 33 điểm khớp 3D và mask phân vùng nền trên toàn
bộ cơ thể từ các khung hình video RGB. Các giải pháp hiện đại ngày nay chủ yếu
dựa trên các môi trường máy tính để bàn mạnh mẽ để suy luận, trong khi phương
pháp này đạt hiệu năng thời gian thực trên hầu hết các điện thoại thông minh,
máy tính để bàn/laptop hiện đại, trên python và thậm chí cả trên web.
BlazePose Detector
Mô hình phát hiện tư thế được phát triển từ từ mô hình BlazeFace, như một
proxy cho bộ phát hiện tư thế người. Nó dự đoán rõ ràng hai điểm ảo bổ sung mô
tả chặt chẽ tâm cơ thể con người, góc quay và tỷ lệ như một vòng tròn, nhằm
mục đích dự đoán điểm giữa hông của một người, bán kính đường tròn bao
quanh toàn bộ cơ thể, và góc nghiêng của đường nối điểm giữa vai và hông.

Hình 3-1: Mô tả cách vận hành của BlazeFace

Pose Landmark Model


Thư viện mediapipe cũng cung cấp sẵn một model pose landmarker, dựa trên các
keypoints của mô hình Blazepose để dự đoán vị trí của 33 mốc tư thế trên cơ thể
người (hình bên dưới)

Hình 3-2: Chi tiết và tên 33 mốc tư thế

11
Các mốc được chia ra làm 2 khối chính, từ mốc 0 đến 10 dự đoán vị trí mắt mũi
miệng trên khuôn mặt. Và khối còn lại dự đoán các khớp xương phần thân người
từ mốc 11 đến 32, với các mốc đánh số lẻ thể hiện phần thân bên trái và các mốc
đánh số chẵn thể hiện phần thân bên phải.

3.2 SwingNet
SwingNet là một kiến trúc mạng được thiết kế đặc biệt cho nhiệm vụ làm quen
với cú đánh trong golf, nhưng có thể khái quát hóa cho các cú đánh có mặt trong
nhiều môn thể thao khác nhau, chẳng hạn như bóng chày, quần vợt và cricket.
Chi tiết triển khai

Hình 3-3: Kiến trúc model SwingNet

Các frame trong một video của cú swing đã được điều chỉnh kích thước bằng
openCV để đạt được kích thước đầu vào chuẩn hóa. Các frame này sau đó đưa
qua model MobileNetV2.
MobileNetV2 là một trong những mạng CNN nhẹ, hiệu quả cho các thiết
bị di động. Nó bao gồm 5 lớp, mỗi lần chạy qua một lớp tích chập, kích thước
của feature map sẽ nhỏ hơn kích thước ảnh đầu vào 2 lần, với 5 lớp feature map
sẽ nhỏ hơn 32 lần. Vì vậy, phải đảm bảo ảnh đầu vào có kích thước chia hết cho
32. Ở đây nhóm chọn kích thước chuẩn hóa cho ảnh đầu vào là 160x160.
Hàm f nhằm mục đích tính trung bình cho feature map. Để cho phép việc
huấn luyện trên các đợt dữ liệu hình ảnh, nhiều chuỗi ảnh có độ dài T đã được
nối lại theo chiều kênh trước khi được đưa vào mạng. Các đặc trưng đầu ra f đã
được tái hình thành thành dạng (batch size, 1x1, 64) trước khi được truyền vào
kiến trúc LSTM.
Long Short – Term Memory 2 chiều giúp sử dụng thông tin từ cả frame
trước và frame sau để phân loại cho frame hiện tại. Lớp LSTM để mô hình học
được về các mối quan hệ theo thời gian giữa các khung hình. Cuối cùng là một
fully - connected layer để dự đoán xác suất của 9 sự kiện (8 sự kiện swing và 1
no-event), phục vụ cho mục đích phân loại 8 sự kiện swing đó.

12
CHƯƠNG 4. DATA

4.1 Dataset GolfDB


GolfDB là một bộ dữ liệu video chất lượng cao được tạo ra cho các ứng dụng
nhận diện chung trong golf. Với 1400 mẫu video cú đánh golf và hơn 390,000
khung hình, GolfDB là một bộ dữ liệu tương đối lớn cho một lĩnh vực cụ thể.
Cách thu thập data
Dữ liệu được thu thập từ 580 video trên YouTube chứa các cú đánh golf trong
thời gian thực và chế độ chạy chậm đã được thu thập thủ công. Các video trên
YouTube chủ yếu bao gồm các golfer chuyên nghiệp từ PGA, LPGA và
Champions Tours, tổng cộng có 248 cá nhân với những cú đánh golf đa dạng.
Các video được quay từ nhiều góc độ của camera và từ nhiều địa điểm khác nhau
trên các sân golf khác nhau, các người chơi khác nhau, gậy đánh khác nhau, góc
nhìn khác nhau, điều kiện ánh sáng khác nhau, môi trường xung quanh, đều giúp
nâng cao khả năng tổng quát của các mô hình thị giác máy tính được đào tạo trên
bộ dữ liệu này.
Gán nhãn.
Tổng cộng 1400 mẫu video golf swing đã được trích xuất từ các video trên
YouTube đã được các tác giả của bộ dữ liệu này gán nhãn đầy đủ. Đối với mỗi
video, gắn nhãn 10 frame cho mỗi cú swing: frame bắt đầu, 8 sự kiện trong quá
trình swing, và frame kết thúc. Ngoài gắn nhãn sự kiện, họ cũng vẽ bounding
box, nhập thông tin về loại gậy và góc quay, xác định video ở tốc độ thời gian
thực hay chậm.

Hình 4-1: Phân phối của GolfDB. Tổng số khung hình trong các mẫu thời gian thực và
chạy chậm là gần bằng nhau (≈195k mỗi mẫu)..

13
Hình 4-2: Thời gian sự kiện trung bình từ Địa chỉ đến Tác động của 5 người chơi golf
chuyên nghiệp nữ (5 người đứng đầu) và nam (5 người dưới cùng) sử dụng gậy driver
hoặc gậy gỗ fairway. Thời gian sự kiện được chuẩn hóa từ Address đến Impact.

4.2 Quá trình tạo data cho bài toán của nhóm.
Từ dataset GolfDB, sử dụng phương pháp trích xuất khung xương bằng model
pose landmarker trên thư viện Mediapipe để tạo ra bộ dataset phù hợp với yêu
cầu bài toán.
Đầu tiên, tiến hành tách khung hình từ video và thực hiện gán nhãn khung
xương trực tiếp lên các khung hình đó. Công việc này nhằm mục đích kiểm tra số
lượng khung hình lỗi, đánh giá chất lượng gán nhãn khung xương. Kết quả cho
thấy tỉ lệ lỗi gán nhãn ở các video 0 đến 4 lần lượt là 8.7%, 9.1%, 6%, 10%,
10.7%. Kết quả này được đánh giá là nằm trong giới hạn cho phép.
Tiếp theo, thực hiện gán nhãn khung xương trên toàn bộ dataset golfDB.
Sử dung video gốc để phát hiện khung xương và chuyển khung xương lên một
khung hình mới có nền đồng nhất, nhằm loại bỏ tất cả các nhiễu có thể ảnh
hưởng đến quá trình training như khung cảnh xung quanh, xuất hiện thêm người
khác trong khung hình,… Đảm bảo giữ nguyên tốc độ khung hình của video gốc
và kích thước chuẩn hóa 160x160. Các khung hình sau khi trích xuất có định
dạng như hình dưới.

Hình 4-3: Frame đã trích xuất khung xương

14
Dataset sau khi hoàn thành trích xuất khung xương được đưa vào huấn luyện và
kiểm tra với tỉ lệ 1050 video phục vụ quá trình huấn luyện và 350 video phục vụ
quá trình kiểm thử.

15
CHƯƠNG 5. KẾT QUẢ

5.1 Mô tả metric đánh giá


Mức dung sai δ
Mức dung sai δ chỉ số lượng khung hình mà trong đó một sự kiện được xem
là được phát hiện chính xác. Trong các mẫu thời gian thực, nếu một sự kiện được
cho là xảy ra giữa hai khung hình, việc lựa chọn sự kiện sẽ do người phân loại và
gán nhãn quyết định. Do sự biến động vốn có trong lựa chọn của người phân loại
và gán nhãn, đề xuất đưa ra một mức dung sai phụ thuộc vào mẫu dựa trên số
khung hình từ Address đến Impact. Giá trị này xấp xỉ 30 khung hình trung bình
cho các video thời gian thực, khớp với tốc độ khung hình 30 fps (tức là thời
lượng trung bình của một cú đánh golf từ Address đến Impact là khoảng 1 giây).
𝑛
𝛿 = max⁡([ ] , 1)
𝑓
Trong đó:
• n là số khung hình từ Address đến Impact.
• f là tần số lấy mẫu.
𝑛
• [ ] được làm tròn đến số nguyên gần nhất.
𝑓

Chỉ số đánh giá PCE


Chỉ số đánh giá PCE là "Phần trăm sự kiện chính xác" (Percentage of
Correct Events) trong phạm vi dung sai. PCE tương đương về mặt thời gian với
chỉ số PCKh phổ biến được sử dụng trong ước tính tư thế con người.

Cách tính PCE:


• Đặt mức dung sai δ: Đây là khoảng thời gian cho phép xung quanh thời
điểm thực sự của một sự kiện để nó vẫn được coi là được phát hiện chính
xác.
• Xác định các sự kiện được phát hiện: Xác định tất cả các sự kiện được hệ
thống phát hiện trong dữ liệu.
• So sánh thời gian phát hiện với thời gian thực: Cho mỗi sự kiện được phát
hiện, so sánh thời điểm hệ thống phát hiện với thời điểm thực tế của sự
kiện trong dữ liệu.
• Tính toán các sự kiện chính xác: Kiểm tra xem thời gian phát hiện nằm
trong phạm vi dung sai xung quanh thời gian thực hay không. Nếu có, thì
sự kiện đó được tính là chính xác.
• Tính tỷ lệ sự kiện chính xác: Chia số lượng sự kiện chính xác cho tổng số
sự kiện được phát hiện và nhân với 100% để tính PCE.

Ý nghĩa của PCE:

16
• PCE cung cấp thông tin về độ chính xác của hệ thống trong việc phát hiện
các sự kiện trong khung thời gian cho phép.
• Giá trị PCE cao cho thấy hệ thống có khả năng phát hiện chính xác các sự
kiện.
• Giá trị PCE thấp cho thấy hệ thống có nhiều phát hiện sai hoặc bỏ sót sự
kiện.

Ở bài toán của nhóm, nhóm đã chọn sử dụng chỉ số PCE.


5.2 Kết quả đánh giá

Hình 5-1: Minh họa chỉ số PCE trung bình đạt được

Kết quả PCE trung bình đạt được xấp xỉ 65,86% với tập dữ liệu kiểm thử,
thấp hơn khá nhiều so với kết quả PCE trung bình trên tập dữ liệu training:
85,04%.
Training Testing
Dataset golfDB gốc 84,53% 71,5%
Dataset đã trích xuất 85,04% 65,86%
Bảng 5-1: Kết quả PCE trung bình so sánh trên 2 bộ dataset.

Kết quả so sánh trên cho thấy biểu hiện overfitting của mô hình đã huấn
luyện. Một phương pháp cải thiện được đưa ra là giảm độ lớn các mốc tư
thế, tối giản đường viền các mốc tư thế để tăng độ chính xác khi phân loại.
Khung hình sau khi được tối ưu hóa các mốc tư thế có định dạng như sau:

17
Hình 5-2: Frame sau khi đã tối ưu các mốc tư thế

Kết quả PCE trung bình đạt được trên tập testing sau khi tối ưu hóa data đạt
xấp xỉ 66,6%. Mặc dù chỉ số PCE có cải thiện so với trước khi tối ưu nhưng
vẫn còn biểu hiện overfitting của mô hình này.
5.3 Cách train và test model
Cách train model

• Khởi tạo mô hình EventDetector để phát hiện các sự kiện trong quá trình
swing golf.
• Sử dụng hàm freeze_layers để freeze các layer đầu của mô hình.
• Tạo một đối tượng dataset từ tập dữ liệu GolfDB
• Sử dụng data_loader để load dữ liệu từ tập train_split.pkl.
• Định nghĩa loss function là CrossEntropyLoss, optimizer là Adam.
• Huấn luyện mô hình trong 2000 iterations, lưu mô hình sau mỗi 100
iterations.
• Trọng số các class được cân bằng do sự mất cân bằng dữ liệu giữa các
events và no-event.
• In ra loss sau mỗi iteration để theo dõi quá trình huấn luyện.

Cách test model


• Tạo đối tượng dataset từ tập dữ liệu GolfDB dành cho xác thực.
• Tạo một data_loader để lặp qua các mẫu dữ liệu trong dataset (tạo bộ nạp
dữ liệu)
• Đánh giá mô hình trên tập dữ liệu xác thực:
o Duyệt qua từng mãu trong data_loader:
▪ Lấy các khung hình và nhãn tương ứng.
▪ Chia các khung hình thành các lô nhỏ nếu cần thiết để phù
hợp với bộ nhớ GPU.
▪ Sử dụng mô hình để dự đoán xác suất cho từng lô.
▪ Ghép các dự đoán của các lô thành một dự đoán hoàn chỉnh.

18
▪ Tính toán độ chính xác của dự đoán cho mẫu hiện tại.
o Tính toán PCE trung bình trên toàn bộ tập dữ liệu xác thực

19
CHƯƠNG 6. CÔNG VIỆC TIẾP THEO

6.1 Các vấn đề gặp phải khiến cho kết quả thấp hơn so với bài báo gốc
Nhiễu nền

Trong quá trình tác frame ảnh một số frame bị lẫn người khiến cho quá
trình xác định chủ thể bị sai lệch, chất lượng hình ảnh sau khi tách frame chưa
được tốt.
Cách khắc phục:
• Lọc Wiener:
o Sử dụng một bộ lọc tuyến tính để loại bỏ nhiễu.
o Phương pháp này hiệu quả với nhiễu Gauss và nhiễu muối tiêu.
• Lọc biến đổi wavelet:
o Phân tích hình ảnh thành các thành phần tần số khác nhau.
o Loại bỏ các thành phần tần số cao chứa nhiễu.
o Phương pháp này hiệu quả với nhiễu có cấu trúc.
• Lọc dựa trên học máy:
o Sử dụng các thuật toán học máy để phân biệt giữa nhiễu và dữ liệu
thực.
o Phương pháp này hiệu quả với nhiễu phức tạp.

Kết quả trích xuất khung xương chưa đủ tốt

Cách khắc phục:


• Thu thập dữ liệu chất lượng tốt hơn.
• Thay đổi sử dụng một số thuật toán trích xuất khung xương khác đánh giá
và so sánh hiệu quả.
• Lọc nhiễu và làm mịn để cải thiện độ chính xác của kết quả trích xuất
khung xương.

20
KẾT LUẬN

Sau một thời gian nghiên cứu về AI, đặc biệt là đề tài Golf Swing
Analysis, nhóm em đã nắm được các quy trình nghiên cứu, thực hiện, kiểm tra và
đánh giá một dự án AI. Đồng thời nhóm đã chạy và thu được kết quả so với bài
báo gốc còn nhiều khuyết điểm và cần cải tiến thêm. Trong quá trình thực hiện
do thời gian và kiến thức còn nhiều thiếu sót, mong thầy và các bạn đóng góp ý
kiến để nhóm em hoàn thiện hơn.
Nhóm em xin chân thành cảm ơn TS. Võ Lê Cường và bạn Đoàn Tiến Đạt
đã giúp đỡ nhóm trong quá trình thực hiện bài tập lớn này.

21
TÀI LIỆU THAM KHẢO

[0] GolfDB: A Video Database for Golf Swing Sequencing.


[1] HSBC. Golf’s 2020 vision: The HSBC report, 2012. Retrieved February 11,
2019, from http://www.golf.org.au/site/ content/document/00017543- source.pdf.
[2] M. Andriluka, L. Pishchulin, P. Gehler, and B. Schiele. 2d human pose
estimation: New benchmark and state of the art analysis. In CVPR, June 2014
[3] mediapipe/docs/solutions/pose.md at master · google/mediapipe (github.com)

22

You might also like