เสร็จแล้วจะได้ออกมาเป็นวิดีโอ ลดน้ำหนัก 10 กิโลใน 2 สัปดาห์กับพี่โชโกะและพี่หมี EPT แบบนี้
ขอขอบคุณวิดีโอต้นฉบับจาก はいだしょうこ - 笑顔で本気のHAND CLAP〜3回リピート10分ver.〜
ท่านผู้อ่านรู้จัก Motion Capture กันไหมครับ? Motion Capture เป็นกระบวนการแปลการเคลื่อนไหวของคนหรือสิ่งต่าง ๆ จากโลกจริงให้เป็นข้อมูลดิจิทัลที่คอมพิวเตอร์สามารถเข้าใจได้ ซึ่งเป็นเรื่องที่มีประโยชน์มากตั้งแต่ใช้ทำงานวิจัยไปจนถึงอุตสาหกรรมบันเทิงที่ทุกท่านน่าจะเคยเห็นผ่านตากันมาบ้าง เพราะเป็นกระบวนการที่อยู่เบื้องหลังภาพยนตร์และแอนิเมชันหลาย ๆ เรื่องเลยทีเดียว ตัวอย่างเช่นเรื่อง Avatar ของเจมส์ คาเมรอน ก็ใช้ Motion Capture มาจับทั้งท่าทางและสีหน้าของนักแสดงเช่นกันครับ
การทำ Motion Capture มีมาตั้งแต่ช่วงคริสต์ทศวรรษ 1970 ตลอดหลายปีที่ผ่านมานี้มีผู้คิดค้นเทคนิคต่าง ๆ ขึ้นมามากมาย เทคนิคที่นิยมใช้มากที่สุดจนถึงสมัยนี้คือวิธีใช้ตัว Marker สะท้อนแสงติดตามจุดต่าง ๆ ที่ตัวนักแสดง เช่นตัวอย่างจากเรื่อง Avatar ในภาพด้านบน เวลาถ่ายทำจะใช้กล้องถ่ายจากหลาย ๆ มุมแล้วประมวลผลออกมา ถือเป็นระบบที่นิยมที่สุด แม่นยำที่สุด ยืดหยุ่นที่สุด อยากจับการเคลื่อนไหวของอะไรก็ทำได้ทั้งนั้น แต่แน่นอนว่าของดีแบบนี้ย่อมต้องมาพร้อมขั้นตอนการใช้งานที่ยุ่งยากและค่าใช้จ่ายที่ค่อนข้างสูงมาก มีตั้งแต่หลักหลายแสนไปจนหลายล้าน ดังนั้นเราจึงมักจะเห็นระบบนี้ได้ตามมหาวิทยาลัยหรือตามสตูดิโอหรือตามบริษัทใหญ่ ๆ เท่านั้น นอกจากเทคนิคนี้ก็ยังมีเทคนิคที่ใช้เซนเซอร์ในการตรวจจับการเคลื่อนไหวด้วยซึ่งจะมีราคาถูกกว่าแต่แม่นยำสู้ไม่ได้ครับ
อ่าว แล้วถ้าอยากทำ Motion Capture ที่บ้านแต่ไม่อยากเสียเงินล่ะ?
สำหรับท่านผู้อ่านที่กำลังมีคำถามนี้ในใจ ไม่ต้องกังวลไปครับ ทาง EPT หาคำตอบและวิธีการมาเสิร์ฟให้ท่านถึงที่แล้ว ๆ ๆ นั่นคือ AI นั่นเอง! เทคนิคการทำ Motion Capture ด้วย AI นั้นเป็นเทคนิคที่ใหม่ที่สุด ต้นทุนต่ำที่สุด และเชื่อว่าจะเป็นที่นิยมที่สุดในอนาคตด้วย เทคนิคนี้ใช้เพียงแค่ไฟล์วิดีโอที่ถ่ายภาพเคลื่อนไหวของคนเท่านั้น ดังนั้นแน่นอนว่าย่อมต้องมีจุดอ่อนเรื่องความแม่นยำ แต่ถ้าเราไม่ได้จะเอาไปทำงานวิจัยที่เกี่ยวพันกับชีวิตมนุษย์ซึ่งต้องการความแม่นยำสูงหรือเอาไปทำภาพยนตร์หรือเกมระดับ AAA แค่เทคโนโลยี AI ณ ขณะที่เขียนบทความนี้ก็เพียงพอสำหรับใช้ในครัวเรือนหรือบริษัทเล็ก ๆ แล้วครับ
ในบทความ AI103 - Animated Drawings เราได้สร้างแอนิเมชันจากตัวการ์ตูนที่เราวาดเองกันไปแล้ว แต่ตัวการ์ตูนของเราทำได้แค่ท่าทางจากตัวอย่างที่มีให้แล้วเท่านั้น ซึ่งแน่นอนว่าหลายคนคงอยากให้ตัวการ์ตูนขยับตามท่าที่กำหนดเองมากกว่า ดังนั้นในบทความนี้เราจะมาสร้างไฟล์ท่าเต้นจากไฟล์วิดีโอสำหรับนำไปกำหนดท่าให้ตัวการ์ตูนขยับตามด้วย AI กันครับ ทั้งนี้ถึงแม้บทความนี้จะไม่ยากแต่จะยุ่งยากตอนเตรียมตัวอยู่สักหน่อย ผู้อ่านจำเป็นต้องมีความรู้เรื่องคอมพิวเตอร์และการใช้ Command Line พื้นฐานนะครับ
ใครงงตั้งแต่คำว่า Command Line ขอแนะนำคอร์ส SUPER USER (SU101) เพื่อปูพื้นฐานก่อนเลยครับ สำหรับใครที่สนใจคอร์สเรียน AI แต่ยังไม่มีพื้นฐานเขียนโปรแกรมมาก่อน ขอแนะนำคอร์ส Python + Web Programming + Machine Learning (PY203) ของทาง EPT ที่สอนแบบจัดเต็มตั้งแต่พื้นฐาน Python จนลงลึกถึงทฤษฎี AI ซึ่งเป็นคอร์สที่มีหลักสูตรเทียบเท่าเรียนในมหาวิทยาลัยชั้นนำ 2-3 ปีเลยครับ
พิเศษวันนี้! หากสมัครคอร์ส Python + Web Programming + Machine Learning (PY203) แล้วแจ้งผ่านทางกล่องข้อความของเพจ Expert.Programming.Tutor ว่ามาสมัครเพราะอ่านบทความนี้ ทางเราจะแถมคอร์ส SUPER USER (SU101) ให้ไปเรียนด้วยแบบฟรี ๆ เลยครับ
ก่อนจะทำตามบทความนี้จะต้องทำตามบทความ AI103 - Animated Drawings ให้ได้แอนิเมชันออกมาก่อนนะครับ
สร้าง Virtual environment และติดตั้ง Library และ Package ที่จำเป็นต้องใช้
1. เปิดโปรแกรม Anaconda Prompt ขึ้นมาแล้วพิมพ์คำสั่งต่อไปนี้และรันทีละคำสั่ง เพื่อสร้างและ activate virtual environment ซึ่ง virtual environment ที่ใช้ในบทความนี้จะตั้งชื่อว่า bvh
หมายเหตุ: ระหว่างสร้าง environment จะมีข้อความถามว่า Proceed ([y]/n)? ให้พิมพ์ y แล้วกด Enter เพื่อดำเนินการต่อ
conda create --name bvh python=3.8.13 |
conda activate bvh |
2. พิมพ์คำสั่งต่อไปนี้และรันทีละคำสั่งเพื่อโคลน Project และติดตั้ง Library ที่จำเป็น
หมายเหตุ: คำสั่งแต่ละช่องคือ 1 บรรทัด
git clone https://github.com/HW140701/VideoTo3dPoseAndBvh.git |
cd VideoTo3dPoseAndBvh |
pip install -e git+https://github.com/ncullen93/torchsample.git#egg=torchsample |
pip install visdom nibabel h5py tqdm pillow scipy pandas opencv-python matplotlib torchvision yacs |
3. ติดตั้ง PyTorch โดยคลิกเลือกและดูคำสั่งสำหรับติดตั้งจากเว็บ PyTorch
- ตัวอย่างคำสั่งติดตั้งสำหรับเครื่องที่จะใช้ CPU คำนวณอย่างเดียว
pip3 install torch torchvision torchaudio |
- ตัวอย่างคำสั่งติดตั้งสำหรับเครื่องที่จะใช้ GPU ก่อนอื่นต้องดูเวอร์ชันของ CUDA ในเครื่องเราก่อนด้วยคำสั่ง
nvcc --version |
จากนั้นถึงจะดูคำสั่งสำหรับติดตั้งจากเว็บ PyTorch เพราะต้องใช้ Compute Platform ให้ตรงกับที่เครื่องเรามี เช่นถ้ามี CUDA 11.7 คำสั่งสำหรับติดตั้งจะเป็นดังนี้
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 |
4. ติดตั้ง FFmpeg
- ดาวน์โหลดไฟล์ ffmpeg.exe จากเว็บ FFmpeg
- เอาไฟล์ ffmpeg.exe ที่ดาวน์โหลดมาไปใส่ไว้ในโฟลเดอร์เดียวกับโฟลเดอร์ที่ติดตั้ง Python ของ Environment ถ้าไม่รู้ว่าอยู่ไหนสามารถดูได้โดยพิมพ์คำสั่งดังนี้
where python |
ดาวน์โหลดโมเดลที่จำเป็นต้องใช้
1. 2D Joint detectors ในบทความนี้จะใช้ Alphapose
2. 3D Joint detectors
1. นำวิดีโอที่มีภาพเคลื่อนไหวของท่าทางที่ต้องการไปใส่ในโฟลเดอร์ outputs\inputvideo ที่อยู่ในโฟลเดอร์ Project เช่นในตัวอย่างนี้คือวิดีโอชื่อ handclap.mp4 ซึ่งตัดส่วนหนึ่งมาจากคลิปนี้
2. เปิดไฟล์ videopose.py ที่อยู่ในโฟลเดอร์ Project ขึ้นมาและแก้ชื่อไฟล์วิดีโอในคำสั่ง inference_video('outputs/inputvideo/kunkun_cut.mp4', 'alpha_pose') ที่อยู่บรรทัดล่างสุดของไฟล์เป็นชื่อวิดีโอในขั้นตอนที่ 1 ของเราเอง เช่นในตัวอย่างนี้จะแก้เป็นดังนี้
หมายเหตุ: หลังจากแก้คำสั่งแล้วอย่าลืมบันทึกไฟล์ด้วย
inference_video('outputs/inputvideo/handclap.mp4', 'alpha_pose') |
3. กลับมาที่หน้าต่าง Anaconda Prompt (ที่ activate environment ชื่อ bvh อยู่) แล้วพิมพ์คำสั่งต่อไปนี้เพื่อรันโปรแกรมสร้างไฟล์ BVH
python videopose.py |
หมายเหตุ 1: สำหรับเครื่องที่รันแล้วเกิดข้อผิดพลาดเกี่ยวกับโมดูล torch._six ให้เปิดไฟล์ joints_detectors/Alphapose/fn.py ขึ้นมาแล้วคอมเมนต์หรือลบบรรทัด from torch._six import string_classes, int_classes (ประมาณบรรทัดที่ 9)
หมายเหตุ 2: สำหรับเครื่องที่รันแล้วเกิดข้อผิดพลาดเกี่ยวกับที่อยู่โฟลเดอร์ ให้สร้างโฟลเดอร์ตามชื่อที่โปรแกรมต้องการด้วยตนเอง
4. รอจนเสร็จจะได้ไฟล์ผลลัพธ์ที่โฟลเดอร์ outputs\outputvideo และไฟล์ BVH จะอยู่ในโฟลเดอร์ outputs\outputvideo\alpha_pose_handclap\bvh ที่อยู่ในโฟลเดอร์ Project ดังภาพ
ก่อนจะทำตามขั้นตอนต่อไปนี้จะต้องทำตามบทความ AI103 - Animated Drawings ให้ได้ไฟล์ตัวการ์ตูนที่เราสร้างเองออกมาก่อนนะครับ ซึ่งในบทความที่แล้วเราได้สร้างพี่หมี EPT และผลลัพธ์อยู่ในโฟลเดอร์ examples\eptbear_out ที่อยู่ในโฟลเดอร์ Project AnimatedDrawings
ขั้นตอนต่อไปนี้จะเป็นการสั่งให้พี่หมี EPT เต้นตามท่าทางจากไฟล์ BVH ที่เราสร้าง
หมายเหตุ: อย่าลืมเปลี่ยนชื่อโฟลเดอร์หรือชื่อไฟล์ต่าง ๆ ในตัวอย่างต่อไปนี้เป็นชื่อของโฟลเดอร์หรือไฟล์ในเครื่องของตัวเอง
1. เอาไฟล์ BVH ที่เราสร้างจากหัวข้อที่แล้วไปใส่ในโฟลเดอร์ examples\bvh\handclap ที่อยู่ในโฟลเดอร์ Project AnimatedDrawings
2. สร้างไฟล์ examples\config\motion\handclap.yaml ในโฟลเดอร์ Project AnimatedDrawings จากนั้นเปิดไฟล์ด้วย Text editor แล้วใส่ค่าดังต่อไปนี้ และบันทึกไฟล์
filepath: examples/bvh/handclap/alpha_pose_handclap.bvh
start_frame_idx: 0
end_frame_idx: null
groundplane_joint: LeftFoot
forward_perp_joint_vectors:
- - LeftArm
- RightArm
- - LeftUpLeg
- RightUpLeg
scale: 0.005
up: +y
3. สร้างไฟล์ examples\config\retarget\handclap_ppf.yaml ในโฟลเดอร์ Project AnimatedDrawings จากนั้นเปิดไฟล์ด้วย Text editor แล้วใส่ค่าดังต่อไปนี้ และบันทึกไฟล์
char_starting_location: [0.0, 0.0, -0.5]
bvh_projection_bodypart_groups:
- bvh_joint_names:
- RightArm
- RightForeArm
- RightHand
- LeftArm
- LeftForeArm
- LeftHand
method: pca
name: Upper Limbs
- bvh_joint_names:
- RightUpLeg
- RightLeg
- RightFoot
- LeftUpLeg
- LeftLeg
- LeftFoot
method: pca
name: Lower Limbs
- bvh_joint_names:
- Hips
- Spine
- Spine3
- Neck
method: frontal
name: Trunk
char_bodypart_groups:
- bvh_depth_drivers:
- Hips
char_joints:
- right_shoulder
- left_shoulder
- right_hip
- left_hip
- hip
- torso
- neck
- bvh_depth_drivers:
- LeftHand
char_joints:
- left_elbow
- left_hand
- bvh_depth_drivers:
- RightHand
char_joints:
- right_elbow
- right_hand
- bvh_depth_drivers:
- LeftFoot
char_joints:
- left_knee
- left_foot
- bvh_depth_drivers:
- RightFoot
char_joints:
- right_knee
- right_foot
char_bvh_root_offset:
bvh_projection_bodypart_group_for_offset: Lower Limbs
bvh_joints:
- - RightFoot
- RightLeg
- RightUpLeg
- - LeftFoot
- LeftLeg
- LeftUpLeg
char_joints:
- - right_foot
- right_knee
- right_hip
- - left_foot
- left_knee
- left_hip
char_joint_bvh_joints_mapping:
left_elbow: !!python/tuple
- LeftArm
- LeftForeArm
left_foot: !!python/tuple
- LeftLeg
- LeftFoot
left_hand: !!python/tuple
- LeftForeArm
- LeftHand
left_knee: !!python/tuple
- LeftUpLeg
- LeftLeg
torso: !!python/tuple
- Hips
- Spine3
neck: !!python/tuple
- Hips
- Neck
right_elbow: !!python/tuple
- RightArm
- RightForeArm
right_foot: !!python/tuple
- RightLeg
- RightFoot
right_hand: !!python/tuple
- RightForeArm
- RightHand
right_knee: !!python/tuple
- RightUpLeg
- RightLeg
char_runtime_checks:
- - above
- neck
- right_shoulder
- left_shoulder
4. สร้างไฟล์ examples\eptbear_out\handclap_cfg.yaml ในโฟลเดอร์ Project AnimatedDrawings จากนั้นเปิดไฟล์ด้วย Text editor แล้วใส่ค่าดังต่อไปนี้ และบันทึกไฟล์
controller:
MODE: video_render
OUTPUT_VIDEO_PATH: C:\Users\NT_Desktop\AnimatedDrawings\examples\eptbear_out\eptbear_handclap.gif
scene:
ANIMATED_CHARACTERS:
- character_cfg: C:\Users\NT_Desktop\AnimatedDrawings\examples\eptbear_out\char_cfg.yaml
motion_cfg: C:\Users\NT_Desktop\AnimatedDrawings\examples\config\motion\handclap.yaml
retarget_cfg: C:\Users\NT_Desktop\AnimatedDrawings\examples\config\retarget\handclap_ppf.yaml
5. เปิดหน้าต่าง Anaconda Prompt ใหม่ขึ้นมา แล้วพิมพ์คำสั่งต่อไปนี้เพื่อ activate environment ชื่อ animated_drawings ที่สร้างในบทความ AI103 - Animated Drawings และเข้าไปในโฟลเดอร์ Project AnimatedDrawings จากนั้นสั่งเริ่มการทำงาน Python interpreter
conda activate animated_drawings |
cd AnimatedDrawings |
python |
6. พิมพ์คำสั่ง 2 บรรทัดต่อไปนี้ใน interpreter
from animated_drawings import render render.start('./examples/eptbear_out/handclap_cfg.yaml') |
7. รอสักพักจะได้ไฟล์แอนิเมชันชื่อ eptbear_handclap.gif ในโฟลเดอร์ examples\eptbear_out ที่อยู่ในโฟลเดอร์ Project ดังภาพ
ซึ่งเมื่อนำมาใส่ในวิดีโอต้นฉบับก็จะได้วิดีโอออกกำลังกายสุดน่ารักออกมาแบบนี้
เป็นอย่างไรบ้างครับไม่ยากเลยใช่ไหมครับ ใครทำแล้วอย่าลืมส่งมาอวดทางเพจ Expert.Programming.Tutor นะครับ
สุดท้ายนี้สำหรับใครที่สนใจอยากทำ AI แต่ยังไม่มีพื้นฐานเขียนโปรแกรมมาก่อน ขอแนะนำคอร์ส Python + Web Programming + Machine Learning (PY203) ของทาง EPT ที่สอนแบบจัดเต็มตั้งแต่พื้นฐาน Python หรือหากมีพื้นฐาน Python แน่น ๆ อยู่แล้วแต่อยากเรียนเกี่ยวกับ AI แบบลงลึกถึงทฤษฎีก็ขอแนะนำคอร์ส Machine Learning (AI701) ครับ
ตอนนี้ AI กำลังพัฒนาไปอย่างรวดเร็วมาก ทำให้มีผู้พัฒนาหลายท่านสร้างโปรแกรมหรือไลบรารีเพื่อช่วยทำหรือช่วยลดเวลาในการทำงานต่าง ๆ ของมนุษย์ออกมาให้เราใช้กันอย่างมากมาย ในบทความต่อ ๆ ไป ทาง EPT จะทยอยรีวิวตัวที่น่าสนใจให้ดูเรื่อย ๆ นะครับ รอติดตามกันได้เลย
[1] https://github.com/HW140701/VideoTo3dPoseAndBvh
[2] https://github.com/facebookresearch/AnimatedDrawings
Tag ที่น่าสนใจ: ai motion_capture video_to_bvh animation python virtual_environment library_installation anaconda_prompt marker_reflective_system avatar machine_learning computer_vision command_line ai_technology video_processing
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM