รีวิว BeagleY-AI SBC พร้อมทดสอบประสิทธิภาพและทดลองใช้งานบน Debian

BeaglY-AI
BeaglY-AI

BeagleY-AI เป็นคอมพิวเตอร์บอร์ดเดี่ยว (single board computer : SBC) แบบ open-source ของ BeagleBoard.org โดยบอร์ด BeagleY-AI นี้ถูกออกแบบมาเพื่อการประยุกต์ด้านปัญญาประดิษฐ์ โดยมีหน่วยประมวลผลหลักคือ ARM Coretex-A53 จำนวน 4 แกน ทำงานที่ความเร็ว 1.4 GHz นอกจากนั้นยังมี ARM Cortex-R5F ทำงานที่ความเร็ว 800MHz สำหรับการใช้งานทั่วไป รวมไปถึงการใช้งานกับ I/O แบบ low-lentency มี C7x DSP จำนวน 2 หน่วย พร้อมด้วย Multiply Accelertor (MMA) ที่ช่วยด้านการคำนวณปัญญาประดิษฐ์และเร่งความเร็วการคำนวณ Deel Learning โดย C7XDSP แต่ละหน่วยจะทำงานที่ความเร็ว 2 TOPs รวมสูงสุด 4 TOPS รวมทั้งยังมาพร้อมกับ BXS-4-64 ซึ่งเป็นหน่วยเร่งความเร็วกราฟิกส์ความเร็ว 50 GFlops สำหรับงานมัลติมีเดีย เช่น การเข้ารหัสและการถอดรหัสวิดีโอ  สำหรับผู้ที่สนใจก็สามารถอ่านรายละเอียดอื่น ๆ เพิ่มเติมได้จากการบทความของ CNX-Software และทางเว็บไซต์ของผู้ผลิตครับ

เปิดกล่อง

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

กล่องบรรจุ BeaglY-AI
กล่องบรรจุ BeaglY-AI
ภายในของกล่องบรรจุ BeaglY-AI
ภายในของกล่องบรรจุ BeaglY-AI
Ethernet และ USB ports
Ethernet และ USB ports
USB Power port และ HDMI port
USB Power port และ HDMI port

ผมถ่ายภาพของบอร์ดที่มีผมมีอยู่ที่มี form factor เดียวกันมาให้เปรียบเทียบดูตามภาพด้านล่างนี้ โดยบอร์ดที่ผมมีประกอบด้วย Purple Pi OH, Raspberry Pi 4 Model B, และ BeagleY-AI ครับ

เปรียบเทียบขนาด BeagleY-AI กับ Raspbery Pi Model B และ Purple Pi OH (ด้านบน)
เปรียบเทียบขนาด BeagleY-AI กับ Raspbery Pi Model B และ Purple Pi OH (ด้านบน)
เปรียบเทียบขนาด BeagleY-AI กับ Raspbery Pi Model B และ Purple Pi OH (ด้านล่าง)
เปรียบเทียบขนาด BeagleY-AI กับ Raspbery Pi Model B และ Purple Pi OH (ด้านล่าง)

การติดตั้ง

ผมติดตั้งระบบปฏิบัติการด้วยการทำตามรายละเอียดในเอกสาร BeagleY-AI Quick Start ซึ่งขั้นตอนที่สำคัญก็จะคล้ายกับการเตรียม RP4 หรือ SBC ทั่ว ๆ ไป นั่นก็คือผมต้องเตรียม SD Card เพื่อการลง Image ของระบบปฏิบัติการ โดยผู้ผลิตแนะนำให้ใช้ MicroSD Card ขนาด 32 กิกะไบต์ ในการรีวิวนี้ผมใช้ MicroSD Card ของ SanDisk ขนาด 32 กิกะไบต์

ผู้ผลิตแนะนำการ flash ด้วยโปรแกรม bb-imager หรือไม่ก็ Balena Etcher แต่ว่าหลังจากดาวน์โหลด bb-imager มาแล้วผมพบว่าโปรแกรมไม่รันบนคอมพิวเตอร์ของผม (Windows 10) ผมจึงทดลองใหม่ด้วยโปรแกรม Balena Etcher ซึ่งสามารถ flash ได้โดยไม่มีปัญหาอะไร  สำหรับขั้นตอนคร่าว ๆ ของการใช้ Balena Etcher เพื่อ flash ระบบปฏิบัติการของ BeagleY-AI ก็จะประกอบด้วยการดาวน์โหลด OS Image ที่ผู้ผลิตเตรียมไว้ให้จาก https://www.beagleboard.org/distros/beagley-ai-debian-12-5-2024-06-19-xfce ซึ่ง Image file ที่ผมเลือกมีขนาดประมาณ 1.4 กิกะไบต์ เมื่อดาวน์โหลดเสร็จแล้วจึงขยายไฟล์จากไฟล์ .xz เป็นไฟล์ .img รอไว้ เสร็จแล้วผมเปิดโปรแกรม Balena Etcher แล้วเลือกไฟล์ img ที่เตรียมไว้แล้วกดปุ่ม Flash! ซึ่งผมรอการติดตั้งประมาณ 10 นาทีและรอการ validate อีกประมาณ 10 นาทีก็เสร็จเรียบร้อยครับ

เตรียมการ Flash ด้วยโปรแกรม BalenaEtcher
เตรียมการ Flash ด้วยโปรแกรม BalenaEtcher
เริ่มต้น Flash ระบบปฏิบัติการลง microSD card
เริ่มต้น Flash ระบบปฏิบัติการลง microSD card

หลังจากนั้นผมก็แก้ไขชื่อผู้ใช้และรหัสผ่านของการเข้าใช้ระบบปฏิบัติการด้วยการเปิดไฟล์ sysconf.txt จากพาร์ติชัน BOOT แล้วค้นหาและแก้ไขข้อมูล user_name และ user_password ตามบรรทัดตัวอย่างด้านล่างนี้ให้เป็นข้อมูลที่เราต้องการ เสร็จแล้วบันทึกและนำการ์ดไปเสียบในบอร์ดก็พร้อมใช้งานครับ

การใช้งานครั้งแรก

ผู้ผลิตแนะนำการใช้งานบอร์ด BeagleY-AI 3 แบบ คือ USB Tethering โดยตรงผ่านสาย USB Type-C, Headless connection ผ่านทาง UART port, และ Standalone connection ที่ต้องใช้จอ เมาส์และคีย์บอร์ด โดยผู้ผลิตแนะนำว่าแหล่งจ่ายไฟที่จ่ายให้บอร์ดที่ต่ออุปกรณ์พ่วงเช่นพัดลมระบายความร้อนหรือว่าจะใช้งานหนัก ๆ นั้นควรจะเป็นแหล่งจ่ายไฟแบบ 5V ที่จ่ายกระแสได้อย่างน้อย 3A หรือถ้าต้องการใช้สาย USB Type-C เป็น Type-C นั้นก็ควรรองรับกระแสอย่างน้อย 1000mA สำหรับการรีวิวนี้ผมทดลองแบบ USB Tethering และ Standalone connection ตามรายละเอียดด้านล่างนี้ครับ

ทดลองใช้งานด้วยวิธี USB Tethering

ผมได้ทดลองเสียบบอร์ด BeagleY-AI เข้ากับคอมพิวเตอร์ของผม เมื่อบอร์ดเริ่มทำงานผมพบว่าไฟสีแดงบนบอร์ดติดค้าง แล้วสักครู่หนึ่งก็จะเปลี่ยนเป็นสีเขียวกะพริบสั้น 2 ครั้งช้า กะพริบ 2 ครั้งเร็ว ซึ่งเป็นสัญญาณว่าบอร์ด BeagleY-AI ทำงานแล้ว เมื่อบอร์ดเตรียมการทำงานเรียบร้อยแล้ว ผมก็สามารถเชื่อมต่อกับ BeagleY-AI ได้ด้วย SSH ผ่านทาง Virtual Wired ที่บอร์ดสร้างให้ ซึ่งของผมได้มาเป็น Ethernet 2 หลังจากนั้นผมจึงทดลองเปิด Windows Power Shell แล้วเชื่อมต่อกับบอร์ดด้วย SSH โดยใช้ username และ pwd ที่ตั้งไว้เมื่อก่อนหน้านี้ ผมพบว่าสามารถเชื่อมต่อไปที่ BeagleY-AI ได้ทันที ภาพด้านล่างนี้เป็นตัวอย่างผลการรัน htop จากการเชื่อมต่อแบบ USB Tethering ครับ

ทดสอบการใช้งาน BeagleY-AI ผ่าน SSH
ทดสอบการใช้งาน BeagleY-AI ผ่าน SSH

ทดลองใช้งานด้วยวิธี Standalone connection

การทดลองนี้ ผมต้องต่อ BeagleY-AI เข้ากับอุปกรณ์อื่น ๆ ภายนอก โดยผมใช้สาย micro HDMI to full-size HDMI ต่อกับจอ BenQ EL2870U และใช้คีย์บอร์ดและเมาส์ของ Logitech แบบไร้สาย รวมทั้งต่อสาย LAN รอไว้ด้วย เสร็จแล้วผมจึงจ่ายไฟให้บอร์ดโดยใช้ power adaptor ของสมาร์ทโฟนของผมที่จ่ายไฟ 5V 3A และทันทีที่จ่ายไฟระบบก็เริ่มทำงาน หลังจากใช้เวลาสักครู่ระบบก็พร้อมใช้งาน

หน้า Default Desktop ของ BeagleY-AI
หน้า Default Desktop ของ BeagleY-AI

สำหรับการใช้งานอินเทอร์เน็ตด้วย Ethernet นั้นผมสามารถใช้งานได้ทันที ส่วนการใช้งาน Wi-Fi นั้น ผมต้องเปิดการใช้งาน NetworkManager และ start service ให้เรียบร้อยก่อน หลังจากนั้นจึงรัน nmtui เพื่อตั้งค่า Wi-Fi ซึ่งก็ทำได้โดยไม่พบปัญหาใด ๆ

ตรวจสอบบอร์ด

ตรวจสอบฮาร์ดแวร์ด้วยคำสั่ง inxi

ผมติดตั้ง inxi เพิ่มด้วยคำสั่ง sudo apt install inxi แล้วรันก็ได้พบว่า inxi ตรวจพบ CPU เป็น Cortex-A53 4 แกน ตรงตามที่ควรจะเป็น ส่วนรายละเอียดอื่น ๆ ก็มีตามข้อมูลด้านล่างนี้ครับ

ทดสอบประสิทธิภาพด้วย sbc-bench

ผมทดสอบทดสอบประสิทธิภาพของบอร์ด BeagleY-AI ด้วยการรันสคริปต์ sbc-bench v0.9.67 ของ Thomas Kaiser ซึ่งได้ผลลัพธ์ตามรายละเอียดด้านล่างนี้ครับ โดยพบปัญหาส่วนของการรายงานอุณหภูมิซึ่งคงต้องรอประสานงานกับทางผู้พัฒนา sbc-bench เพื่อให้ช่วยจัดการปัญหาส่วนนี้ต่อไปครับ

ทดสอบประสิทธิภาพของอุปกรณ์เครือข่าย

ในช่วงที่ทำการทดสอบส่วนนี้ ผมไม่สามารถหา Router ที่รองรับ Ethernet แบบ Gigabit มาใช้งานได้ โดยการรีวิวนี้ผมใช้ TP-Link TL-MR100 4G LTE Router และ Router ตัวนี้มีความเร็ว Ethernet สูงสุด 100Mbps เท่านั้นและมีความเร็วของการสื่อสารแบบ Wi-Fi 2.4 GHz ที่ประมาณ 300Mbps ครับ ในส่วนของผลการทดสอบด้วยโปรแกรม iperf3 มีดังนี้ครับ

Ethernet: ส่ง…


Ethernet: รับ…


Wi-Fi 2.4: ส่ง…


Wi-Fi 2.4: รับ…

ทดสอบการเล่นวิดีโอบน Youtube

ผมทดสอบประสิทธิภาพการเล่นวิดีโอบน YouTube โดยใช้เว็บเบราเซอร์ที่มาพร้อมกับ Image File ของระบบปฏิบัติการของ BeagleY-AI ซึ่งประกอบด้วย Firefox ESR 111.15.0 (64-bit), Firefox Nightly 129.0a1 (2024-06-18) (64-bit), และ Chromium 129.0.6668.58 (64-bit) ผมได้ทดลองเล่นวิดีโอแบบ 4K โดยเปิดวิดีโอแบบเต็มจอทุกความขนาดภาพตั้งแต่ 144 จนถึง 2160 ผมพบว่าบอร์ด BeagleY-AI สามารถเล่นวิดีโอได้ดีที่สุดเมื่อกำหนดขนาดการแสดงผลเป็น 480 ซึ่งจะมี dropped rate ประมาณ 10 – 15% ถ้าขนาดภาพต่ำกว่านี้ลงไปจนถึง 144 นั้นจะมีสะดุดเพิ่มขึ้นเล็กน้อย

