ระบบตรวจจับการยกดัมเบล(Dumbbell Lift Detection)

ผู้เขียนบทความ:นายภูรินทร์  วงค์สวัสดิ์ CoE#034

คณะวิศวกรรมศาสตร์:สาขาวิศวกรรมคอมพิวเตอร์

วิชา:04-513-201 การโปรแกรมคอมพิวเตอร์ขั้นสูง 1/2566

1.ความเป็นมา

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

2.วัตถุประสงค์

1.เพื่อศึกษาและพัฒนาทักษะในการเขียนภาษา Python

2.เพื่อนําเทคนิคการประมวลผลภาพมาประยุกต์ใช้งานได้จริง

3.เพื่อนำความรู้ในการเขียนภาษา Python มาใช้งานได้จริง

3.ขอบเขต

1.ระบบสามารถตรวจจับจำนวนครั้งในการยกดัมเบลได้

2.สามารถตรวจจับการเคลื่อนไหวแบบ Real time

3.โปรแกรมพัฒนาด้วยภาษา Python

4.ประโยชน์ที่คาดว่าจะได้รับ

1.สามารถบันทึกจำนวนครั้งในการยกดัมเบล

2.สามารถนำความรู้ด้าน Python มาใช้ประโยชน์ได้จริง

3.สามารถที่จะนำระบบไปต่อยอดหรือประยุกต์ในการพัฒนาต่อได้

5.ความรู้ที่เกี่ยวข้อง

5.1ภาษา Python

คือภาษาโปรแกรมคอมพิวเตอร์ระดับสูง โดยถูกออกแบบมาให้เป็นภาษาสคริปต์ที่อ่านง่าย  โดยตัดความซับซ้อนของโครงสร้างและไวยกรณ์ของภาษาออกไป ในส่วนของการแปลงชุดคำสั่งที่เราเขียนให้เป็นภาษาเครื่อง Python มีการทำงานแบบ Interpreter คือเป็นการแปลชุดคำสั่งทีละบรรทัด เพื่อป้อนเข้าสู่หน่วยประมวลผลให้คอมพิวเตอร์ทำงานตามที่เราต้องการ นอกจากนั้นภาษาโปรแกรม Python ยังสามารถนำไปใช้ในการเขียนโปรแกรมได้หลากหลายประเภท โดยไม่ได้จำกัดอยู่ที่งานเฉพาะทางใดทางหนึ่ง (General-purpose language) จึงทำให้มีการนำไปใช้กันแพร่หลายในหลายองค์กรใหญ่ระดับโลก เช่น Google, YouTube, Instagram, Dropbox และ NASA เป็นต้น 

5.2OpenCV

OpenCV (Open source Computer Vision) เป็นไลบรารีฟังก์ชันการเขียนโปรแกรม (Library of Programming Functions) โดยส่วนใหญ่จะมุ่งเป้าไปที่การแสดงผลด้วยคอมพิวเตอร์แบบเรียลไทม์ (Real-Time Computer Vision) เดิมทีแล้วถูกพัฒนาโดย Intel แต่ภายหลังได้รับการสนับสนุนโดย Willow Garage ตามมาด้วย Itseez (ซึ่งต่อมาถูกเข้าซื้อโดย Intel) OpenCV เป็นไลบรารีแบบข้ามแพลตฟอร์ม (Cross-Platform) และใช้งานได้ฟรีภายใต้ลิขสิทธิ์ของ BSD แบบโอเพ่นซอร์ส (Open-Source BSD License)

OpenCV ยังสนับสนุนเฟรมเวิร์กการเรียนรู้เชิงลึก (Deep Learning Frameworks) ได้แก่ TensorFlowTorch/PyTorch และ Caffe

การใช้ประโยชน์

ตัวอย่างการประยุกต์ใช้งาน OpenCV มีดังนี้

  • ชุดเครื่องมือคุณลักษณะ 2 มิติและ 3 มิติ (2D and 3D feature toolkits)
  • การประมาณระยะในขณะเคลื่อนที่ (Egomotion Estimation)
  • ระบบรู้จำใบหน้า (Facial recognition system)
  • การจดจำท่าทาง (Gesture recognition)
  • ปฏิสัมพันธ์ระหว่างมนุษย์และคอมพิวเตอร์ (Human-Computer interaction; HCI)

ภาษาการเขียนโปรแกรม

OpenCV ถูกเขียนขึ้นด้วยภาษา C++ มีการรองรับ Python, Java และ MATLAB/OCTAVE — API สำหรับอินเทอร์เฟสเหล่านี้สามารถพบได้ในเอกสารออนไลน์ ซึ่งมีการรวมไว้หลากหลายภาษา เช่น C#, Perl, Ch, Haskell และ Ruby ได้รับการพัฒนาเพื่อส่งเสริมการนำมาใช้งานโดยผู้ใช้ที่เพิ่มขึ้น

การติดตั้ง OpenCV

pip install opencv-python

5.3Mediepipe

เป็นแพลตฟอร์ม AI แบบ Open source ที่สามารถใช้เป็น Pipeline ตรวจจับและรับรู้ใบหน้า มือ และท่าทางที่มีความซ้บซ้อน โดยใช้การเร่งความเร็วในการระบุและประมวลผล จึงออกมาเป็นโซลูชันที่แม่นยำและรวดเร็ว เราสามารถติดตั้งได้โดยการ pip install mediapipe

5.4NumPy

NumPy เป็นชื่อของ library ที่ใช้ในการคำนวนทางคณิตศาสตร์ในภาษา Python ซึ่งภายในถูกเขียนด้วยภาษา C จึงทำงานได้เร็วและมีประสิทธิภาพ โดย NumPy มีความสามารถในการจัดการกับอาเรย์หลายมิติและข้อมูลแบบเมทริกซ์ เราสามารถติดตั้งได้โดยการ pip install numpy

6.ผลดำเนินการ

1.เมื่อเริ่มรันโปรแกรมตรงซ้ายล้างจะขึ้น 0

2.เมื่อเราเริ่มยกตรงบาร์จะมีมีสีชมพู

3.เมื่อเราเริ่มยกขึ้นไปถึง100%ตรงบาร์จะเป็นสีเขียวและนับ1 ส่วนที่Terminalจะแสดงค่าเป็น2.5 คือช่วงที่จะนับครั้งต่อไปเมื่อเราเอาลง

4.เมื่อเรายกดัมเบลลงตรงTerminalจะแสดงค่าเป็น 3.0 และในกล้องเราจะนับเลขไปเป็นจำนวนเต็ม

7.ข้อเสนอแนะ

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

8.ข้อมูลอ้างอิง

OpenCV และ Numpy

https://shorturl.at/gD134

https://shorturl.at/jvITU

https://shorturl.at/lCMPT

Mediapipe

https://shorturl.at/ciJR

https://github.com/google/mediapipe

ตัวอย่างCode

https://www.youtube.com/watch?v=5kaX3ta398w

Video

You may also like...

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *