สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Python

ตรวจจับตำแหน่งของมือจากกล้องเว็บแคมแบบเรียลไทม์ด้วย Python ง่าย ๆ ใน 2 นาที ตรวจจับวัตถุด้วย Python ใน 5 Steps ใช้ AI แบ่งส่วนภาพคนกับฉากหลังแบบง่าย ๆ แป๊บเดียวเสร็จ ใช้ AI บอกท่าทางคนด้วย Code เพียง 15 บรรทัด สร้างแอนิเมชันจากตัวการ์ตูนที่เราวาดเองด้วย Code 2 บรรทัด สร้างไฟล์ท่าเต้นสุดคิวท์ให้ตัวการ์ตูนเต้นตามใน 1 คำสั่ง Top 20 Python Machine Learning Open Source Projects PYTHON Tutorial Python Getting Started Python Syntax Python Comments Python Variables Python Data Types Python Numbers Python Casting Python Strings Python Booleans Python Operators Python Lists Python Tuples Python Sets Python Dictionaries Python If ... Else Python While Loops Python For Loops Python Functions Python Lambda Python Arrays Python Classes and Objects Python Inheritance Python Iterators Python Scope Python Modules Python Datetime Python JSON Python RegEx Python PIP Python Try Except Python User Input Python File Open Python String Formatting Python File Open Python File Write/Create File Python Delete File Poisson Distribution Random Numbers in NumPy Chi Square Distribution Exponential Distribution Rayleigh Distribution Pareto Distribution Zipf Distribution Random Permutations Seaborn Normal (Gaussian) Distribution Binomial Distribution Logistic Distribution Multinomial Distribution NumPy Splitting Array NumPy ufuncs Uniform Distribution NumPy Introduction NumPy Getting Started NumPy Array Indexing NumPy Array Slicing NumPy Data Types NumPy Array Copy vs View NumPy Array Shape NumPy Array Reshaping NumPy Array Iterating NumPy Joining Array NumPy Searching Arrays NumPy Sorting Arrays NumPy Filter Array NumPy Trigonometric Functions NumPy Hyperbolic Functions NumPy Set Operations Create Your Own ufunc Simple Arithmetic Rounding Decimals NumPy Logs NumPy Summations NumPy Products NumPy Differences NumPy LCM Lowest Common Multiple NumPy GCD Greatest Common Denominator Machine Learning Machine Learning - Mean Median Mode Machine Learning - Standard Deviation Machine Learning - Percentiles Machine Learning - Data Distribution Machine Learning - Normal Data Distribution Machine Learning - Scatter Plot Machine Learning - Linear Regression Machine Learning - Multiple Regression Machine Learning - Polynomial Regression Machine Learning - Scale Machine Learning - Train/Test Machine Learning - Decision Tree Python MySQL Python MySQL Create Database Python MySQL Create Table Python MySQL Insert Into Table Python MySQL Select From Python MySQL Where Python MySQL Order By Python MySQL Delete From By Python MySQL Drop Table Python MySQL Update Table Python MySQL Limit Python MySQL Join Python MongoDB Python MongoDB Create Database Python MongoDB Create Database Python MongoDB Create Collection Python MongoDB Insert Document Python MongoDB Find Python MongoDB Query Python MongoDB Sort Python MongoDB Delete Document Python MongoDB Drop Collection Python MongoDB Update Python MongoDB Limit Python Built in Functions Python String Methods Python List/Array Methods Python Dictionary Methods Python Tuple Methods Python Set Methods Python File Methods Python Keywords Python Built-in Exceptions Python Random Module Python math Module Python Requests Module Python cmath Module How to Remove Duplicates From a Python List How to Reverse a String in Python How to Add Two Numbers in Python Random Data Distribution การใช้งาน Python ในการสร้างและจัดการข้อมูลด้วย Linked List เทคนิคการเพิ่มประสิทธิภาพของ Linked List ในภาษา Python การใช้งาน Python เพื่อการสร้างและจัดการ Doubly Linked List อย่างมีประสิทธิภาพ ปรับปรุงโครงสร้างข้อมูลของคุณด้วย Doubly Linked Lists ในภาษา Python เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Linked List เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Doubly Linked List เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Double Ended Queue เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน ArrayList เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Queue เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Stack เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Tree เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Binary Search Tree เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน AVL Tree เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Self-Balancing Tree เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Heap เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Hash เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Priority Queue เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Seperate Chaining Hashing เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Linear Probing Hashing เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Quadratic Probing Hashing เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Red-Black Tree เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Sisjoint Set เทคนิคการเขียนโค้ดเพื่อการจัดการข้อมูลแบบไดนามิคใน Python ผ่าน Set วิเคราะห์อัลกอริทึมของจิตรา (Dijkstra Algorithm) ผ่านภาษา Python ความลับของ Bellman-Ford Algorithm และการประยุกต์ใช้ในโลกของไพธอน กรีดี้ อัลกอริทึม: กลยุทธ์การเขียนโปรแกรมที่มุ่งหวังผลทันทีในภาษา Python Dynamic Programming คือกุญแจสู่การแก้ไขปัญหาที่ซับซ้อนด้วย Python การทำความเข้าใจกับ Divide and Conquer: กลวิธีการโปรแกรมที่ เปลี่ยนโจทย์ใหญ่ให้เป็นเรื่องง่าย การใช้ Memorization ในการเพิ่มประสิทธิภาพของการเขียนโปรแกรมด้วย Python breadth first search in Python ลึกล้ำกับการค้นหา Depth First Search ในโลกแห่งข้อมูล เบื้องหลังการค้นหาคำตอบด้วย Backtracking และการประยุกต์ใช้ใน Python การตีแผ่ปัญญาของการค้นหาด้วย Branch and Bound Algorithm การค้นหาในพื้นที่สถานะ (State Space Search) ด้วย Python: การแก้ปัญหาอย่างชาญฉลาด Permutation in Python การแบ่งกลุ่มข้อมูลด้วย Set Partition ใน Python - การแก้ปัญหาแบบคลาสสิกในโลก IT การค้นหาเชิงเส้น (Linear Search) ในโลกของ Python และการประยุกต์ใช้ในชีวิตจริง Binary Search in Python Generating All Subsets Using Brute Force: ความจำเป็นของการค้นหาย่อยชุด การใช้งาน Brute Force ผ่านภาษา Python และการประยุกต์ใช้ในโลกแห่งการแก้ปัญหา การแก้ปัญหา 8 Queens Problem ด้วยภาษา Python Knights Tour Problem in Python Travelling Salesman Problem in Python String Matching Algorithm และการใช้งานใน Python Finding Articulation Points (จุดยึด) ใน Graphs ด้วย Python Minimum Spanning Tree และการประยุกต์ใช้ใน Python Minimum Cost Flow Algorithm: อัลกอริธึมที่ค้นหาการไหลของต้นทุนต่ำสุด ปลดล็อคความลับของ CLIQUE Algorithm ด้วยภาษา Python การใช้งาน Sum of Products Algorithm เพื่อการคำนวณที่มีประสิทธิภาพด้วย Python วิเคราะห์ลึกถึง A* Algorithm ทางเลือกของการค้นหาที่มีประสิทธิภาพสูง The Perfect Matching - The Hungarian Method ในภาษา Python ปัญหารินน้ำในโลกโปรแกรมมิ่ง กับ Ford-Fulkerson Algorithm B* Algorithm in Python คู่มือการใช้งาน D* Algorithm ใน Python พร้อมเคล็ดลับในการใช้งาน F* Algorithm - การรวมสองอาร์เรย์โดยใช้ Python Minimax Algorithm ในเกมหมากรุกของคิดและตัดสิน: อาวุธลับของ AI Gaussian Elimination กับการแก้ระบบสมการเชิงเส้นใน Python Randomized Algorithm in Python อัลกอริทึม Monte Carlo กับการใช้งานใน Python Newtons Method in Python ทำความเข้าใจ Mullers Method ทางออกสำหรับการแก้สมการโดยใช้ Python สำรวจ RANSAC ผ่านภาษา Python ประสิทธิภาพของ Particle Filter ในการประมวลผลข้อมูล: การวิเคราะห์อัลกอริทึมด้วย Python Las Vegas Algorithm คืออะไร? ความรวดเร็วแห่งการเรียงลำดับด้วย Quick Sort ในภาษา Python การเรียงลำดับด้วยวิธี Selection Sort และการใช้งานในภาษา Python อัลกอริทึม Bubble Sort: วิธีการเรียงลำดับข้อมูลใน Python Insertion Sort in Python การเรียงลำดับข้อมูลด้วย Merge Sort ใน Python และการใช้งานในโลกจริง แผนภูมิวอร์โนอี: สัมผัสคณิตศาสตร์และโปรแกรมมิ่ง ตัวแปร หรือ Variable คืออะไร การใช้งาน ตัวแปร หรือ Variable ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง ตัวแปรแบบ string คืออะไร การใช้งาน ตัวแปรแบบ string ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง ตัวแปรแบบจำนวนเต็ม หรือ integer คืออะไร การใช้งาน ตัวแปรแบบจำนวนเต็ม หรือ integer ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง numberic variable คืออะไร การใช้งาน numberic variable ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง string variable คืออะไร การใช้งาน string variable ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง if-else คืออะไร การใช้งาน if-else ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง if statement คืออะไร การใช้งาน if statement ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง nested if-else คืออะไร การใช้งาน nested if-else ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง for loop คืออะไร การใช้งาน for loop ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง while loop คืออะไร การใช้งาน while loop ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง do-while loop คืออะไร การใช้งาน do-while loop ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง foreach loop คืออะไร การใช้งาน foreach loop ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง sequencial search คืออะไร การใช้งาน sequencial search ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การหาค่ามากที่สุด และน้อยที่สุด โดยใช้ Loop คืออะไร การใช้งาน การหาค่ามากที่สุด และน้อยที่สุด โดยใช้ Loop ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง recursive function คืออะไร การใช้งาน recursive function ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง try-catch คืออะไร การใช้งาน try-catch ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง loop คืออะไร การใช้งาน loop ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง nested loop คืออะไร การใช้งาน nested loop ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง loop and if-else inside loop คืออะไร การใช้งาน loop and if-else inside loop ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง math function sqrt sin cos tan คืออะไร การใช้งาน math function sqrt sin cos tan ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง for each คืออะไร การใช้งาน for each ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง dynamic typing variable คืออะไร การใช้งาน dynamic typing variable ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง function คืออะไร การใช้งาน function ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง return value from function คืออะไร การใช้งาน return value from function ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง parameter of function คืออะไร การใช้งาน parameter of function ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง sending function as variable คืออะไร การใช้งาน sending function as variable ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง array คืออะไร การใช้งาน array ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง array 2d คืออะไร การใช้งาน array 2d ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง dynamic array คืออะไร การใช้งาน dynamic array ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง OOP object oriented programming คืออะไร การใช้งาน OOP object oriented programming ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง class and instance คืออะไร การใช้งาน class and instance ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง calling instance function คืออะไร การใช้งาน calling instance function ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง constructor คืออะไร การใช้งาน constructor ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง set and get function and OOP concept คืออะไร การใช้งาน set and get function and OOP concept ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง encapsulation in OOP concept คืออะไร การใช้งาน encapsulation in OOP concept ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง polymorphism in OOP concept คืออะไร การใช้งาน polymorphism in OOP concept ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง accesibility in OOP concept คืออะไร การใช้งาน accesibility in OOP concept ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง inheritance in OOP concept คืออะไร การใช้งาน inheritance in OOP concept ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง multiple inheritance in OOP concept คืออะไร การใช้งาน multiple inheritance in OOP concept ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง useful function of string คืออะไร การใช้งาน useful function of string ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง useful function of array คืออะไร การใช้งาน useful function of array ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง file คืออะไร การใช้งาน file ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง read file คืออะไร การใช้งาน read file ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง write file คืออะไร การใช้งาน write file ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง append file คืออะไร การใช้งาน append file ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน static method ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create simple game ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน generic and generic collection ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Read binary file ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Write binary file ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Export data to json ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Export data to XML ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Append binary file ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Create simple question and answer program ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน List ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Map ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Set ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Math abs ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Math atan2 ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Dictionary ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Multi-Thread ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Asynchronous programming ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Functional programming ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Class and object ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Operator ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Operator precedence ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Comparison operator ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Bitwise operator ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Approximation sine by Taylor series ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Approximation Factorial for large number by Stirlings approximation ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Longest common subsequent ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Is it Palindrome ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Longest palindrome in string ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Is number that have been input , palindrome ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน String substring ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน String join ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน String split ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน String indexOf ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน String trim ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน String compare ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน String last index of ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Integration a function by mid-point approximation algorithm ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Integrate a function by trapezoidal integration algorithm ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน find leap year ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Finding day of year ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Catalang number generator ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Finding summation of nested list by recursive function ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Fastest power calculation (case power number is integer) using Exponentiation by squaring ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Logical operator ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Keywords and reserved words ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Finding maximum from array ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Finding minimum from array ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Sum all element in array ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Average from all element in array ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Filter element in array ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Accumulating from array ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน square all element in array and store to another array ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน MySQL insert data to table using prepared statement ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน MySQL select data from table using prepared statement ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน MySQL update data from table using prepared statement ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน MySQL delete a row from table ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน MySQL create table ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Postgresql create a table step by step ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน PostgreSQL insert to table using prepared statement ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน PostgreSQL select from table using prepared statement ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน PostgreSQL update table using prepared statement ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน PostgreSQL delete a row in table using prepared statement ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Linear regression ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Quadratic regression ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Graph fiitting ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Implement perceptron ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Implement neural network 2 layers ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน K-NN algorithm ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Decision Tree algorithm ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Http request using get method ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Http request using post method passing by JSON ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Web server waiting for http request ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Using CURL ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน OpenCV ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน OpenGL ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create a form ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create a button and waiting for click event ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create a textBox and waiting for text change event ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create combo box and waiting for selected change ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create Scoll pane ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create ListBox ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create PictureBox ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create Data Table ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create RichTextBox Multiline ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create new Windows ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create menubar ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI create Label ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI drawing colorful Rabbit ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI drawing colorful Cat ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Create pie chart from data ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Create bar chart from data ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Line chart from data ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Show data table ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน SHA-256 hash algorithm ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน MD-5 hash algorithm ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Printing data to printer ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Sending RS232 com port ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Reading from RS232 comport ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน GUI drawing colorful tiger ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Drawing rabbit in native gui ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Drawing tiger in native gui ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Drawing Union Jack flag in native gui ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Drawing USA flag in native GUI ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Create OX game ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Create chess game ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Create ladder and snake game ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Create monopoly game ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Simple calculator ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Scientific calculator ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Linked List from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Doubly Linked List from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Double Ended Queue from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own ArrayList from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Queue from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Stack เองแบบไม่ใช้ lib เขียน pop, push , top ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Tree เองแบบไม่ใช้ lib , insert tree ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Binary Search Tree เองแบบไม่ใช้ lib , insert , find , delete ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own AVL Tree from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Self-Balancing Tree from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Heap from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Hash from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Priority Queue from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Hash โดยใช้วิธี Seperate Chaining Hashing from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Hash โดยใช้วิธี Linear Probing Hashing from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Quadratic Probing Hashing from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Map เองแบบไม่ใช้ lib , insert , find , delete ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own Set from scratch without using lib ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own directed graph เองแบบไม่ใช้ lib ใช้ matrix แทน adj ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own undirected graph เองแบบไม่ใช้ lib ใช้ matrix แทน adj ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own directed graph เองแบบไม่ใช้ lib ใช้ linked list เป็น Adj ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create your own undirected graph เองแบบไม่ใช้ lib using linked list เป็น Adj ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน howto using interface in OOP ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Async ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Thread ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Multi-process ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน return vs yeild ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน serial port or comport write and read ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Parse JSON to object ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน Parse JSON to array ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน create mini web server ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน web scraping ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน calling API ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การใช้งาน call API with access token ในภาษา Python แบบง่ายๆ พร้อมตัวอย่าง การเขียน Code MySQL CRUD โดยใช้ภาษา Python การเขียน Code NoSQL CRUD โดยใช้ภาษา Python การเขียน Code MongoDB โดยใช้ภาษา Python การเขียน Code Memcache CRUD โดยใช้ภาษา Python การเขียน Code Redis โดยใช้ภาษา Python Pandas Tutorials สร้าง Web Application โดยใช้ Django และ Deploy บน AWS EC2