สำหรับการเล่นวิดีโอที่ขนาด 720 นั้นก็ยังทำได้อยู่ แต่พบการสะดุดมากขึ้นอย่างเห็นได้ชัด และเมื่อเปลี่ยนขนาดภาพเป็น 1440 หรือ 2160 แล้วก็พบว่าแทบจะไม่สามารถเล่นวิดีโอย่างต่อเนื่องได้เลย โดยเฉพาะกรณีของวิดีโอขนาด 2160 นั้นไม่สามารถเล่นได้ ตามตัวอย่างภาพหน้าจอจากที่ผมทดลองกับ Chromium ครับ

beagley ai youtube 144 fullscreen
ทดสอบรันวิดีโอ 4K บน YouTube (ภาพขนาด 144)
beagley ai youtube 240 fullscreen
ทดสอบรันวิดีโอ 4K บน YouTube (ภาพขนาด 240)
beagley ai youtube 360 fullscreen
ทดสอบรันวิดีโอ 4K บน YouTube (ภาพขนาด 360)
beagley ai youtube 480 fullscreen
ทดสอบรันวิดีโอ 4K บน YouTube (ภาพขนาด 480)
beagley ai youtube 720 fullscreen
ทดสอบรันวิดีโอ 4K บน YouTube (ภาพขนาด 720)
beagley ai youtube 1080 fullscreen
ทดสอบรันวิดีโอ 4K บน YouTube (ภาพขนาด 1080)
beagley ai youtube 1440 fullscreen
ทดสอบรันวิดีโอ 4K บน YouTube (ภาพขนาด 1440)
beagley ai youtube 2160 fullscreen
ทดสอบรันวิดีโอ 4K บน YouTube (ภาพขนาด 2160)

ทดสอบการทำงานของเว็บเบราเซอร์ด้วย Speedometer

ผมเชื่อมต่ออินเทอร์เน็ตด้วย Ethernet และทดสอบการทำงานของเว็บแอปพลิเคนชันบนเว็บเบราเซอร์ด้วย Speedometer 2.0 และ Speedometer 3.0 ซึ่งได้ผลตามที่แสดงในภาพด้านล่างนี้ โดย Chromium กับ Firefox Nightly นั้นมีคะแนนใกล้เคียงกันและ Firefox ESR มีคะแนนน้อยที่สุดไม่ว่าจะทดสอบด้วย Speedometer หรือ Speedometer 3.0

beagley ai speedometer2 ethernet chromium
ทดสอบ Speedometer 2.0 บน Chromium
beagley ai speedometer3 ethernet chromium
ทดสอบ Speedometer 3.0 บน Chromium
beagley ai speedometer2 ethernet firefox esr
ทดสอบ Speedometer 2.0 บน Firefox ESR
beagley ai speedometer3 ethernet firefox esr
ทดสอบ Speedometer 3.0 บน Firefox ESR
beagley ai speedometer2 ethernet firefox nightlybuild
ทดสอบ Speedometer 2.0 บน Firefox Nightly
beagley ai speedometer3 ethernet firefox nightlybuild
ทดสอบ Speedometer 3.0 บน Firefox Nightly

ทดสอบการแสดงกราฟิกส์สามมิติบนเว็บเบราเซอร์ด้วย WebGL

สำหรับการทดสอบประสิทธิภาพการทำงานกราฟิกส์สามมิติบนเว็บเบราเซอร์ด้วย WebGL นั้นได้ผลใกล้เคียงกัน คือ ประมวลผลไม่ทัน ผมเปิดเว็บเบราเซอร์เต็มหน้าจอและแสดงผลปลา 1 ตัวก็พบว่าการแสดงผลของ Chromium อยู่ที่ 1 FPS ในขณะที่ Firefox ทั้งสองแบบมีอัตราการแสดงผลที่ 3 FPS เท่านั้น

ทดสอบ WebGL บน Chromium
ทดสอบ WebGL บน Chromium
ทดสอบ WebGL บน Firefox ESR
ทดสอบ WebGL บน Firefox ESR
ทดสอบ WebGL บน Firefox Nightly
ทดสอบ WebGL บน Firefox Nightly

ทดสอบการทำงานของ GLES

ผมทดสอบการทำงานของ GLES ที่มากับระบบปฏิบัติการของ BeagleY-AI ด้วยคำสั่ง glmark2-es2 ประมาณ 4 – 5 รอบ ได้ค่า glmark2 Score เฉลี่ยประมาณ 32 ตามตัวอย่างผลการรันครั้งแรกด้านล่างนี้ โดยผลการทำงานทุกครั้งจะค่อนข้างใกล้เคียงกัน คือ แสดงผลได้ค่อนข้างราบรื่น มีการสะดุดบ้างเล็กน้อยแต่ไม่ถึงกับสังเกตเห็นได้ชัด ยกเว้นการแสดง terrain ซึ่งผมพบว่าบางครั้งสะดุดมากและทำคะแนนส่วนนี้ได้ประมาณ 1 – 2 FPS เท่านั้น

