MUAY THAI
VISION ENGINE · AI
Muay Thai fighters in the ring
{ WAI KHRU }LIVE MUAY THAI AI{ NAK MUAY }MOTION INTELLIGENCE{ YOD MUAY }AI VISION ENGINE{ WAI KHRU }LIVE MUAY THAI AI{ NAK MUAY }MOTION INTELLIGENCE{ YOD MUAY }AI VISION ENGINE
ถ่ายทอดสด · AI

มวยไทย
VISION
ENGINE

อัปโหลดวีดีโอการแข่งขัน ตรวจจับและติดตามมุมแดงและมุมน้ำเงิน วิเคราะห์ท่าทาง การโจมตี และจังหวะทุกเฟรม

มวยไทย คือการต่อสู้แบบยืนสู้ที่มีประสิทธิภาพและอันตรายที่สุดในโลก

การเชียร์กีฬามวยไทยเป็นการเชียร์กีฬาที่สนุกดุเดือดที่สุดในโลก

เว็บไซต์นี้เป็นแหล่งรวบรวม Dataset ของการแข่งขันชกมวยไทยหลายหมื่นคู่ รวมเวลาการแข่งขันหลายหมื่นชั่วโมง ตั้งแต่ปี พ.ศ. 2528 กว่า 40 ปี ถือเป็นฐานข้อมูล Dataset ด้านการแข่งขันมวยไทยที่มากที่สุดในโลก

RED CORNER · แดง{ NAK MUAY }BLUE CORNER · น้ำเงิน{ YOD MUAY }AI TRACKINGWAI KHRURED CORNER · แดง{ NAK MUAY }BLUE CORNER · น้ำเงิน{ YOD MUAY }AI TRACKINGWAI KHRU
งานวิจัย

AI ที่เรียนรู้แยกร่างกายนักมวยไทย แล้วสร้างขึ้นใหม่ใน 3D

งานวิจัยของเราสอนให้ AI แยกร่างนักมวยแต่ละคนออกจากภาพในสังเวียนที่ซับซ้อน สร้างโครงกระดูก ตรวจจับและเก็บการเคลื่อนไหว เพื่อนำไปสร้าง Animation 3D และวิเคราะห์ท่าทางการต่อสู้

ภาพซ้อน mask แยกร่างและโครงกระดูกจุดข้อต่อของนักมวยไทยสองคนในจังหวะกอดปล้ำ
Mask แยกร่างกาย + จุดโครงกระดูก ที่สกัดจากฟุตเทจการแข่งขันจริง
  1. 1 · แยกร่างกายระดับพิกเซล (Segmentation)

    สร้าง mask แยกนักมวย A (แดง), B (น้ำเงิน), กรรมการ (เทา) และสิ่งรบกวน ได้แม้อยู่ในจังหวะกอดปล้ำหรือถูกบดบัง

  2. 2 · ติดตามและระบุตัวตน (Tracking & Identity)

    ใช้สีมุม, ขอบเขตเวที (ROI), ขนาดลำตัว, ความเร็ว และความต่อเนื่องตามเวลา เพื่อคงรหัสประจำตัวนักมวยให้ถูกคนทุกเฟรม

  3. 3 · ประเมินท่าทางและยกขึ้น 3 มิติ (Pose & 3D Lifting)

    จุดข้อต่อ 2D (COCO 17 / whole-body 133) ถูกยกเป็นข้อต่อ 3D พร้อมการปรับให้ลื่นไหลตามเวลา ทำให้เข่า ศอก และสะโพกสมจริงตามกายภาพ

  4. 4 · โครงกระดูกและเก็บการเคลื่อนไหว (Skeleton & Mocap)

    จับข้อต่อเข้ากับโครงกระดูกมนุษย์มาตรฐาน (ลำดับชั้นแบบ SMPL) แล้วส่งออกเป็นคลิปการเคลื่อนไหว BVH, FBX หรือ GLB พร้อมทำ retarget

  5. 5 · Animation และวิเคราะห์การต่อสู้

    นำคลิปไป retarget ใส่ตัวละคร 3D ใน Studio และใช้ข้อมูลชุดเดียวกันตรวจจับหมัด-เตะ จำแนกเทคนิค และวิเคราะห์สมรรถนะ

รายละเอียดเชิงเทคนิค

จับการเคลื่อนไหวแบบไร้มาร์กเกอร์จากกล้องถ่ายทอดสดตัวเดียว ไม่ต้องใส่ชุดเซ็นเซอร์หรือเข้าสตูดิโอ
จุดข้อต่อ 17–133 จุดต่อนักมวย ที่ 30–60 FPS พร้อมค่าความเชื่อมั่นและสถานะการถูกบดบังรายเฟรม
เครื่องมือให้คนตรวจแก้ (Human-in-the-loop) ทั้ง identity, bbox, mask, pose และป้ายกำกับท่า
ส่งออกชุดข้อมูล YOLO / COCO / JSON / Parquet และคลิปแอนิเมชัน FBX→GLB
ระบบจำแนกท่า: หมัดตรง หมัดฮุก หมัดเสย ถีบ เตะตัด เข่า ศอก และการกอดปล้ำ
การใช้งาน: ฟีดแบ็กการฝึกซ้อม คัดกรองความเสี่ยงบาดเจ็บ ช่วยตัดสิน และงานแอนิเมชันเกม/ภาพยนตร์
งานวิจัย · AI Avatar

AI Avatar ร่างนักมวยไทยที่สวมท่าทางจริงได้

งานวิจัยสายที่สองเปลี่ยนการเคลื่อนไหวที่จับได้ให้เป็นนักมวย 3D ที่เล่นและวิเคราะห์ได้ — อวตารมวยไทยที่มีโครงกระดูกพร้อมรับคลิปท่าทางใดก็ได้ ต่อยอดไปเป็นเกมต่อสู้เสมือนจริง การซ้อม VR และการวิเคราะห์เชิงชีวกลศาสตร์

  1. 1 · สร้างร่างอวตาร

    ใช้โมเดลร่างกายแบบพารามิเตอร์ (แนว SMPL-X) ปรับตามส่วนสูง ความยาวแขนขา และช่วงเอื้อมของนักมวยแต่ละคน ให้อวตารคงสัดส่วนจริงของนักกีฬา

  2. 2 · โครงกระดูกมาตรฐาน & รีทาร์เก็ต

    ใช้ชื่อกระดูกมาตรฐานเดียวกัน (เข้ากันได้กับ Mixamo/Unreal) ทำให้คลิปใดก็รีทาร์เก็ตลงอวตารใดได้ พร้อมคะแนนความตรงกันของกระดูกเพื่อเตือนเมื่อ rig ไม่เข้ากัน

  3. 3 · ทำความสะอาดการเคลื่อนไหว

    ล็อกเท้า/IK ลดการสั่น และแก้จุดสัมผัสพื้น เพื่อไม่ให้เท้าไถลหรือลอย ก่อนบันทึกคลิปเป็น FBX หรือ GLB

  4. 4 · ส่งออกเข้าเกม & ซิมูเลชัน

    นำคลิปเข้า Unity, Unreal, Blender หรือ three.js ได้ พร้อมลูปที่เบลนด์ต่อกันได้ทั้งท่าตั้งการ์ด ถีบ เข่า ศอก และการโหน/คลินช์

  5. 5 · วิเคราะห์ท่าทางบนอวตาร

    วัดมุมข้อต่อ ความเร็วเชิงมุม การแยกสะโพก-ไหล่ และจังหวะการออกอาวุธบนโครงกระดูกอวตาร ข้อมูลชุดเดียวกันใช้ให้ฟีดแบ็กโค้ชและฝึก AI คู่ต่อสู้

อวตารมวยไทย 3D กำลังแสดงท่าทางการต่อสู้ที่จับมาจากคลิปจริง
ท่าทางจากไฟต์จริงถูกรีทาร์เก็ตลงบนอวตารมวยไทยที่มีโครงกระดูกใน Studio

สิ่งที่สายงาน Avatar ทำให้เกิดขึ้นได้

เกมต่อสู้เสมือนจริงและการซ้อม VR ที่ขับด้วยท่าทางนักมวยไทยจริง ไม่ใช่แอนิเมชั่นที่คีย์ด้วยมือ
คลังท่า: ถีบ เตะตัด เตะสลับ เข่า ศอก การกวาดในคลินช์ และการตั้งรับ
เทียบอวตารนักเรียนกับนักมวยต้นแบบแบบเฟรมต่อเฟรม
Rig พร้อมฟิสิกส์/ragdoll สำหรับซิมูเลชันแรงกระทบและเอเจนต์ AI แบบ reinforcement learning
คัดกรองความเสี่ยงบาดเจ็บจากภาระข้อต่อและช่วงการเคลื่อนไหวที่ผิดปกติในหลายยก
งานภาพสำหรับภาพยนตร์ การถ่ายทอดสด และการสอน: รีเพลย์การแลกอาวุธจากมุมกล้องใดก็ได้
งานวิจัย · ระบบตัดต่อซีนต่อสู้อัตโนมัติ

ตัดวีดีโอการแข่งขันมวยไทยทั้งแมทช์ ให้เหลือเฉพาะซีนต่อสู้

งานวิจัยสายที่สามคือ AI ตัดต่อวีดีโอ อัพโหลดวีดีโอการแข่งขันมวยไทยทั้งแมทช์เข้าระบบ ระบบจะวิเคราะห์และจัดประเภทของทุกซีน เช่น การประกาศบนเวที ช่วงพักยก ช่วงนับ (8 Count) ภาพรีเพลย์ และช่วงโฆษณา แล้วตัดออกไป เหลือไว้เฉพาะช่วงที่นักมวยกำลังต่อสู้กันจริง ผลลัพธ์คือ Dataset ที่สะอาดและเข้มข้น พร้อมนำไปเทรนโมเดลตรวจจับท่าทาง การออกอาวุธ และวิเคราะห์เทคนิค

แผนภาพโฟลว์: อัพโหลดวีดีโอทั้งแมทช์ ระบบแยกซีนด้วย AI คัดกรองเฉพาะซีนต่อสู้ และไฟล์ผลลัพธ์พร้อมไทม์ไลน์
โฟลว์: อัพโหลดทั้งแมทช์ → แยกและจัดประเภทซีน → คัดเฉพาะซีนต่อสู้ → ส่งออกไฟล์ Dataset เฉพาะช่วงต่อสู้
  1. 1 · อัพโหลดวีดีโอทั้งแมทช์

    อัพโหลดไฟล์การแข่งขันเต็มแมทช์ (45 นาทีขึ้นไป ขนาดหลาย GB) เพียงครั้งเดียว ระบบแยกเสียงออกมา และสุ่มเฟรมที่ 1–4 FPS เพื่อใช้วิเคราะห์ซีน โดยไฟล์ต้นฉบับยังคงคุณภาพเดิมไว้สำหรับการตัดจริง

  2. 2 · ตรวจจับและจัดประเภทซีน

    ตรวจหารอยต่อช็อต (PySceneDetect / histogram + motion) เพื่อแบ่งแมทช์เป็นช็อตย่อย แล้วใช้โมเดลจัดประเภทวีดีโอร่วมกับสัญญาณ ROI ของเวที จำนวนนักมวย ตำแหน่งกรรมการ และกราฟิก/โลโก้ เพื่อระบุว่าแต่ละช็อตคือ ต่อสู้ ประกาศ พักยก นับ หรือโฆษณา

  3. 3 · คัดกรองเหลือเฉพาะซีนต่อสู้

    ตัดช่วงที่ไม่ใช่การต่อสู้ออก รวมช่องว่างสั้น ๆ เข้าด้วยกัน และเผื่อขอบไว้เล็กน้อยเพื่อไม่ให้ตัดคาการออกอาวุธ พร้อมกฎความยาวขั้นต่ำเพื่อกำจัดผลบวกลวงที่กระพริบ

  4. 4 · ตัดและต่อไฟล์แบบไม่สูญเสียคุณภาพ

    ffmpeg ตัดช่วงที่เก็บไว้ตรงคีย์เฟรมและต่อรวมเป็นไฟล์เฉพาะซีนต่อสู้ไฟล์เดียว พร้อมไฟล์ EDL/JSON กำกับที่แม็พทุกวินาทีของผลลัพธ์กลับไปยังไทม์โค้ดต้นฉบับ

  5. 5 · ส่งเข้า Dataset ต่อทันที

    ไฟล์เฉพาะซีนต่อสู้จะถูกบันทึกเป็นแหล่งข้อมูลของ Dataset และเข้าคิวประมวลผลตรวจจับ ติดตาม และสกัดท่าทาง ได้เฟรมต่อสู้ที่ใช้งานได้มากขึ้นราว 2–3 เท่าต่อพื้นที่จัดเก็บเท่ากัน

ประเภทของซีนที่โมเดลเรียนรู้

ประเภทซีนสัญญาณที่ใช้ตรวจจับการจัดการ
ช่วงต่อสู้นักมวย 2 คนอยู่ใน ROI ของเวที ความเร็วแขนขาสูง กรรมการอยู่ห่างเก็บไว้
ประกาศบนเวทีโฆษก/ไมค์อยู่กลางเวที ผู้ชมนิ่ง นักมวยอยู่มุมตัดออก
พักยก / เข้ามุมมีเก้าอี้ พี่เลี้ยงขึ้นเวที นาฬิกาหยุด นักมวยนั่งตัดออก
ช่วงนับ (8 Count) / กรรมการสั่งหยุดภาพโคลสอัพกรรมการ นักมวยล้มหรือยืนมุมกลางตัดออก
โฆษณา / ภาพคั่นไม่ใช่ภาพในเวที มีเฟรมโลโก้/กราฟิก มีเสียงจิงเกิลตัดออก
รีเพลย์ / สโลว์โมชันอัตราเฟรมผิดปกติ มีกราฟิกเปลี่ยนภาพ แอ็กชันซ้ำตัดออก (หรือติดแท็ก)