AI108 - Pose Landmarks Detection Using MediaPipe

ใช้ AI บอกท่าทางคนด้วย Code เพียง 15 บรรทัด

 

สุดยอด AI จาก Google ที่เปิดตัวมาพร้อมกับความสามารถที่เมื่อ 5 ปีที่แล้วต้องเขียน Code เป็น 1000 บรรทัดและยังไม่ Stable แต่ตอนนี้ทำได้ง่าย ๆ ด้วย Code แค่ 15 บรรทัด และยังสามารถรันบนหน้าเว็บ รันบน Android หรือรันใน Computer ตั้งโต๊ะที่บ้านของท่านด้วยเทคนิค Deep learning สุดล้ำที่มีการพัฒนาอย่างก้าวกระโดด

ในบทความนี้เป็นการแสดงเทคโนโลยีให้ท่านเห็นความสุดยอดของ AI ที่เราอยากจะชวนทุกคนมาตั้งคำถามกับตัวเองว่าในเมื่อ AI มันล้ำขนาดนี้ ท่านในฐานะนักธุรกิจที่มีความฝันอยากจะสร้างสิ่งที่ยิ่งใหญ่ในอนาคตจะต้องสร้างอะไร ท่านมี Idea ที่จะเปลี่ยน Code กระจอก ๆ ในหน้านี้เป็นเงิน 8 หลักในหน่วยบาทหรือ USD ได้อย่างไร และ Application อะไรที่ท่านจะสามารถสร้างได้จาก AI ตัวนี้