ทดลองใช้งาน Object Detection ด้วย TensorFlow Lite

การทดสอบต่อมาก็คือการทดสอบการใช้งานปัญญาประดิษฐ์ในกลุ่ม Object Detection ด้วย TensorFlow Lite โดยผมทำตามขั้นตอนตัวอย่างที่ผู้ผลิตแสดงในเว็บ ซึ่งผมพบว่าตามได้ง่าย ผมสามารถ copy และ paste แล้วรันได้เลย ไม่ผลข้อติดขัดอะไร โดยมีขั้นตอนคร่าว ๆ ตามนี้ครับ

ขั้นแรกเป็นการติดตั้ง Conda เวอร์ชัน lightweight ด้วย Miniforge/Mambaforce 24.3.0.0


สร้าง Virtual Environment ใหม่ โดยในตัวอย่างนี้ผุ้ผลิตใช้ Python เวอร์ชัน 3.9 เสร็จแล้วลง numpy และ OpenCV ต่อด้วยคำสั่งเหล่านี้


หลังจากนั้นจึงไปดาวน์โหลด pretrained models มาจาก Google-Coral ซึ่งผู้ผลิตเลือกใช้โมเดล COCO SSD MobileNet ซึ่งผมก็ดาวน์โหลดมาและขยายไฟล์ไว้ตามตัวอย่าง


ผมทดสอบการทำงานกับภาพนิ่งก่อน โดยนำโค๊ดที่ผู้ผลิตเตรียมให้มาแก้ไข ก็พบว่าทำงานได้ดี สำหรับการทดลองต่อกล้องเพื่อทดสอบการทำงานแบบ realtime นั้น ผมใช้กล้อง RAPOO C260 ซึ่งเป็น USB web camera ความละเอียด 1080p ต่อกับ USB port ของ BeagleY-AI จากนั้นผมรันคำสั่งต่อไปนี้เพื่อตรวจสอบอุปกรณ์หาข้อมูลกล้อง ในตัวอย่างของผู้ผลิตระบุเป็นอุปกรณ์หมายเลข 3 ซึ่งผลทดลองแล้วได้ผลลัพธ์เดียวกัน สามารถนำข้อมูลนี้ไปใช้ได้ทันที


ในส่วนรายละเอียดของโค๊ดส่วนที่สำคัญนอกจากการเตรียมคลาสกล้องนั้น โค๊ดตัวอย่างก็จะมีการโหลดและเตรียมโมเดลให้พร้อมใช้งานตามบรรทัดคำสั่งด้านล่างนี้


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


ผมรันโค๊ดนี้แล้วได้ผลตามภาพด้านล่าง พบว่า BeagleY-AI มีอัตราการแสดงผลประมาณ 3FPS ซึ่งได้ผลลัพธ์ใกล้เคียงกับผู้ใช้รายอื่น ซึ่งจากการค้นหาผมพบว่าผู้ใช้งานบางรายแจ้งว่าถ้าเราอยากให้บอร์ด BeagleY-AI ประมวลผลเร็วขึ้นนั้นเราจำเป็นจะต้องใช้คลังโปรแกรม Texas Instruments Deep Learning (TIDL) แต่มีผู้ใช้หลายรายโพสเรื่องปัญหาการใช้งาน Image จาก TI ซึ่งยังคงใช้งานไม่ได้ และยังไม่มีตัวอย่างอย่างเป็นทางการจากผู้ผลิตในขณะนี้ ดังนั้นผมจึงหยุดการทดลองส่วนนนี้เพียงเท่านี้ครับ

BeagleY-AI ทดสอบ TensorFlow Lite แบบ Realtime (1280x720)
ทดสอบ TensorFlow Lite แบบ Realtime (1280×720)
ทดสอบ TensorFlow Lite แบบ Realtime (640x480)
ทดสอบ TensorFlow Lite แบบ Realtime (640×480)

ผมลองเปิด htop เพื่อตรวจสอบดูว่าการรันโค๊ดชุดนี้ใช้ CPU มากน้อยขนาดไหน ผมพบว่าการรัน Object Detection ด้วย TensorFlow Lite นี้ไม่ได้ใช้ CPU ของ BeagleY-AI เต็มที่ทุกแกน และจากการตรวจสอบด้วยสายตาก็พบว่าใช้ CPU เฉลี่ยแล้วประมาณ 50%