ตัวอย่างระบบอัตโนมัติ (n8n workflow)

กระบวนการตัดต่อทั้งหมดทำงานเองโดยไม่ต้องมีคนคุม ใช้ n8n เฝ้าดูไฟล์ที่อัพโหลดเข้ามาใหม่ แล้วร้อยขั้นตอนวิเคราะห์ซีน คัดกรอง และตัดด้วย ffmpeg จนได้ผลลัพธ์กลับเข้า Dataset

  1. 1Trigger — โหนด Webhook / เฝ้าดู storage ทำงานเมื่อมีวีดีโอทั้งแมทช์เข้ามาใหม่
  2. 2Probe — โหนด ffprobe อ่านความยาว FPS และความละเอียด แล้วสร้างรายการงาน (job)
  3. 3Sample — โหนด ffmpeg สกัดเฟรมความถี่ต่ำและไฟล์เสียงเพื่อใช้วิเคราะห์แบบประหยัด
  4. 4Classify — โหนด HTTP เรียกบริการจัดประเภทซีนต่อช็อต และรับค่าป้ายกำกับพร้อมความมั่นใจ
  5. 5Decide — โหนด Code รวมช่วงต่อสู้ เผื่อขอบ และตัดช่วงที่สั้นกว่าเกณฑ์ออก
  6. 6Cut — โหนด Execute Command สั่ง ffmpeg concat ตัดต่อ แล้วอัพโหลด muaythai_fight_only.mp4
  7. 7Register — โหนด HTTP ส่ง EDL และรายงานซีนไปที่ /api/public/ai/ingest และแจ้งให้ตรวจทาน
  8. 8Fallback — หากล้มเหลว ระบบลองใหม่ด้วยเกณฑ์ที่เข้มขึ้น และตั้งธงให้คนเข้ามาตรวจ

ทำไมขั้นตอนนี้สำคัญ

วีดีโอถ่ายทอด 45 นาที มักมีช่วงต่อสู้จริงเพียง 15–20 นาที ส่วนที่เหลือคือสัญญาณรบกวนสำหรับการเทรน
ไฟล์เฉพาะซีนต่อสู้ช่วยลดพื้นที่จัดเก็บ ชั่วโมง GPU และค่าทำ annotation ลงได้มากกว่าครึ่ง
ป้ายกำกับซีนใช้เป็นเมทาดาทาได้ด้วย ทั้งจำนวนยก ช่วงหยุดชก และเวลาต่อสู้จริงต่อยก
ทุกเฟรมผลลัพธ์ยังแม็พกลับไทม์โค้ดต้นฉบับได้ เพื่อตรวจสอบย้อนหลังหรือตัดใหม่
คนตรวจทานเฉพาะจุดรอยต่อที่ไม่ชัด ไม่ต้องดูทั้งแมทช์
ใช้ไปป์ไลน์เดียวกันกับคลังวีดีโอย้อนหลัง 40 ปีได้ โดยไม่ต้องมีทีมตัดต่อ
ตัวอย่าง · เกมต่อสู้เสมือนจริง

จากฟุตเทจไฟต์จริง สู่นักมวยเสมือนที่เล่นได้

ตัวอย่างจริงของการนำ AI Avatar มวยไทยไปต่อยอดในเกมต่อสู้เสมือน: ชุดท่าทางถูกจับจากไฟต์จริง ทำความสะอาด รีทาร์เก็ต แล้วส่งเข้าเกมเอนจินเป็นสเตตแอนิเมชันที่เบลนด์ต่อกันได้ทันที

ตัวอย่างการใช้งานในเกม

ซ้อมคู่เสมือน 1 ต่อ 1

อวตารสองตัวขับด้วยชุดท่าทางที่จับมาจริง มีช่วงจังหวะออกอาวุธ สเตตการ์ด และการเปลี่ยนเข้าคลินช์ตามข้อมูลจังหวะจริง

ครูฝึกเป้า VR

อวตารต้นแบบแสดงคอมโบใน VR ผู้เล่นทำตามแล้วได้คะแนนจากมุมข้อต่อ การหมุนสะโพก และจังหวะ

ฝึก AI คู่ต่อสู้