ท่านอาจจะคิดว่า AI เป็นเรื่องไกลตัวแต่จริง ๆ แล้วตั้งแต่เกิดมา หยิบ Smart phone ไถฟีดเฟซบุ๊ก ท่านก็ได้เจอกับ AI ประมาณ 3 ตัวแล้ว

บทความนี้เป็นบทความในชุด “ตรวจจับสารพัดสิ่งด้วย MediaPipe” ชุดบทความที่จะชวนท่านผู้อ่านมาลองใช้งาน Machine Learning บนเครื่องคอมพิวเตอร์ของเราเองเพื่อตรวจจับสารพัดสิ่ง เช่น มือ คน สัตว์ สิ่งของ ไปจนถึงอิริยาบถของเรา บทความชุดนี้ประกอบไปด้วย

แต่ละบทความจะเป็นบทความสั้น ๆ พร้อม Code ที่ทาง EPT ปรับให้ง่ายที่สุดเพื่อให้ทุกคนนำไปใช้ได้เลยแม้จะไม่มีพื้นฐาน Python มาก่อน (แต่ต้องมีพื้นฐานการใช้งานคอมพิวเตอร์อยู่สักหน่อยนะครับ) 

สำหรับใครที่ต้องการเรียนรู้เกี่ยวกับการเขียน การสร้าง AI โดยละเอียดเรียนเชิญได้ที่ Course AI701 แต่ถ้าท่านยังไม่มีพื้นฐานการเขียนโปรแกรมเลยสามารถลงเรียน คอร์ส Python + Web Programming + Machine Learning (PY203) ได้ ซึ่งจะพาท่านไปเริ่มเรียนเขียนโปรแกรมตั้งแต่รู้จักเลขฐาน 2 รู้ว่าคอมพิวเตอร์เครื่องแรกของโลกทำงานอย่างไร เรียนภาษาเขียนโปรแกรม Python เรียนการเขียน Web HTML CSS JavaScript AJAX jQuery Bootstrap และอื่น ๆ อีกมากมาย จนไปจบที่ AI เนื้อหาอัดแน่นกว่า 200 ชั่วโมง และมีคอร์สแถมยิบย่อยตามฤดูกาลอีก เรียกได้ว่าคุ้มสุด จากไม่รู้อะไรจะเปลี่ยนมาทำงานด้าน Programmer เลยก็ยังได้ หรือจากไม่รู้อะไรจะเปลี่ยนสายมาทำ Data science ก็ยังชิล ๆ

 

ปัญหา Human pose estimation คืออะไร?  

Human pose estimation เป็นกระบวนการของการประมาณท่าทางของมนุษย์ในรูปภาพหรือวิดีโอ ซึ่งคอมพิวเตอร์จะจับจุดสำคัญต่าง ๆ ของมนุษย์ เช่น ตา จมูก ลำตัว แขน ขา หรือข้อต่อต่าง ๆ  แล้วตรวจจับท่าทางของมนุษย์จากตำแหน่งของจุดเหล่านั้น ซึ่งมีประโยชน์ตั้งแต่ใช้ในการวินิจฉัยท่าทางการเดินในทางการแพทย์ไปจนถึงการทำแอนิเมชันในวงการบันเทิง

การประมาณท่าทางของมนุษย์นี้เป็นหนึ่งในปัญหาหลักของงานด้านภาพของคอมพิวเตอร์ แม้จะมีการวิจัยกันมาหลายสิบปีแล้วแต่จนถึงปัจจุบันก็ยังไม่มีวิธีแก้ปัญหาที่น่าพอใจออกมา มีหลายปัจจัยที่ทำให้งานนี้เป็นปัญหาที่ยากและท้าทาย เช่น มุมกล้อง สภาพแสง ลักษณะร่างกายของมนุษย์ที่แตกต่างกัน การที่ส่วนของร่างกายบางส่วนซ้อนทับกันทำให้มองไม่เห็นส่วนที่ถูกบังอยู่ หรือการสูญเสียข้อมูล 3 มิติเมื่อถ่ายภาพ เป็นต้น 

 