ตรวจสอบการใช้ CPU เมื่อรัน TensorFlow Lite
ตรวจสอบการใช้ CPU เมื่อรัน TensorFlow Lite

ทดลองใช้งานด้านการประมวลผลภาพด้วย Google MediaPipe

เนื่องจากผมหาตัวอย่างการใช้งานอื่น ๆ จากผู้ผลิต BeagleY-AI ที่เกี่ยวข้องกับปัญญาประดิษฐ์หรือการประมวลผลภาพไม่เจอ ผมจึงลองทดสอบการใช้งานบอร์ดกับ Google MediaPipe ซึ่งเป็นคลังโปรแกรมจาก Google สำหรับงานด้าน Machine Learning โดยการหัวข้อนี้ผมจะทดลองใช้งานภาษา Python กับกลุ่มการทำงานด้าน Object Detection, การแบ่งส่วนภาพ (Image Segmentation), การตรวจหาจุดสำคัญบนใบหน้า (Face Landmark Detection), และการรู้จำท่าทางมือ (Gesture Recogntion) ครับ

สำหรับการเตรียมใช้งาน MediaPipe นั้นผมทำตามตัวอย่างใน Guide ของ MediaPipe ตามแต่ละหัวข้อที่ต้องการ สิ่งที่แรกผมต้องทำติดตั้งคือติดตั้ง MediaPipe ด้วยคำสั่ง


หลังจากนั้นจะเป็นการเตรียมการใช้งานมอดูลที่เราเลือกใช้ ซึ่งเราจะต้องกำหนดตัวเลือก (option) ต่าง ๆ ของคลาสที่ต้องการใช้ให้ถูกต้อง จากนั้นสร้างวัตถุของคลาสนั้นขึ้นมาเสร็จแล้วจึงค่อยเรียกใช้งาน ตัวอย่างด้านล่างนี้จะเป็นการเตรียมใช้งาน Object Detection ซึ่งเราจะต้องไปเลือกและดาวน์โหลดโมเดลที่ต้องการมารอไว้ก่อน โดยในตัวอย่างนี้ผมเลือกโมเดล EfficientDet-Lite0 มาใช้งาน จากนั้นจึงกำหนด option ให้พร้อมใช้งาน


หลังจากนั้นเราก็จะสามารถเรียกใช้งาน object detector นี้ได้ตามต้องการ ซึ่งในกรณีของผมที่อ่านภาพวิดีโอด้วย OpenCV มานั้น ผมจะต้องแปลงข้อมูลภาพด้วย mp.Image เพื่อให้ MediaPipe นำไปใช้ได้ จากนั้นแค่เรียกเมธอด detect ก็จะได้ผลลัพธ์ออกมาและนำมาแสดงผลได้ตามโค๊ดตัวอย่างต่อไปนี้


BeagleY-AI ทดสอบการใช้งาน MediaPipe Object Detection
BeagleY-AI ทดสอบการใช้งาน MediaPipe Object Detection

BeagleY-AI ทดสอบการใช้งาน MediaPipe Facial Landmark Detection
ทดสอบการใช้งาน MediaPipe Facial Landmark Detection
BeagleY-AI ทดสอบการใช้งาน MediaPipe Gesture Reognition
ทดสอบการใช้งาน MediaPipe Gesture Reognition
ทดสอบการใช้งาน MediaPipe Image Segmentation
ทดสอบการใช้งาน MediaPipe Image Segmentation

ผลการทดสอบผมพบว่าการเรียกใช้งาน MediaPipe Object Detection นั้นมีอัตราการแสดงผลประมาณ 1FPS ในขณะที่การรัน Gesture Recognition นั้นมีอัตราการแสดงผลเฉลี่ยประมาณ 1.5FPS และการรัน Face Landmark Detetor นั้นมีอัตราการแสดงผลเร็วขึ้นมาเป็นประมาณ 4.3FPS สำหรับการรัน Image Segmentation นั้นผมลองใช้งานเพื่อแบ่งส่วนภาพคนในภาพออกจากพื้นหลังและเบลอพื้นหลังเล็กน้อย ประสิทธิการการแสดงผลถ้าผมกำหนดขนาด kernel ของฟังก์ชัน GaussianBlur เป็น 25×25 พิกเซลนั้นจะอยู่ที่ประมาณ 7FPS แต่ถ้าลดขนาด kernel ลงมาเป็น 3×3 พิกเซลแล้วจะเพิ่มอัตราการแสดงผลขึ้นมาได้ถึง 9.5FPS