action event จริงกลายเป็น state และ reward ให้เอเจนต์ reinforcement learning ที่ต่อสู้ในสไตล์มวยไทย ไม่ใช่คิกบ็อกซิ่งทั่วไป

ตัวดูรีเพลย์เทคนิค

รีเพลย์ทุกจังหวะบนอวตารจากมุมกล้องใดก็ได้ พร้อมค่ามุมและความเร็วซ้อนบนภาพเพื่อใช้สอน

สรุป pipeline

เส้นทางตั้งแต่วิดีโอที่อัปโหลด ไปจนถึงคลิปแอนิเมชันที่รันในเกมเอนจิน

ขั้นตอนผลลัพธ์ทำงานที่ไหน
รับข้อมูล & แยกร่างmask ต่อเฟรม, ตัวตน A/B/กรรมการAI worker → /api/public/ai/ingest
Pose & ยกเป็น 3Dkeypoint 2D → แทร็กข้อต่อ 3DAI worker (โมเดล pose + lifting)
ตรวจทาน & แก้ไขแทร็กที่ยืนยันแล้ว แก้ตัวตน/ท่าทางDashboard → Review / Corrections
รีทาร์เก็ตลงอวตารแอนิเมชันบนโครงกระดูกชื่อมาตรฐาน3D Studio (three.js)
ทำความสะอาดโมชันที่ล็อกเท้าและลดการสั่น3D Studio / สคริปต์ Blender
ส่งออกคลิป GLB / FBX + เมทาดาทาส่งออกจาก Studio หรือสคริปต์ CLI

สคริปต์งานส่งออก 3D / Animation

สคริปต์ตัวอย่างสำหรับขั้นส่งออก คัดลอกไปใช้ในไปป์ไลน์ของคุณได้เลย

Blender — ส่งออกคลิป FBX แบบแบตช์ พร้อม bake ล็อกเท้าpython
# Blender 4.x — bake foot-lock + batch export FBX clips
import bpy, os

RIG = bpy.data.objects["MuayThai_Rig"]
OUT = "/export/fbx"
os.makedirs(OUT, exist_ok=True)

for action in bpy.data.actions:
    RIG.animation_data.action = action
    # bake IK foot constraints down to FK keys (removes foot sliding)
    bpy.ops.nla.bake(
        frame_start=int(action.frame_range[0]),
        frame_end=int(action.frame_range[1]),
        only_selected=False, visual_keying=True,
        clear_constraints=True, bake_types={"POSE"},
    )
    bpy.ops.export_scene.fbx(
        filepath=os.path.join(OUT, f"{action.name}.fbx"),
        use_selection=True, add_leaf_bones=False,
        bake_anim=True, bake_anim_use_nla_strips=False,
        bake_anim_simplify_factor=0.0, armature_nodetype="ROOT",
        apply_scale_options="FBX_SCALE_ALL", axis_forward="-Z", axis_up="Y",
    )
three.js / Node — ส่งออก GLB ของคลิปที่รีทาร์เก็ตแล้วtypescript
// three.js — export a retargeted clip as GLB (binary)
import { GLTFExporter } from "three/examples/jsm/exporters/GLTFExporter.js";

export async function exportClipAsGlb(avatar: THREE.Object3D, clip: THREE.AnimationClip) {
  const scene = new THREE.Scene();
  scene.add(avatar);

  const exporter = new GLTFExporter();
  const glb = await exporter.parseAsync(scene, {
    binary: true,
    animations: [clip],
    includeCustomExtensions: false,
  });

  return new Blob([glb as ArrayBuffer], { type: "model/gltf-binary" });
}
Unity — นำคลิปเข้าเป็นสเตตแอนิเมชันที่เบลนด์ได้csharp
// Unity — register imported clips as blendable fight states
using UnityEngine;
using UnityEditor.Animations;

public static class MuayThaiClipImporter {
    public static void Build(AnimatorController ctrl, AnimationClip[] clips) {
        var layer = ctrl.layers[0].stateMachine;
        foreach (var clip in clips) {
            var state = layer.AddState(clip.name);
            state.motion = clip;
            // loop guard/idle, one-shot strikes
            var isLoop = clip.name.StartsWith("guard") || clip.name.StartsWith("idle");
            var t = layer.AddAnyStateTransition(state);
            t.duration = isLoop ? 0.20f : 0.08f;   // blend time
            t.hasExitTime = !isLoop;
            t.AddCondition(AnimatorConditionMode.If, 0, clip.name);
            ctrl.AddParameter(clip.name, AnimatorControllerParameterType.Trigger);
        }
    }
}