Human pose estimation ประยุกต์อะไรได้บ้าง?

ภาพยนตร์ / แอนิเมชัน

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

  • Avatar - อวตาร 
  • Avengers: Infinity War - อเวนเจอร์ส: มหาสงครามล้างจักรวาล (2018)
  • Beauty and the Beast - โฉมงามกับเจ้าชายอสูร (2017)
  • Happy Feet - เพนกวินกลมปุ๊กลุกขึ้นมาเต้น (2006)
  • I, Robot - ไอโรบอท พิฆาตแผนจักรกลเขมือบโลก (2004)
  • King Kong - คิงคอง (2005)
  • Pirates of the Caribbean: Dead Man’s Chest - สงครามปีศาจโจรสลัดสยองโลก (2006)
  • The Adventures of Tintin - การผจญภัยของตินติน (2011)
  • The Lord of the Rings - เดอะลอร์ดออฟเดอะริงส์
  • The Polar Express - เดอะโพลาร์เอ็กซ์เพรส (2004)

เบื้องหลังตัวละครที่เมื่อปรากฏในหน้าจอแล้วไม่ใช่คนจริงในภาพยนตร์และแอนิเมชันทุกเรื่องที่ยกตัวอย่างมานั้นตอนถ่ายทำจะใช้คนจริงเป็นผู้แสดง แล้วใช้โปรแกรมสั่งให้ตัวละครหรือตัวการ์ตูนที่ออกแบบไว้ในคอมพิวเตอร์ขยับหรือทำสีหน้าตามผู้แสดงอีกที ซึ่งกระบวนการที่จะแปลการเคลื่อนไหวของผู้แสดงจากโลกจริงให้เป็นข้อมูลดิจิทัลที่คอมพิวเตอร์เพื่อให้ตัวละครขยับตามนี้ก็คือ Motion Capture (mo-cap)

วิดีโอด้านล่างนี้แสดงเบื้องหลังการถ่ายทำตัวละครกอลลัมจากเรื่องเดอะลอร์ดออฟเดอะริงส์ ซึ่งแอนดี้ เซอร์คิส (Andy Serkis) ผู้ที่คนในวงการยกให้เป็น King of mo-cap เป็นผู้แสดงและพากย์เสียง

ผมเคยเขียนเกี่ยวกับเรื่องประโยชน์ของการนำ AI มาใช้ทำ Motion Capture และสาธิตวิธีการทำให้ดูไว้ในบทความ AI104 - Video to BVH สร้างไฟล์ท่าเต้นสุดคิวท์ให้ตัวการ์ตูนเต้นตามใน 1 คำสั่ง ลองไปอ่านกันดูนะครับ

เกม

ในหลาย ๆ เกมก็มีการนำ Motion Capture มาใช้เพื่อกำหนดท่าทางให้ตัวละครเช่นเดียวกับในภาพยนตร์หรือแอนิเมชัน นอกจากนี้ยังมีการใช้เทคนิคการประมาณท่าทางเพื่อจับท่าทางของผู้เล่นเพื่อบังคับตัวละครในเกมให้ออกท่าทางต่าง ๆ ตามอีกด้วย  

การออกกำลังกาย / การทำกายภาพบำบัด

บางคนอาจจะสงสัยว่าทำไมสองอย่างนี้มาอยู่ในหัวข้อเดียวกันได้ สิ่งที่เหมือนกันในสองกิจกรรมนี้ก็คือผู้ออกกำลังกายและผู้ที่ทำกายภาพบำบัดจำเป็นต้องทำท่าทางให้ถูกต้องตามแบบแผนเพื่อประสิทธิภาพที่สูงสุด ถ้าเป็นสมัยก่อนเราก็ต้องจ้างเทรนเนอร์หรือผู้เชี่ยวชาญเพื่อให้ช่วยดูและปรับท่าให้เราใช่ไหมครับ แต่หากใช้ Human pose estimation แล้วเราก็จะสามารถรู้ได้ทันทีว่าทำท่าต่าง ๆ ผิดอย่างไรและควรปรับตรงไหนได้ที่บ้านของเราเองเลย ซึ่งช่วยประหยัดค่าใช้จ่ายของทั้งผู้ออกกำลังกายและผู้ป่วยไปได้อีกมาก และยังช่วยลดปัญหาเรื่องบุคลากรทางการแพทย์ไม่พอเพียงด้วย

ดูแลผู้ป่วยและผู้สูงอายุ

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

ป้องกันเหตุรุนแรงและอาชญากรรม

การประเมินท่าทางของมนุษย์สามารถนำมาใช้ช่วยเสริมระบบรักษาความปลอดภัย เช่น ใช้ตรวจจับพฤติกรรมที่เป็นอันตรายหรือเสี่ยงต่อความปลอดภัยต่อบุคคลอื่นอย่างท่าโจมตีหรือการถืออาวุธในที่สาธารณะ ใช้ระบุและติดตามบุคคลที่สงสัยโดยตรวจสอบการเคลื่อนไหวและรูปร่างของบุคคลในวิดีโอหรือภาพถ่าย เป็นต้น ตัวอย่างภาพด้านล่างเป็นภาพจาก AI Guardman ของ NTT Docomo ซึ่งเป็น AI ที่ช่วยตรวจจับและระบุพฤติกรรมที่น่าสงสัยว่าจะมีการขโมยของเกิดขึ้น เมื่อพบจะแจ้งให้เจ้าของร้านทราบเพื่อเฝ้าระวังต่อไป 

 