ทดสอบการสกัด SIFT Features

อีกส่วนหนึ่งคืออยากทดสอบคือ SIFT (Scale-invariant feature transform) เนื่องจากเป็นอัลกอริทึมหนึ่งที่สามารถใช้เพื่อสกัดฟีเจอร์เด่น ๆ ในภาพ และสามารถนำฟีเจอร์นี้จะเป็นข้อมูลพื้นฐานสำหรับการนำไปประยุกต์ต่อได้หลายทางไม่ว่าจะเป็นการจับคู่ภาพ (image matching), การสร้างภาพต่อ (mosaicing) และการคำนวณ Epipolar Geometry

การใช้เรียกใช้งาน SIFT ใน OpenCV ทำได้ง่าย และการเรียกใช้งานบนบอร์ดนี้ก็ทำได้โดยไม่ติดขัดอะไร ในโค๊ดตัวอย่างด้านล่างนี้ผมใช้ USB web camera ตัวเดิม และผมสร้างตัวแปรมาเพื่อใช้งาน SIFT ด้วยการเรียก cv2.SIFT_create() หลังจากนั้นจึงนำไปใช้งานในการสกัดฟีเจอร์หรือ keypoints ภาพจากวิดีโอแต่ละเฟรมด้วยการเรียกเมธอด detect และใช้ cv2.drawKeypoints วาด keypoints ที่ตรวจพบ โปรแกรมนี้มีอัตราการแสดงผลกับภาพวิดีโอขนาด 1920×1080 พิกเซลประมาณ 0.1FPS, ภาพวิดีโอขนาด 1280×720 พิกเซลประมาณ 0.5FPS, และภาพวิดีโอขนาด 320×240 พิกเซลประมาณ 7.5FPS ตามตัวอย่างภาพด้านล่างนี้


BeagleY-AI ทดสอบ SIFT feature extration แบบ real-time กับวิดีโอขนาด 1920x1080
ทดสอบ SIFT feature extration แบบ real-time กับวิดีโอขนาด 1920×1080

BeagleY-AI ทดสอบ SIFT feature extration แบบ real-time กับวิดีโอขนาด 1280x720
ทดสอบ SIFT feature extration แบบ real-time กับวิดีโอขนาด 1280×720
BeagleY-AI ทดสอบ SIFT feature extration แบบ real-time กับวิดีโอขนาด 320x240
ทดสอบ SIFT feature extration แบบ real-time กับวิดีโอขนาด 320×240

อื่น ๆ

วัดอุณหภูมิขณะใช้งานเต็มที่

สำหรับการทดสอบอุณหภูมิของบอร์ด BeagleY-AI นั้น ผมทดลองตอนกลางวันที่มีอุณหภูมิห้องประมาณ 31C โดยใช้กล้อง FLIR E4 วัดอุณหภูมิของบอร์ด ครั้งแรกวัดหลังจากบูตเสร็จใหม่ ๆ ยังไม่ได้เปิดโปรแกรมใด ๆ พบว่าอุณหภูมิสูงสุดของบอร์ดอยู่ที่ประมาณ 42 – 45C  หลังจากนั้นผมจึงลองทดสอบเปิดโปรแกรมให้บอร์ดทำงานเต็มที่ โดยผมได้เล่นวิดีโอ 4K ใน YouTube ตั้งค่าขนาดภาพเป็น 2160 และแสดงผลแบบเต็มหน้าจอ รวมทั้งรันโค๊ด Object Detection บน TensorFlow Lite ไปพร้อมกัน ผมปล่อยให้บอร์ด BeagleY-AI ทำงานเช่นนี้ไปประมาณ 10 นาทีแล้วจึงวัดอุณหภูมิ ได้ค่าอุณหภูมิสูงสุดประมาณ 61C และยังคงเพิ่มขึ้นไปเรื่อย ๆ ช้า ๆ หลังจากนั้นผมจึงลองนำพัดลมตั้งโต๊ะมาเปิดเป่าระบายความร้อนให้บอร์ด พบว่าความร้อนลดลงแทบจะทันทีโดยใช้เวลาสักครู่ก็ลดลงมาอยู่ที่ประมาณ 51C

