Buổi 6: Theo dõi Cử chỉ Toàn thân (Human Body / Pose Tracking)
Nội dung & thực hành
🤸 Bài 6: Theo dõi Tư thế — Robot Bắt chước Hành động
🤖 AI nhận biết chuyển động cơ thể
Trong bài trước, AI đã nhận diện khuôn mặt. Ở bài này, chúng ta sẽ giúp máy tính nhận biết tư thế của toàn bộ cơ thể bằng công nghệ Pose Estimation.
Hệ thống sẽ tìm các điểm quan trọng trên cơ thể, sau đó sử dụng tọa độ của chúng để xác định bạn đang đứng, nghiêng người hay giơ tay.
🎯 Mục tiêu bài học
Sau bài học này, bạn có thể:
- Hiểu điểm mốc cơ thể là gì.
- Bật tính năng nhận diện tư thế trong PictoBlox.
- Đọc tọa độ của vai, khuỷu tay và cổ tay.
- Nhận biết động tác giơ tay.
- Điều khiển nhân vật bằng chuyển động cơ thể.
1. Pose Estimation là gì?
Pose Estimation là công nghệ giúp AI xác định vị trí các bộ phận trên cơ thể từ hình ảnh hoặc video.
Hệ thống PoseNet chia cơ thể thành 17 điểm mốc — Keypoints:
| Nhóm | Điểm mốc |
|---|---|
| Khuôn mặt | Mũi, mắt trái, mắt phải, tai trái, tai phải |
| Tay | Vai, khuỷu tay và cổ tay |
| Chân | Hông, đầu gối và mắt cá chân |
Mỗi điểm mốc thường có:
- Tọa độ
x: vị trí theo chiều ngang. - Tọa độ
y: vị trí theo chiều dọc. - Độ tin cậy: mức độ chắc chắn của AI khi nhận diện.
2. Chuẩn bị camera
Để nhận diện tư thế chính xác:
- 1Đặt camera ở vị trí ổn định.
- 2Đứng cách camera đủ xa để thấy phần thân trên hoặc toàn bộ cơ thể.
- 3Chọn nơi có ánh sáng rõ.
- 4Tránh để nhiều người cùng xuất hiện trong khung hình.
- 5Dọn khoảng trống xung quanh trước khi vận động.
3. Thêm Extension Pose Detection
Trong PictoBlox:
- 1Bấm Mở rộng — Extension.
- 2Tìm và chọn Pose Detection hoặc Human Body Detection.
- 3Cho phép PictoBlox sử dụng webcam.
- 4Kiểm tra các khối nhận diện tư thế đã xuất hiện.
Tên khối có thể thay đổi nhẹ tùy phiên bản PictoBlox.
4. Bật và phân tích hình ảnh
Tạo chương trình cơ bản:
Khi bấm vào cờ xanh
Bật video trên sân khấu với độ mờ 20%
Liên tục
Phân tích tư thế từ cameraKhối phân tích cần nằm trong vòng lặp Liên tục để AI cập nhật vị trí cơ thể khi bạn di chuyển.
5. Đọc tọa độ các điểm mốc
Để nhận biết cánh tay, chúng ta cần các điểm:
Vai trái
Vai phải
Cổ tay trái
Cổ tay phảiTạo các biến:
Vai_trái_Y
Vai_phải_Y
Cổ_tay_trái_Y
Cổ_tay_phải_YCập nhật giá trị:
Liên tục
Phân tích tư thế từ camera
Đặt [Vai_trái_Y] thành
[Tọa độ y của vai trái]
Đặt [Cổ_tay_trái_Y] thành
[Tọa độ y của cổ tay trái]Khi bạn giơ tay trái lên cao, tọa độ của cổ tay sẽ cao hơn tọa độ của vai.
Nếu <Cổ_tay_trái_Y lớn hơn Vai_trái_Y> thì
Nói "Bạn đang giơ tay trái!"Nói [Cổ_tay_trái_Y], rồi lần lượt hạ tay và giơ tay. Nếu giá trị tăng khi giơ tay, dùng phép so sánh lớn hơn như trong bài. Nếu giá trị giảm, hãy đổi tất cả thành nhỏ hơn.6. Nhận biết từng động tác
Giơ tay trái
Nếu <Cổ_tay_trái_Y lớn hơn Vai_trái_Y> thì
Nói "Tay trái đang giơ lên!"Giơ tay phải
Nếu <Cổ_tay_phải_Y lớn hơn Vai_phải_Y> thì
Nói "Tay phải đang giơ lên!"Giơ cả hai tay
Nếu
<Cổ_tay_trái_Y lớn hơn Vai_trái_Y>
và
<Cổ_tay_phải_Y lớn hơn Vai_phải_Y>
thì
Nói "Hai tay đang giơ lên!"7. Dự án nhỏ: Robot bắt chước hành động
Nhiệm vụ
Cho nhân vật thay đổi trang phục theo tư thế của người dùng.
Khi bấm vào cờ xanh
Bật video trên sân khấu với độ mờ 20%
Liên tục
Phân tích tư thế từ camera
Đặt [Vai_trái_Y] thành [Tọa độ y của vai trái]
Đặt [Vai_phải_Y] thành [Tọa độ y của vai phải]
Đặt [Cổ_tay_trái_Y] thành [Tọa độ y của cổ tay trái]
Đặt [Cổ_tay_phải_Y] thành [Tọa độ y của cổ tay phải]
Nếu
<Cổ_tay_trái_Y lớn hơn Vai_trái_Y>
và
<Cổ_tay_phải_Y lớn hơn Vai_phải_Y>
thì
Chuyển sang trang phục [Giơ hai tay]
Nói "Tuyệt vời!" trong 1 giây
Không thì
Nếu <Cổ_tay_trái_Y lớn hơn Vai_trái_Y> thì
Chuyển sang trang phục [Giơ tay trái]
Không thì
Nếu <Cổ_tay_phải_Y lớn hơn Vai_phải_Y> thì
Chuyển sang trang phục [Giơ tay phải]
Không thì
Chuyển sang trang phục [Đứng bình thường]Nhân vật sẽ thay đổi hình dáng theo tư thế của bạn.
8. Điều khiển robot bằng tư thế
Có thể quy ước:
| Tư thế | Lệnh robot |
|---|---|
| Giơ tay trái | Rẽ trái |
| Giơ tay phải | Rẽ phải |
| Giơ hai tay | Tiến về phía trước |
| Hạ cả hai tay | Dừng lại |
Ví dụ:
Nếu <Giơ cả hai tay> thì
Robot tiến
Không thì
Nếu <Giơ tay trái> thì
Robot rẽ trái
Không thì
Nếu <Giơ tay phải> thì
Robot rẽ phải
Không thì
Robot dừng9. Nếu AI nhận diện chưa chính xác
Hãy kiểm tra:
- Toàn bộ vai và tay có nằm trong khung hình không.
- Căn phòng có đủ ánh sáng không.
- Quần áo có dễ phân biệt với phông nền không.
- Có nhiều người cùng xuất hiện không.
- Camera có bị rung không.
- Khối phân tích tư thế có nằm trong vòng lặp không.
Nếu nhân vật thay đổi trạng thái liên tục, hãy giữ tư thế ổn định trong khoảng 1 giây trước khi thực hiện lệnh.
🧩 Thử thách
Hãy nâng cấp dự án bằng một ý tưởng:
- 1Tạo trò chơi tập thể dục và tính điểm mỗi lần giơ tay.
- 2Điều khiển tàu vũ trụ bằng cách nghiêng người.
- 3Phát âm thanh khi người chơi giơ cả hai tay.
- 4Tạo nhân vật nhảy khi cổ tay cao hơn đầu.
- 5Thêm biến
Số_lần_tậpđể đếm số động tác đúng.
✅ Ghi nhớ
- Pose Estimation giúp AI nhận diện tư thế cơ thể.
- PoseNet sử dụng 17 điểm mốc.
- Mỗi điểm mốc có tọa độ
x,yvà độ tin cậy. - So sánh vị trí cổ tay với vai giúp nhận biết động tác giơ tay.
- Điều kiện giúp chuyển tư thế thành hành động của nhân vật hoặc robot.
- Camera cần đủ sáng và nhìn rõ cơ thể.
Câu hỏi nhanh
- 1Keypoint là gì?
- 2PoseNet nhận diện bao nhiêu điểm mốc?
- 3Cần so sánh những điểm nào để nhận biết động tác giơ tay?
- 4Vì sao nên thử trên sân khấu trước khi điều khiển robot thật?