และอีกมากมาย

 

ประวัติศาสตร์ปัญหา Human pose estimation

การศึกษาและวิจัยเกี่ยวกับการประมาณท่าทางของมนุษย์มีมานานหลายสิบปีแล้ว เราจะมาดูวิวัฒนาการและเทคโนโลยีที่น่าสนใจกัน

Monocular Human pose estimation

ยุคแรกของงานวิจัยเริ่มในช่วงคริสต์ทศวรรษ 1960 ช่วงนั้นนักวิจัยเริ่มพัฒนาวิธีการในการระบุและติดตามท่าทางของมนุษย์โดยใช้กล้องตัวเดียวหรือใช้อินพุตเป็นรูปภาพเดียว จากนั้นจะใช้คอมพิวเตอร์วิทัศน์ (Computer vision) และเทคนิคการรู้จำแบบ (Pattern recognition) เพื่อประมาณท่าทางในรูปภาพนั้น แต่ในสมัยนั้นวิธีการนี้มีข้อจำกัดเนื่องจากคอมพิวเตอร์ยังขาดพลังในการคำนวณและข้อมูลอยู่ รวมทั้งยังมีปัญหาหลักคือการสูญเสียข้อมูล 3 มิติไปอีกด้วย

Multi-camera 

เมื่อการใช้กล้องเดียวมีปัญหา วิธีที่นิยมที่สุดในการประมาณการเคลื่อนไหวในงานวิจัยหรือในอุตสาหกรรมที่ต้องการความแม่นยำสูง คือการใช้กล้องหลายตัวเพื่อจับภาพจากมุมมองต่าง ๆ พร้อมกัน เมื่อรวมข้อมูลจากกล้องหลายตัวเข้าด้วยกันก็จะทำให้สามารถระบุตำแหน่งข้อต่อของร่างกายได้แม่นยำยิ่งขึ้น นำไปสู่การประมาณท่าทางที่ดีขึ้น วิธีนี้เป็นวิธีที่ใช้ทำ Motion capture ในอุตสาหกรรมภาพยนตร์และแอนิเมชันที่กล่าวไปในหัวข้อก่อนหน้านี้นั่นเอง แต่แน่นอนว่าแลกมาด้วยค่าใช้จ่ายที่สูงและการตั้งค่าที่ยุ่งยากกว่ากล้องตัวเดียว

Kinect

ในปี 2010 Microsoft ได้เปิดตัว Kinect ขึ้นมา ซึ่งถือเป็นการปฏิวัติการประมาณท่าทางของมนุษย์ไปในอีกรูปแบบหนึ่งคือการนำเซนเซอร์ความลึกเข้ามาช่วยด้วย การรวมกล้อง RGB เข้ากับเซ็นเซอร์ความลึกนี้ทำให้สามารถประมาณท่าทาง 3 มิติได้แม่นยำมากขึ้น เทคโนโลยีนี้ช่วยให้สามารถติดตามท่าทางของมนุษย์ได้แบบเรียลไทม์โดยไม่ต้องใช้การตั้งค่ากล้องหลายตัวที่ซับซ้อน แม้ว่าในตอนแรก Microsoft จะสร้าง Kinect ขึ้นมาเพื่อใช้กับเครื่องเกม Xbox 360 แต่ด้วยความสามารถในการตรวจจับท่าทางที่แม่นยำของมัน ราคา และการตั้งค่าที่ง่ายดาย ทำให้มีผู้นำไปใช้ในงานวิจัยมากทีเดียว

LiDAR

ในสมัยหลัง ๆ ได้มีเทคโนโลยีที่เรียกว่า Light Detection and Ranging (LiDAR) ออกมา LiDAR จะปล่อยลำแสงเลเซอร์ไปกระทบพื้นผิวหรือวัตถุต่าง ๆ เพื่อวัดระยะทางและสร้าง Point Clouds ของสภาพแวดล้อมโดยรอบในรูปแบบ 3 มิติโดยละเอียด ทำให้สามารถใช้ประเมินท่าทางของมนุษย์ได้อย่างแม่นยำแม้ในสภาพแวดล้อมที่สภาพแสงไม่เอื้ออำนวย ในช่วงแรกที่ออกมานั้น LiDAR มีราคาสูงมาก แต่ในปัจจุบันนี้ราคาของ LiDAR ลดลงอย่างมาก ทำให้เป็นเทคโนโลยีที่เราเห็นทั่วไปตั้งแต่หุ่นยนต์ดูดฝุ่นตามบ้านเรือนไปจนถึงยานพาหนะไร้คนขับตามท้องถนน 


ที่มา: An Open-Source Platform for Human Pose Estimation and Tracking Using a Heterogeneous Multi-Sensor System

 

ปัจจุบันทำได้ง่าย ๆ ด้วย Deep learning และ Google MediaPipe Pose Landmarker

หลังจากการกำเนิดของ Deep learning โดยเฉพาะ Convolutional Neural Networks (CNNs) ทำให้งานวิจัยเกี่ยวกับการประมาณท่าทางของมนุษย์พลิกโฉมอีกครั้ง มีผู้พัฒนาโมเดล Deep learning ออกมามากมายซึ่งโมเดลเหล่านี้สามารถประมาณท่าทางของมนุษย์ได้อย่างแม่นยำโดยใช้อินพุตเป็นรูปภาพเพียงรูปเดียวเหมือน Monocular Human pose estimation ในยุคแรก 