BeagleY-AI ตรวจสอบอุณภูมิด้วยการรันวิดีโอ 4K และ TensorFlow Lite พร้อมกัน
ตรวจสอบอุณภูมิด้วยการรันวิดีโอ 4K และ TensorFlow Lite พร้อมกัน
BeagleY-AI อุณหภูมิของบอร์ดหลังจากทดลองรันวิดีโอ 4K และ TensorFlow Lite พร้อมกัน (ไม่มีพัดลมระบายความร้อน)
อุณหภูมิของบอร์ดหลังจากทดลองรันวิดีโอ 4K และ TensorFlow Lite พร้อมกัน (ไม่มีพัดลมระบายความร้อน)
อุณหภูมิของบอร์ดหลังจากทดลองรันวิดีโอ 4K และ TensorFlow Lite พร้อมกัน (เปิดพัดลมตั้งโต๊ะช่วยระบายความร้อน)
อุณหภูมิของบอร์ดหลังจากทดลองรันวิดีโอ 4K และ TensorFlow Lite พร้อมกัน (เปิดพัดลมตั้งโต๊ะช่วยระบายความร้อน)

วัดการใช้พลังงาน

ผมวัดการใช้พลังงานของ BeagleY-AI ด้วย USB Power Meter พบว่ากรณีเมื่อบอร์ด BeagleY-AI อยู่ในสถานะ idle นั้นใช้พลังงานประมาณ 4.7 – 4.8W ส่วนการใช้พลังงานในขณะที่เล่นวิดีโอ YouTube 4K แบบเต็มจอนั้นบอร์ดจะใช้พลังงานประมาณ 5.5 – 5.8W ตามตัวอย่างในภาพด้านล่างครับ

การใช้พลังงานเมื่อ BeagleY-AI อยู่ในสถานะ idle
การใช้พลังงานเมื่อ BeagleY-AI อยู่ในสถานะ idle
การใช้พลังงานเมื่อ BeagleY-AI อยู่ในรัน TensorFlow Lite
การใช้พลังงานเมื่อ BeagleY-AI อยู่ในรัน TensorFlow Lite

ตรวจสอบไฟล์อื่น ๆ ที่ผู้ผลิตเปิดให้เข้าถึงได้

ในส่วนของข้อมูลอื่น ๆ ของบอร์ดที่เราเข้าถึงได้นั้นเราก็จะตรวจสอบเพิ่มเติมได้จาก https://openbeagle.org/beagley-ai/beagley-ai เช่น ไฟล์ 3D, ใบรับรอง, ภาพถ่ายของบอร์ด และไฟล์ PCB ซึ่งไฟล์ 3D นั้นเป็นผู้ผลิตให้มาเป็นไฟล์ STP (STEP fileformat) ซึ่งผมทดลองนำไปเปิดดูจากเว็บ Autodesk Viewer ได้ สำหรับ schematic diagram นั้นให้มาในรูปแบบของ PDF และผู้ผลิตให้ข้อมูล PCB มาเป็นไฟล์ BRD แต่ผมไม่มีโปรแกรมที่เปิดได้ จึงลองนำไฟล์ gerbers มาเปิดด้วย KiCad’s Gerber Viewer ตามภาพด้านล่างนี้ครับ

ไฟล์ 3D ของบอร์ด BeagleY-AI
ไฟล์ 3D ของบอร์ด BeagleY-AI
ไฟล์ 3D ของบอร์ด BeagleY-AI
ไฟล์ 3D ของบอร์ด BeagleY-AI

ภาพตัวอย่างไฟล์ Gerber ของ BeagleY-AI

begalyy ai hardware gerber 01 begalyy ai hardware gerber 03

สรุป

โดยรวมแล้ว BeagleY-AI เป็น SBC ที่ทำงานได้ดี มีเอกสารที่สามารถทำตามและเริ่มต้นใช้งานได้ง่าย อย่างไรก็ตามผมพบว่าในการรีวิวครั้งนี้ผมหาเอกสารกลุ่ม tutorials อย่างเป็นทางการจากเว็บไซต์ของผู้ผลิตได้ยาก โดยเฉพาะตัวอย่างที่เกี่ยวกับการเขียนโปรแกรมเพื่อทดสอบประสิทธิภาพของการใช้งานหน่วยประมวลผลด้านปัญญาประดิษฐ์นั้น ณ ขณะที่เขียนรีวิวนี้ผมพบแค่ตัวอย่างการใช้ TensorFlow Lite เท่านั้น

สำหรับการรีวิวครั้งนี้ผมก็ต้องขอขอบคุณผู้ผลิตที่ส่ง BeagleY-AI มาให้ทดสอบครับ ผู้ที่สนใจสามารถซื้อบอร์ดนี้จาก Element14 ราคาประมาณ 2,400฿ หรือ Seeed Studio ในราคา $70 (~2,300฿)

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
โฆษณา