Professional Documents
Culture Documents
Baocao AI
Baocao AI
Hà Nội, 12/2023
MỤC LỤC
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
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 ĐỀ
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.
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
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
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
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
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
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
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.
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Ả
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.
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.
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.
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
22