ບົດທີ 6: ການຕິດຕາມທ່າທາງຮ່າງກາຍ ແລະ ມືແບບເວລາຈິງ
Theory & practice
🤸 ບົດທີ 6: ການຕິດຕາມທ່າທາງ — ຫຸ່ນຍົນທີ່ເຮັດຕາມທ່າຂອງເຈົ້າ
🤖 AI ທີ່ເຂົ້າໃຈການເຄື່ອນໄຫວຂອງຮ່າງກາຍ
ໃນບົດກ່ອນ, AI ໄດ້ກວດຈັບໃບໜ້າ. ໃນບົດນີ້, ພວກເຮົາຈະຊ່ວຍໃຫ້ຄອມພິວເຕີຮັບຮູ້ທ່າທາງຂອງທັງຮ່າງກາຍ ໂດຍໃຊ້ ການປະເມີນທ່າທາງ (Pose Estimation).
ລະບົບຈະຊອກຫາຈຸດສຳຄັນເທິງຮ່າງກາຍ, ແລ້ວໃຊ້ພິກັດຂອງຈຸດເຫຼົ່ານັ້ນເພື່ອຮູ້ວ່າເຈົ້າກຳລັງຢືນ, ອຽງ ຫຼື ຍົກແຂນ.
🎯 ຈຸດປະສົງການຮຽນ
ຫຼັງຈາກບົດຮຽນນີ້, ເຈົ້າຈະສາມາດ:
- ອະທິບາຍວ່າຈຸດສຳຄັນຂອງຮ່າງກາຍ (keypoint) ແມ່ນຫຍັງ.
- ເປີດການກວດຈັບທ່າທາງໃນ PictoBlox.
- ອ່ານພິກັດຂອງບ່າ, ສອກ ແລະ ຂໍ້ມື.
- ຮັບຮູ້ທ່າຍົກແຂນ.
- ຄວບຄຸມຕົວລະຄອນດ້ວຍການເຄື່ອນໄຫວຂອງຮ່າງກາຍ.
1. Pose Estimation ແມ່ນຫຍັງ?
Pose Estimation ແມ່ນເຕັກໂນໂລຊີທີ່ຊ່ວຍໃຫ້ AI ຫາຕຳແໜ່ງຂອງສ່ວນຕ່າງໆຂອງຮ່າງກາຍໃນຮູບ ຫຼື ວິດີໂອ.
ລະບົບ PoseNet ແບ່ງຮ່າງກາຍອອກເປັນ 17 ຈຸດສຳຄັນ:
| ກຸ່ມ | ຈຸດສຳຄັນ |
|---|---|
| ໃບໜ້າ | ດັງ, ຕາຊ້າຍ, ຕາຂວາ, ຫູຊ້າຍ, ຫູຂວາ |
| ແຂນ | ບ່າ, ສອກ ແລະ ຂໍ້ມື |
| ຂາ | ສະໂພກ, ຫົວເຂົ່າ ແລະ ຂໍ້ຕີນ |
ແຕ່ລະຈຸດສຳຄັນມັກມີ:
- ພິກັດ
x: ຕຳແໜ່ງຕາມແນວນອນ. - ພິກັດ
y: ຕຳແໜ່ງຕາມແນວຕັ້ງ. - ຄະແນນຄວາມໝັ້ນໃຈ: AI ແນ່ໃຈໃນການກວດຈັບປານໃດ.
2. ກຽມກ້ອງ
ເພື່ອໃຫ້ກວດຈັບທ່າທາງໄດ້ແມ່ນຍຳ:
- 1ວາງກ້ອງໄວ້ໃນຕຳແໜ່ງທີ່ໝັ້ນຄົງ.
- 2ຢືນໃຫ້ໄກພໍທີ່ກ້ອງຈະເຫັນຮ່າງກາຍສ່ວນເທິງ ຫຼື ທັງຕົວ.
- 3ເລືອກບ່ອນທີ່ມີແສງສະຫວ່າງດີ.
- 4ຫຼີກລ່ຽງການມີຫຼາຍຄົນໃນກອບພາບ.
- 5ເຮັດໃຫ້ມີບ່ອນວ່າງອ້ອມຕົວກ່ອນເຄື່ອນໄຫວ.
3. ເພີ່ມສ່ວນຂະຫຍາຍ Pose Detection
ໃນ PictoBlox:
- 1ຄລິກ Extension.
- 2ຊອກຫາ ແລະ ເລືອກ Pose Detection ຫຼື Human Body Detection.
- 3ອະນຸຍາດໃຫ້ PictoBlox ໃຊ້ເວັບແຄມ.
- 4ກວດວ່າບລັອກກວດຈັບທ່າທາງປາກົດແລ້ວ.
ຊື່ບລັອກອາດແຕກຕ່າງກັນເລັກນ້ອຍໃນແຕ່ລະເວີຊັນຂອງ PictoBlox.
4. ເປີດ ແລະ ວິເຄາະວິດີໂອ
ສ້າງໂປຣແກຣມພື້ນຖານ:
when green flag clicked
turn video on stage with 20% transparency
forever
analyse pose from cameraບລັອກວິເຄາະຕ້ອງຢູ່ໃນການວົນຊ້ຳ forever ເພື່ອໃຫ້ AI ອັບເດດຕຳແໜ່ງຮ່າງກາຍຢູ່ສະເໝີເມື່ອເຈົ້າເຄື່ອນໄຫວ.
5. ອ່ານພິກັດຂອງຈຸດສຳຄັນ
ເພື່ອຮັບຮູ້ການເຄື່ອນໄຫວຂອງແຂນ, ພວກເຮົາຕ້ອງການຈຸດເຫຼົ່ານີ້:
ບ່າຊ້າຍ
ບ່າຂວາ
ຂໍ້ມືຊ້າຍ
ຂໍ້ມືຂວາສ້າງຕົວປ່ຽນ:
Left_Shoulder_Y
Right_Shoulder_Y
Left_Wrist_Y
Right_Wrist_Yອັບເດດຄ່າຂອງມັນ:
forever
analyse pose from camera
set [Left_Shoulder_Y] to
[y position of left shoulder]
set [Left_Wrist_Y] to
[y position of left wrist]ເມື່ອເຈົ້າຍົກແຂນຊ້າຍ, ຂໍ້ມືຈະຢູ່ສູງກວ່າບ່າ.
if <Left_Wrist_Y greater than Left_Shoulder_Y> then
say "ເຈົ້າກຳລັງຍົກແຂນຊ້າຍ!"say [Left_Wrist_Y], ແລ້ວລົດແຂນລົງ ແລະ ຍົກແຂນຂຶ້ນສະລັບກັນ. ຖ້າຄ່າ ເພີ່ມຂຶ້ນ ເມື່ອຍົກແຂນ, ໃຫ້ໃຊ້ greater than ຄືໃນບົດນີ້. ຖ້າຄ່າ ຫຼຸດລົງ, ໃຫ້ປ່ຽນທຸກການປຽບທຽບເປັນ less than.6. ຮັບຮູ້ແຕ່ລະທ່າ
ຍົກແຂນຊ້າຍ
if <Left_Wrist_Y greater than Left_Shoulder_Y> then
say "ແຂນຊ້າຍຍົກຂຶ້ນແລ້ວ!"ຍົກແຂນຂວາ
if <Right_Wrist_Y greater than Right_Shoulder_Y> then
say "ແຂນຂວາຍົກຂຶ້ນແລ້ວ!"ຍົກທັງສອງແຂນ
if
<Left_Wrist_Y greater than Left_Shoulder_Y>
and
<Right_Wrist_Y greater than Right_Shoulder_Y>
then
say "ຍົກທັງສອງແຂນແລ້ວ!"7. ໂປຣເຈັກນ້ອຍ: ຫຸ່ນຍົນເຮັດຕາມ
ໜ້າວຽກ
ໃຫ້ຕົວລະຄອນປ່ຽນຊຸດໃຫ້ກົງກັບທ່າທາງຂອງຜູ້ໃຊ້.
when green flag clicked
turn video on stage with 20% transparency
forever
analyse pose from camera
set [Left_Shoulder_Y] to [y position of left shoulder]
set [Right_Shoulder_Y] to [y position of right shoulder]
set [Left_Wrist_Y] to [y position of left wrist]
set [Right_Wrist_Y] to [y position of right wrist]
if
<Left_Wrist_Y greater than Left_Shoulder_Y>
and
<Right_Wrist_Y greater than Right_Shoulder_Y>
then
switch costume to [Both arms up]
say "ເກັ່ງຫຼາຍ!" for 1 seconds
else
if <Left_Wrist_Y greater than Left_Shoulder_Y> then
switch costume to [Left arm up]
else
if <Right_Wrist_Y greater than Right_Shoulder_Y> then
switch costume to [Right arm up]
else
switch costume to [Standing]ຕົວລະຄອນປ່ຽນຮູບລັກສະນະໃຫ້ກົງກັບທ່າທາງຂອງເຈົ້າ.
8. ຄວບຄຸມຫຸ່ນຍົນດ້ວຍທ່າທາງ
ເຈົ້າສາມາດຕົກລົງກັນວ່າ:
| ທ່າທາງ | ຄຳສັ່ງຫຸ່ນຍົນ |
|---|---|
| ຍົກແຂນຊ້າຍ | ລ້ຽວຊ້າຍ |
| ຍົກແຂນຂວາ | ລ້ຽວຂວາ |
| ຍົກທັງສອງແຂນ | ເດີນໜ້າ |
| ລົດທັງສອງແຂນລົງ | ຢຸດ |
ຕົວຢ່າງ:
if <both arms up> then
robot forward
else
if <left arm up> then
robot turn left
else
if <right arm up> then
robot turn right
else
robot stop9. ຖ້າ AI ບໍ່ແມ່ນຍຳ
ໃຫ້ກວດ:
- ບ່າ ແລະ ແຂນທັງສອງຢູ່ໃນກອບພາບບໍ?
- ຫ້ອງສະຫວ່າງພໍບໍ?
- ເສື້ອຜ້າຂອງເຈົ້າໂດດເດັ່ນຈາກພື້ນຫຼັງບໍ?
- ມີຫຼາຍຄົນໃນກອບພາບບໍ?
- ກ້ອງສັ່ນບໍ?
- ບລັອກວິເຄາະທ່າທາງຢູ່ໃນການວົນຊ້ຳບໍ?
ຖ້າຕົວລະຄອນປ່ຽນສະຖານະໄປມາເລື້ອຍໆ, ໃຫ້ຖືແຕ່ລະທ່າໄວ້ໃຫ້ນິ່ງປະມານ 1 ວິນາທີ ກ່ອນທີ່ມັນຈະເຮັດວຽກ.
🧩 ສິ່ງທ້າທາຍ
ປັບປຸງໂປຣເຈັກດ້ວຍແນວຄິດໜຶ່ງ:
- 1ສ້າງເກມອອກກຳລັງກາຍທີ່ໃຫ້ຄະແນນທຸກເທື່ອທີ່ຍົກແຂນ.
- 2ບັງຄັບຍານອະວະກາດໂດຍການອຽງຕົວ.
- 3ຫຼິ້ນສຽງເມື່ອຜູ້ຫຼິ້ນຍົກທັງສອງແຂນ.
- 4ໃຫ້ຕົວລະຄອນກະໂດດເມື່ອຂໍ້ມືຢູ່ສູງກວ່າຫົວ.
- 5ເພີ່ມຕົວປ່ຽນ
Repsເພື່ອນັບການເຄື່ອນໄຫວທີ່ຖືກຕ້ອງ.
✅ ຈື່ໄວ້
- Pose Estimation ຊ່ວຍໃຫ້ AI ຮັບຮູ້ທ່າທາງຂອງຮ່າງກາຍ.
- PoseNet ໃຊ້ 17 ຈຸດສຳຄັນ.
- ແຕ່ລະຈຸດສຳຄັນມີພິກັດ
xແລະyແລະ ຄະແນນຄວາມໝັ້ນໃຈ. - ການປຽບທຽບຂໍ້ມືກັບບ່າ ຊ່ວຍຮັບຮູ້ການຍົກແຂນ.
- ເງື່ອນໄຂປ່ຽນທ່າທາງໃຫ້ເປັນການກະທຳຂອງຕົວລະຄອນ ຫຼື ຫຸ່ນຍົນ.
- ກ້ອງຕ້ອງການແສງສະຫວ່າງດີ ແລະ ເຫັນຮ່າງກາຍຊັດເຈນ.
ຄຳຖາມດ່ວນ
- 1ຈຸດສຳຄັນ (keypoint) ແມ່ນຫຍັງ?
- 2PoseNet ກວດຈັບຈຸດສຳຄັນໄດ້ຈັກຈຸດ?
- 3ເຈົ້າປຽບທຽບຈຸດໃດເພື່ອຮັບຮູ້ການຍົກແຂນ?
- 4ເປັນຫຍັງຕ້ອງທົດສອບເທິງເວທີກ່ອນຄວບຄຸມຫຸ່ນຍົນແທ້?