ในบทความนี้ เราจะสาธิตการใช้งาน MediaPipe Pose Landmarker ของ Google ซึ่งจะช่วยให้เราตรวจจับจุดสำคัญต่าง ๆ ของร่างกายมนุษย์ในรูปภาพหรือวิดีโอหรือจากกล้องเว็บแคมแบบเรียลไทม์ได้อย่างง่ายดาย โมเดลนี้จะประมาณจุดสำคัญของร่างกายมนุษย์ทั้งหมด 33 จุดดังต่อไปนี้

  • 0 - nose
  • 1 - left eye (inner)
  • 2 - left eye
  • 3 - left eye (outer)
  • 4 - right eye (inner)
  • 5 - right eye
  • 6 - right eye (outer)
  • 7 - left ear
  • 8 - right ear
  • 9 - mouth (left)
  • 10 - mouth (right)
  • 11 - left shoulder
  • 12 - right shoulder
  • 13 - left elbow
  • 14 - right elbow
  • 15 - left wrist
  • 16 - right wrist
  • 17 - left pinky
  • 18 - right pinky
  • 19 - left index
  • 20 - right index
  • 21 - left thumb
  • 22 - right thumb
  • 23 - left hip
  • 24 - right hip
  • 25 - left knee
  • 26 - right knee
  • 27 - left ankle
  • 28 - right ankle
  • 29 - left heel
  • 30 - right heel
  • 31 - left foot index
  • 32 - right foot index

 

เตรียมตัวก่อนเริ่มทำ

สิ่งที่จำเป็นต้องติดตั้งในคอมพิวเตอร์ ได้แก่

  • Python เวอร์ชัน 3.9.5
  • OpenCV สำหรับ Python เวอร์ชัน 4.7.0.72
  • MediaPipe เวอร์ชัน 0.10.0

สามารถดูวิธีติดตั้งได้จากบทความ AI105 - Hand Landmarks Detection Using MediaPipe

 

ข้อควรระวัง

Code ที่ใช้ในบทความนี้ได้รับการทดสอบบนเครื่อง Windows 10 64-bit ที่ติดตั้ง Python และ Package ต่าง ๆ ตามเวอร์ชันที่กำหนดไว้ในบทความนี้ ดังนั้นหากผู้เรียนใช้อะไรบางอย่างคนละเวอร์ชันกับที่กำหนดไว้ก็จะมีโอกาสสูงที่จะรันแล้วเกิดข้อผิดพลาดบางประการ สำหรับ Package (ทั้งที่ใช้และไม่ใช้) ทั้งหมดที่มีในเครื่องคอมพิวเตอร์ที่ใช้ทดสอบจะสรุปให้ดูที่ท้ายบทความ* 

 

เขียน Code กันเลย

1. เปิดโปรแกรม Python IDE ขึ้นมาแล้วเขียน code ดังต่อไปนี้

#import library ที่ใช้
import numpy as np
import mediapipe as mp

import cv2
import os
#ทดสอบ พิมพ์ก่อนว่าตอนนี้เราอยู่ที่ directory ไหน
print(os.getcwd())

from mediapipe import solutions
from mediapipe.framework.formats import landmark_pb2

def draw_landmarks_on_image(rgb_image, detection_result):
  pose_landmarks_list = detection_result.pose_landmarks
  annotated_image = np.copy(rgb_image)

  # Loop through the detected poses to visualize.
  for idx in range(len(pose_landmarks_list)):
    pose_landmarks = pose_landmarks_list[idx]

    # Draw the pose landmarks.
    pose_landmarks_proto = landmark_pb2.NormalizedLandmarkList()
    pose_landmarks_proto.landmark.extend([
      landmark_pb2.NormalizedLandmark(x=landmark.x, y=landmark.y, z=landmark.z) for landmark in pose_landmarks
    ])
    solutions.drawing_utils.draw_landmarks(
      annotated_image,
      pose_landmarks_proto,
      solutions.pose.POSE_CONNECTIONS,
      solutions.drawing_styles.get_default_pose_landmarks_style())
  return annotated_image

from mediapipe.tasks import python
from mediapipe.tasks.python import vision

# STEP 2: Create an PoseLandmarker object.
base_options = python.BaseOptions(model_asset_path='pose_landmarker.task')
options = vision.PoseLandmarkerOptions(
    base_options=base_options,
    output_segmentation_masks=True)
detector = vision.PoseLandmarker.create_from_options(options)

webcam = cv2.VideoCapture(0)
image = webcam.read()
mp_hands = mp.solutions.hands
hands = mp_hands.Hands()
mp_draw = mp.solutions.drawing_utils
while True:
    success, image = webcam.read()
    image_rgb = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    #results = hands.process(image_rgb)
    # STEP 3: Load the input image.
    image = mp.Image(image_format=mp.ImageFormat.SRGB, data=image_rgb)
    # STEP 4: Detect pose landmarks from the input image.
    detection_result = detector.detect(image)

    # STEP 5: Process the detection result. In this case, visualize it.
    annotated_image = draw_landmarks_on_image(image.numpy_view(), detection_result)
    cv2.imshow("Image",cv2.cvtColor(annotated_image, cv2.COLOR_RGB2BGR))

    k =cv2.waitKey(1)
    if k == 27:
        break

cv2.destroyAllWindows()

 

2. เมื่อสั่งรัน จะได้หน้าต่างสำหรับแสดงผลภาพจากกล้องเว็บแคมแบบเรียลไทม์พร้อมทั้งแสดงตำแหน่งสำคัญของท่าทางดังภาพตัวอย่าง 

เพียงเท่านี้เราก็จะได้โปรแกรมตรวจจับท่าทางของคนแบบเรียลไทม์ด้วย Python แล้ว นอกจากจะใช้งานเป็นโปรแกรมบนเครื่องได้แล้ว เรายังสามารถใช้ MediaPipe ทำแอปพลิเคชันสำหรับแอนดรอยด์ หรือใช้งานบนเว็บก็ได้ ใครสนใจสามารถดูตัวอย่างได้ที่นี่

 

จากบทความนี้และบทความก่อน ๆ จะเห็นได้ว่าความก้าวหน้าอย่างต่อเนื่องที่ขับเคลื่อนโดยนวัตกรรมทางเทคโนโลยีทำให้ในปัจจุบันทุกคนสามารถเข้าถึงเทคโนโลยีที่มีความซับซ้อนและมีราคาสูงในสมัยก่อนได้อย่างง่ายดายมากขึ้น แม่นยำมากขึ้น และราคาถูกยิ่งขึ้น นอกจากนี้ยังใช้งาน AI ให้ทำงานแทนมนุษย์ได้ในอีกหลาย ๆ งานด้วย อีกไม่นานเราจะได้พบกับเทคโนโลยีเหล่านี้ซึ่งใช้งานในสาขาต่าง ๆ เช่น วิทยาการหุ่นยนต์ การโต้ตอบระหว่างมนุษย์กับคอมพิวเตอร์ การวิเคราะห์กีฬา การดูแลสุขภาพ โลกเสมือนจริง และอีกมากมายอยู่รอบตัวเราทั้งที่รู้ตัวและไม่รู้ตัว ถึงเวลาแล้วหรือยังที่เราจะตื่นตัวและเปิดใจเรียนรู้เทคโนโลยีใหม่ ๆ เพื่อที่เราจะได้เป็นผู้ใช้งานมันให้ทำงานให้เรา ไม่ใช่ให้มันมาแทนที่เรา

สุดท้ายนี้สำหรับใครที่สนใจอยากทำ AI แต่ยังไม่มีพื้นฐานเขียนโปรแกรมมาก่อน ขอแนะนำคอร์ส Python + Web Programming + Machine Learning (PY203) ของทาง EPT ที่สอนแบบจัดเต็มตั้งแต่พื้นฐาน Python หรือหากมีพื้นฐาน Python แน่น ๆ อยู่แล้วแต่อยากเรียนเกี่ยวกับ AI แบบลงลึกถึงทฤษฎีก็ขอแนะนำคอร์ส Machine Learning (AI701) ครับ

พิเศษวันนี้! หากสมัครคอร์ส Python + Web Programming + Machine Learning (PY203) แล้วแจ้งผ่านทางกล่องข้อความของเพจ Expert.Programming.Tutor ว่ามาสมัครเพราะอ่านบทความนี้ ทางเราจะแถมคอร์ส Computer Engineering Essential (COM101) และคอร์ส SUPER USER (SU101) ที่จะช่วยให้ท่านเข้าใจตั้งแต่พื้นฐานคอมพิวเตอร์ไปจนถึงเรื่อง Command Line การใช้งาน Git และ Linux อย่างลึกซึ้งให้ไปเรียนด้วยแบบฟรี ๆ เลยครับ

แล้วพบกันใหม่บทความหน้าครับ

 

ที่มาและเว็บไซต์อ้างอิง

[1] https://developers.google.com/mediapipe
[2] https://developers.google.com/mediapipe/solutions/vision/pose_landmarker
[3] https://archive.interconf.center/index.php/conference-proceeding/article/view/3213/3244

 

* เครื่องที่ใช้ทดสอบในบทความนี้เป็น Windows 10 64-bit และมี Package ต่าง ๆ ในเครื่องดังนี้

Package               Version
--------------------- --------
absl-py               1.4.0
asttokens             2.2.1
attrs                 23.1.0
backcall              0.2.0
cffi                  1.15.1
cloudpickle           2.2.1
colorama              0.4.6
comm                  0.1.3
cycler                0.11.0
debugpy               1.6.7
decorator             5.1.1
executing             1.2.0
flatbuffers           23.5.26
fonttools             4.33.3
importlib-metadata    6.6.0
ipykernel             6.23.1
ipython               8.13.2
jedi                  0.18.2
jupyter_client        8.2.0
jupyter_core          5.3.0
kiwisolver            1.4.2
matplotlib            3.5.2
matplotlib-inline     0.1.6
mediapipe             0.10.0
nest-asyncio          1.5.6
numpy                 1.22.4
opencv-contrib-python 4.7.0.72
opencv-python         4.7.0.72
packaging             21.3
pandas                1.2.1
parso                 0.8.3
pickleshare           0.7.5
Pillow                9.1.1
pip                   23.1.2
platformdirs          3.5.1
prompt-toolkit        3.0.38
protobuf              3.20.3
psutil                5.9.5
pure-eval             0.2.2
pycparser             2.21
Pygments              2.15.1
pyparsing             3.0.9
python-dateutil       2.8.2
pytz                  2022.2.1
pywin32               306
pyzmq                 25.1.0
setuptools            56.0.0
six                   1.16.0
sounddevice           0.4.6
spyder-kernels        2.4.3
stack-data            0.6.2
tornado               6.3.2
traitlets             5.9.0
typing_extensions     4.6.3
wcwidth               0.2.6
zipp                  3.15.0

 


Tag ที่น่าสนใจ: ai pose_landmarks_detection mediapipe deep_learning human_pose_estimation motion_capture computer_vision machine_learning artificial_intelligence programming python web_development image_segmentation object_detection hand_landmarks_detection


บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา