รีวิว reComputer Industrial R2135-12 – Edge AI PC แบบไม่มีพัดลม ที่ใช้ Raspberry Pi CM5 และมาพร้อมกับตัวเร่งการประมวลผล AI Hailo-8

reComputer AI Industrial R2135-12
reComputer AI Industrial R2135-12

สวัสดีครับ วันนี้ผมจะมารีวิว reComputer AI Industrial R2135-12 จาก Seeed Studio ซึ่งเป็นคอมพิวเตอร์ระดับ Industrial Edge ที่พัฒนาขึ้นบนแพลตฟอร์ม Raspberry Pi Compute Module 5 โดยโมเดลนี้มาพร้อมกับหน่วยความจำ LPDDR4 ขนาด 8GB และพื้นที่เก็บข้อมูล eMMC ขนาด 32GB  ตัวเครื่องมีพอร์ต I/O มาให้เลือกใช้งานอย่างครบครัน ทั้ง Dual Gigabit Ethernet, USB 3.0/USB 2.0, ช่องต่อ HDMI รวมถึงอินเทอร์เฟซสำหรับงานอุตสาหกรรมอย่าง RS-485/RS-232, CAN และ GPIO พร้อมรองรับการเชื่อมต่อ Wi-Fi และ Bluetooth ตลอดจนรองรับช่วงแรงดันไฟ DC ขาเข้าที่กว้างซึ่งเหมาะสมอย่างยิ่งสำหรับสภาพแวดล้อมในงานอุตสาหกรรม

ในการรีวิวนี้นอกเหนือไปจากการตรวจสอบมาตรฐานของอุปกรณ์และการวัดประสิทธิภาพแล้ว ผมยังได้รวมการสาธิตแอปพลิเคชันที่ระบบจะรันโมเดล AI เพื่อตรวจจับและคำนวณตำแหน่งของบุคคลในภาพแบบเรียลไทม์ผ่านกล้อง USB จากนั้นจะส่งข้อมูลไปยังไมโครคอนโทรลเลอร์ ESP32 ภายนอก เพื่อสั่งงานแผงไฟ LED Matrix ให้แสดงตำแหน่งของบุคคลที่ตรวจจับได้ โดยผมได้จัดทำวิดีโอ YouTube ด้านล่างนี้เพื่อสาธิตประสิทธิภาพด้าน AI ของ reComputer รุ่น R2135-12 ให้ชมครับ

สำหรับการรีวิวในครั้งนี้ ผมพยายามที่จะรักษาโปรแกรมต่าง ๆ ในเครื่องให้อยู่ในสภาพเดิมจากโรงงานให้มากที่สุดครับ ดังนั้นนอกเหนือจากการติดตั้งเครื่องมือวัดประสิทธิภาพพื้นฐานอย่าง inxi, sbc-bench และ Geekbench แล้ว ผมเลือกใช้เพียงซอฟต์แวร์ที่ติดตั้งมาให้จากโรงงานเท่านั้น โดยไม่มีการอัปเดตระบบหรือลงแพ็กเกจเพิ่มเติมใดๆ ทั้งนี้เพื่อต้องการทดสอบว่าตัวเครื่องมีความพร้อมใช้งานมากน้อยแค่ไหนทันทีที่แกะกล่องครับ

เปิดกล่อง

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

  • reComputer Industrial R2135-12
  • Mounting brackets
  • Bracket screws
  • DIN-rail clip
  • DC power female jack to screw terminal adapter
  • 12V/3A power adapter (with 4 interchangeable adapter plugs)
  • 15*2-pin terminal block connector (male)
  • 120Ω resistors
  • Wi-Fi/BLE antenna
  • User manual (not in the photo)
บรรจุภัณฑ์ของ reComputer Industrial R2135-12
บรรจุภัณฑ์ของ reComputer Industrial R2135-12
อุปกรณ์ที่ได้รับ
อุปกรณ์ที่ได้รับ

การต้้งค่าและใช้งานครั้งแรก

ตัวเครื่องมีน้ำหนักประมาณ 1.3 กิโลกรัม ซึ่งตอนที่ผมหยิบขึ้นมาครั้งแรกก็รู้สึกว่ามันค่อนข้างมีน้ำหนักมากกว่าที่คาดไว้เล็กน้อย สำหรับตัวเคสหลักนั้นทำมาจากอะลูมิเนียมซึ่งจะทำหน้าที่เป็นทั้งเคสป้องกันและเป็นฮีตซิงก์ระบายความร้อนแบบพาสซีฟ (Passive Heatsink) โดยส่วนแผงด้านล่างจะมีฉลากระบุชื่อรุ่นไว้อย่างชัดเจนว่าเป็น reComputer Industrial R2135-12 ครับ

ฉลากที่แผงด้านล่าง
ฉลากที่แผงด้านล่าง
รูปแบบการตั้งชื่ออุปกรณ์ชุด reComputer
รูปแบบการตั้งชื่ออุปกรณ์ชุด reComputer

เมื่อลองเทียบกับเกณฑ์การตั้งชื่อที่ระบุไว้ในเอกสารอย่างเป็นทางการ ข้อมูลบนฉลากนี้ยืนยันว่าตัวเครื่องที่ผมได้รับนั้นสร้างขึ้นบน Raspberry Pi Compute Module 5 โดยมาพร้อมกับ RAM 8 GB และพื้นที่เก็บข้อมูล eMMC ในตัวขนาด 32 GB นอกจากนี้ยังรองรับการเชื่อมต่อเครือข่ายไร้สาย และติดตั้งตัวเร่งความเร็ว AI อย่าง Hailo-8 มาให้ในตัวด้วยครับ

การแกะเครื่อง

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

ถอดแผงด้านข้าง
ถอดแผงด้านข้าง
ถอดแผงฝั่งตรงข้าม
ถอดแผงฝั่งตรงข้าม
จากซ้ายไปขวา: ปุ่ม reset, HDMI, และ 2×15 terminal block
จากซ้ายไปขวา: ปุ่ม reset, HDMI, และ 2×15 terminal block
จากซ้ายไปขวา: grounding points, power terminal block, LEDs, ปุ่ม reset, USB-C, Nano SIM, และพอร์ต Ethernet
จากซ้ายไปขวา: grounding points, power terminal block, LEDs, ปุ่ม reset, USB-C, Nano SIM, และพอร์ต Ethernet

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

ด้านบน
ด้านบน

การเปิดใช้งานตัวเครื่อง

ตามคู่มือการใช้งานระบุว่า ตัวเครื่องรองรับการจ่ายไฟเข้าได้สองรูปแบบด้วยกัน แบบแรกคือผ่านขั้วต่อ DC Terminal (รอบรับแรงดันไฟในช่วง 9–36V DC) และแบบที่สองคือผ่านพอร์ต PoE ขนาด 30W โดยทางผู้ผลิตแนะนำให้ใช้การจ่ายไฟผ่าน DC Terminal เมื่อต้องเชื่อมต่อกับอุปกรณ์ต่อพ่วงที่กินไฟสูงหรืออุปกรณ์ภายนอกหลายชิ้น โดยการรีวิวครั้งนี้ ผมเลือกจ่ายไฟให้กับตัวเครื่องผ่านขั้วต่อ DC Terminal แบบ 2 พิน ที่ผมเชื่อมต่อเข้ากับอะแดปเตอร์ 12V/3A ที่ให้มาในชุดด้วย ตามที่แสดงในภาพด้านล่างครับ อย่างไรก็ตาม ตัวเครื่องไม่มีปุ่มเปิด-ปิดเครื่องให้ใช้งานและอุปกรณ์จะเริ่มกระบวนการบูตระบบโดยอัตโนมัติทันทีที่มีการจ่ายไฟเข้า ดังนั้นผู้ใช้ควรปิดเครื่องอย่างถูกต้องผ่านตัวระบบปฏิบัติการทุกครั้งก่อนหยุดการจ่ายไฟหรือถอดปลั๊ก

การจ่ายไฟให้อุปกรณ์ด้วย Terminal block
การจ่ายไฟให้อุปกรณ์ด้วย Terminal block

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

Desktop ของระบบปฏิบัติการที่ติดตั้งมาจากโรงงาน
Desktop ของระบบปฏิบัติการที่ติดตั้งมาจากโรงงาน
ตรวจสอบโพรเซสที่กำลังทำงานอยู่ด้วย htop
ตรวจสอบโพรเซสที่กำลังทำงานอยู่ด้วย htop

ตามคู่มือระบุว่า ผู้ใช้งานสามารถแฟลชระบบปฏิบัติการใหม่ (re-burn) ได้เอง โดยใช้ไฟล์ Image จาก GitHub อย่างเป็นทางการ และเลือกตัวเลือก reComputer-R2x-arm64 ครับ ซึ่งในคู่มือการใช้งานจะมีขั้นตอนสอนอย่างละเอียด ตั้งแต่การใช้ rpiboot ร่วมกับ Raspberry Pi Imager เพื่อแฟลชระบบใหม่ นอกจากนี้ ผู้ใช้ยังสามารถติดตั้งระบบปฏิบัติการ Ubuntu ลงบน reComputer Industrial R2135-12 ได้เช่นเดียวกัน โดยให้ผู้ใช้ทำตามคำแนะนำในคู่มือการติดตั้ง Ubuntu บน Raspberry Pi เพื่อแฟลช Image ที่ดาวน์โหลดมา ซึ่งผู้ผลิตได้เตรียมแนวทางการติดตั้งโดยละเอียดสำหรับอุปกรณ์ในซีรีส์ reComputer ไว้ในคู่มือการใช้งานครับ

การตรวจสอบฟีเจอร์พื้นฐานผ่าน Command Line

ในคู่มือการใช้งานมีตัวอย่างคำสั่งสำหรับการทดสอบการทำงานผ่าน Command Line ไว้หลายส่วนครับ เช่น การเรียกดูข้อมูล GPIO ขาต่าง ๆ , การสแกนหาเครือข่าย Wi-Fi และการสั่งเปิด-ปิดไฟ User LED ซึ่งโดยรวมแล้วผมได้ลองรันคำสั่งเหล่านี้ดูและผลลัพธ์ที่ได้ก็ทำงานถูกต้องตามปกติครับ โดยข้อมูลด้านล่างนี้จะแสดงผลลัพธ์จากการใช้คำสั่งตรวจสอบตำแหน่งขา GPIO ครับ


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

ทดสอบการใช้งาน User LEDs
ทดสอบการใช้งาน User LEDs

การสแกนหาเครือข่าย Wi-Fi ก็สามารถทำงานได้ถูกต้องตามปกติ


ส่วนผลลัพธ์จากการสแกน Bluetooth แสดงให้เห็นตามด้านล่างนี้ครับ


สำหรับการทดสอบสุดท้ายในส่วนนี้ ผมจะเน้นไปที่การตรวจสอบการทำงานของพอร์ต DO (Digital Output) โดยวิธีทดสอบก็ง่าย ๆ คือผมใช้มัลติมิเตอร์วัดแรงดันไฟฟ้าที่ขา GPIO638 (DO1) ซึ่งพบว่าแรงดันมีการสลับไปมาระหว่าง 0V และประมาณ 1V ได้อย่างถูกต้อง ตามจังหวะการปรับสถานะเอาต์พุตระหว่าง Low และ High ผ่านคำสั่ง Command Line ต่อไปนี้ครับ

ข้อมูลระบบ

ถัดมาผมได้ติดตั้งและรันเครื่องมือ inxi ผ่าน Command Line เพื่อตรวจสอบข้อมูลพื้นฐานของระบบ โดยมีรายละเอียดปรากฏตามด้านล่างนี้ครับ


รายงานยืนยันว่าตัวระบบทำงานบนพื้นฐานของ Raspberry Pi Compute Module 5 Rev 1.0 รันระบบปฏิบัติการ Debian GNU/Linux 12 (bookworm) ร่วมกับ Kernel เวอร์ชัน 6.12.34+rpt-rpi-2712 บนสถาปัตยกรรม 64-bit ARM (aarch64) ส่วนหน่วยประมวลผลหลักเป็นแบบ Quad-core Cortex-A76 ความเร็วสูงสุด 2.4 GHz (ปรับระดับได้ระหว่าง 1.5 – 2.4 GHz) ซึ่งจากรายงานพบว่าทั้ง 4 แกนกำลังทำงานอยู่ที่ความเร็วสูงสุด ในด้านหน่วยความจำนั้นระบบตรวจพบ RAM ขนาด 7.88 GB โดยมีการใช้งานอยู่ที่ประมาณ 23–28% หลังบูตเครื่องได้ไม่นาน และมีพื้นที่เก็บข้อมูลภายใน 29.12 GB ซึ่งถูกใช้งานไปแล้วประมาณ 27% สำหรับอุณหภูมิ CPU ขณะนั้นอยู่ที่ประมาณ 47–48°C ซึ่งถือว่าการจัดการความร้อนทำได้คงที่ภายใต้สภาวะโหลด

ในส่วนของหน่วยประมวลผลกราฟิกส์ ตัวเครื่องใช้ GPU ของ Broadcom BCM2712 (VC4/V3D) ร่วมกับ Mesa 24.2.8 ซึ่งรองรับ OpenGL 3.1 และสามารถขับจอที่ความละเอียด 1920 × 1080 @ 60 Hz ผ่านพอร์ต HDMI ได้อย่างสบาย โดยตัวเดสก์ท็อปรันอยู่บนสภาพแวดล้อมแบบ Wayland (LabWC) และเปิดใช้งาน Xwayland ไว้ด้วย ด้านการเชื่อมต่อเครือข่าย พบว่าอินเทอร์เฟซ Gigabit Ethernet (eth0) กำลังทำงานอยู่ระหว่างการทดสอบ ในขณะที่พอร์ต Ethernet อื่นๆ รวมถึง Wi-Fi, CAN และ Bluetooth ตรวจพบในระบบแต่ยังไม่ได้เปิดใช้งาน ส่วนระบบเสียงส่งสัญญาณผ่าน HDMI โดยใช้ ALSA และมี PipeWire ทำงานอยู่เบื้องหลังครับ

โดยรวมแล้ว รายละเอียดซอฟต์แวร์และฮาร์ดแวร์ที่ตรวจพบนั้น ตรงตามสเปกที่ระบุไว้ ของ reComputer Industrial R2135-12  ไม่ว่าจะเป็นแพลตฟอร์ม Compute Module 5, CPU Quad-core Cortex-A76 และการกำหนดค่าหน่วยความจำขนาด 8 GB ครับ

การทดสอบประสิทธิภาพ

SBC-Bench

ถัดมาผมได้ติดตั้งและรันเครื่องมือ sbc-bench ซึ่งการทดสอบเสร็จสมบูรณ์และผ่านเกณฑ์ โดยผลลัพธ์แสดงให้เห็นว่าไม่มีอาการ CPU Throttling หรือการใช้หน่วยความจำสำรอง (Swapping) เกิดขึ้นเลย โดยความเร็วสัญญาณนาฬิกามีความเสถียรและขึ้นไปถึงระดับสูงสุดตามที่ระบุไว้ นอกจากนี้ ระหว่างการทดสอบยังตรวจพบการทำงานเบื้องหลัง (Background activity) ในระดับที่ยอมรับได้

ในส่วนของประสิทธิภาพหน่วยความจำ ผลที่ได้มีความสม่ำเสมอในทุกแกนของ Cortex-A76 โดยมีค่าจาก memcpy throughput อยู่ที่ประมาณ 5.1 GB/s และจาก memset throughput อยู่ที่ประมาณ 8.5 GB/s ด้านความหน่วงเวลาของหน่วยความจำ (Memory latency) ยังคงต่ำมากในช่วงที่เป็น Cache (ประมาณ 1.7 ns) และค่อย ๆ เพิ่มขึ้นตามขนาดของ Buffer จนไปอยู่ที่ประมาณ 120–135 ns สำหรับ Buffer ขนาดใหญ่ครับ


ในส่วนของประสิทธิภาพการประมวลผล ผลการทดสอบจาก 7-Zip benchmark ทำคะแนนรวมแบบหลายแกน (Multi-core) ได้ประมาณ 11,100 คะแนนจากการทดสอบซ้ำหลายครั้ง และทำคะแนนแบบแกนเดียว (Single-threaded) ได้ประมาณ 3,121 คะแนน ซึ่งแสดงให้เห็นถึงประสิทธิภาพในการบีบอัดและคลายบีบอัดข้อมูลที่เสถียรและคงเส้นคงวาดี


สำหรับการทดสอบด้านการเข้ารหัส (Cryptographic tests) ผลลัพธ์จาก OpenSSL นั้นออกมาดีและสม่ำเสมอในทุกแกน  โดยมีค่า Throughput ของ AES-128-CBC อยู่ที่เกือบ 1.88 GB/s ส่วน AES-192-CBC อยู่ที่ประมาณ 1.57 GB/s และ AES-256-CBC อยู่ที่ประมาณ 1.35 GB/s เมื่อทดสอบกับ Block size ขนาดใหญ่ ผลลัพธ์ทั้งหมดนี้ยืนยันประสิทธิภาพในภาพรวมที่ชัดเจน ทั้งในเรื่องพฤติกรรมของหน่วยประมวลผลกลางที่เสถียร, แบนด์วิดท์ของหน่วยความจำที่ดี, การเพิ่มขึ้นของความหน่วงต่าง ๆ เป็นไปตามที่คาดการณ์ได้ รวมถึงประสิทธิภาพการคำนวณเลขจำนวนเต็มและการเข้ารหัสที่น่าเชื่อถือ


สรุปโดยรวมแล้ว ผลการทดสอบด้วย sbc-bench แสดงให้เห็นว่าตัวเครื่องมีประสิทธิภาพที่เสถียรดี ไม่ว่าจะเป็นการทำงานของหน่วยประมวลผลกลาง, แบนด์วิดท์หน่วยความจำ, การหน่วยงาน และประสิทธิภาพด้านการคำนวณและการเข้ารหัสที่ดีครับ

การทดสอบความเร็วในการอ่าน-เขียนไฟล์ด้วย iozone

ผมได้ทดสอบประสิทธิภาพของระบบไฟล์โดยใช้เครื่องมือ iozone เพื่อวัดประสิทธิภาพการรับ-ส่งข้อมูลของหน่วยเก็บข้อมูลครับ โดยการทดสอบนี้ถูกตั้งค่าให้ใช้ไฟล์ขนาด 512 MB และกำหนดขนาด Record ไว้ที่ 1 MB และ 16 MB ซึ่งผลลัพธ์ที่ได้มีรายละเอียดดังนี้ครับ


ประสิทธิภาพการอ่านแบบลำดับ (Sequential Read) ให้ผลลัพธ์ที่สม่ำเสมอทั้งสองขนาด โดยวัดความเร็วได้ประมาณ 320–337 MB/s ส่วนผลการอ่านซ้ำ (Re-read) และการอ่านแบบสุ่ม (Random Read) ก็อยู่ในช่วงความเร็วใกล้เคียงกัน ซึ่งบ่งบอกถึงความเร็วในการอ่านที่เสถียรภายใต้การเข้าถึงข้อมูลซ้ำ ๆ  สำหรับประสิทธิภาพการเขียนแบบลำดับ (Sequential Write) ทำความเร็วได้ประมาณ 100–111 MB/s ทั้งสองขนาดเช่นเดียวกับความเร็วในการเขียนแบบสุ่ม (Random Write) ที่ให้ค่าใกล้เคียงกันครับ โดยรวมแล้ว ผลการทดสอบนี้ชี้ให้เห็นว่าอุปกรณ์มีแบนด์วิดท์ในการอ่านที่สูงและสม่ำเสมอ ส่วนประสิทธิภาพในการเขียนนั้นอยู่ในระดับปานกลางและให้ผลที่คงเส้นคงวาเมื่อทดสอบผ่าน Direct I/O ครับ

การทดสอบประสิทธิภาพด้วย Geekbench 6.5

ถัดมาผมได้ติดตั้งและรัน Geekbench 6.5.0 โดยระบบทำคะแนน Single-core ได้ 865 คะแนน และ Multi-core ได้ 1,982 คะแนน ซึ่งสะท้อนถึงประสิทธิภาพโดยรวมของหน่วยประมวลผลกลางได้เป็นอย่างดี โดยสามารถดูผลการทดสอบฉบับเต็มได้ที่ลิงก์ผลทดสอบ Geekbench นี้ครับ

ในการทดสอบแบบ Single-core นั้น พบว่าคะแนนส่วนใหญ่จะเกาะกลุ่มอยู่ในช่วงกลาง 800 โดยงานที่โดดเด่นเป็นพิเศษคือ Clang compilation,  Horizon Detection,  Navigation และ PDF Rendering ในขณะที่งานทั่วไปอย่างการประมวลผลข้อความ (Text Processing), HDR, การเปิดเบราว์เซอร์ HTML5, Ray Tracing และ Structure from Motion นั้นทำคะแนนได้ใกล้เคียงค่าเฉลี่ย ส่วนงานด้าน Computer Vision ที่ต้องใช้พลังประมวลผลสูงอย่างการ Object Detection และ Object Remover จะมีคะแนนที่ต่ำกว่าอย่างเห็นได้ชัด

ผลการทดสอบ Geekbench แบบ Single-Core
ผลการทดสอบ Geekbench แบบ Single-Core

สำหรับผลการทดสอบแบบ Multi-core แสดงให้เห็นถึงความสามารถในการกระจายงานไปยังทุกแกนของหน่วยประมวลผลกลางภายใต้ภาระการทำงานแบบขนาน โดยทำคะแนนได้สูงในด้าน Asset Compression, Ray Tracing และการคอมไพล์ด้วย Clang ซึ่งบ่งบอกถึงการดึงพลังการทำงานหลายแกนมาใช้ในงานประมวลผลหนัก ๆ ได้อย่างมีประสิทธิภาพ นอกจากนี้ งานด้านอื่นอย่าง PDF Rendering, Structure from Motion, Navigation, Background Blur, Photo Library และ HDR ก็มีประสิทธิภาพเพิ่มจากการประมวลผลแบบขนานเช่นกัน ในขณะที่งานด้านการประมวลผลข้อความ, HTML5 และ Object Detection มีการเพิ่มขึ้นของประสิทธิภาพในระดับปานกลางครับ

ผลการทดสอบ Geekbench แบบ Multi-Core
ผลการทดสอบ Geekbench แบบ Multi-Core

สรุปในภาพรวม คะแนน Multi-core สูงกว่า Single-core ประมาณ 2.3 เท่า ซึ่งแสดงให้เห็นถึงประโยชน์ของการกระจายการประมวลผลไปยังหลาย ๆ แกนได้อย่างชัดเจน งานที่เคยทำได้ในช่วง 800 คะแนนในโหมดแกนเดียวมักจะพุ่งไปเกิน 2,000 คะแนน และบางส่วนเกิร 3,000 คะแนนได้ในโหมดหลายแกน ส่วนงานอย่าง Object Detection และ Object Remover แม้จะทำคะแนนได้ดีขึ้น แต่ก็ยังค่อนข้างต่ำเนื่องจากข้อจำกัดด้านประสิทธิภาพต่อแกนครับ

การทดสอบประสิทธิภาพเว็บเบราว์เซอร์ด้วย Speedometer 3.1

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

ในส่วนของ Chromium ผลการทดสอบ Speedometer ให้คะแนนเฉลี่ยอยู่ที่ประมาณ 4.16 โดยผลลัพธ์ในการรันแต่ละครั้งเกาะกลุ่มกันดี และมีค่าเฉลี่ยเวลา Geometric Mean อยู่ที่ประมาณ 240 ms ซึ่งบ่งบอกถึงประสิทธิภาพการทำงานของเบราว์เซอร์ที่เสถียร โดยเวลาส่วนใหญ่จะถูกใช้ไปกับการประมวลผล JavaScript และ DOM เช่น การอัปเดต UI ที่ซับซ้อนและการเรนเดอร์กราฟ

ทางด้าน Firefox ก็ให้ผลลัพธ์ที่ใกล้เคียงกันมาก และมีความแตกต่างของค่าระหว่างการทดสอบในแต่ละรอบต่ำเช่นกัน โดยมีค่าเฉลี่ยเวลาในการประมวลผลอยู่ในช่วง ~240 ms ซึ่งเท่ากับ Chromium ครับ

คะแนน Speedometer 3.1 บน Firefox
คะแนน Speedometer 3.1 บน Firefox
คะแนน Speedometer 3.1 บน Chromium
คะแนน Speedometer 3.1 บน Chromium

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

การทดสอบประสิทธิภาพการเล่นวิดีโอ YouTube

ถัดมาผมได้ทดสอบการเล่นวิดีโอบน YouTube โดยเปิดวิดีโอความละเอียด 4K ในโหมดเต็มหน้าจอ บนหน้าจอความละเอียด 4K (3840 × 2160) พร้อมเปิดฟีเจอร์ “Stats for Nerds” เพื่อดูข้อมูลเพิ่มเติม ผมพบว่าการเล่นวิดีโอทำได้ลื่นไหลและเสถียรมากตั้งแต่ความละเอียด 144p ไปจนถึง 1080p โดยไม่พบอาการสะดุดหรือเฟรมเรตตก (Dropped frames) เลย อย่างไรก็ตาม ระบบไม่ได้แสดงตัวเลือกความละเอียดที่สูงกว่า 1080p ให้เลือกใช้งานครับ

ที่ความละเอียดระดับต่ำ (144p–360p) การเล่นวิดีโอใช้บิตเรตไม่สูงนักและรักษาความยาวของบัฟเฟอร์ (Buffer health) ได้ดีโดยคงอยู่ที่ประมาณ 120 วินาทีเสมอ ซึ่งแสดงให้เห็นว่าระบบสามารถถอดรหัสวิดีโอได้ดีและมีแบนด์วิดท์เครือข่ายเหลือแม้จะขยายภาพให้เต็มจอ 4K ก็ตาม

เมื่อขยับมาที่ความละเอียดสูงขึ้น (480p–1080p) การเล่นวิดีโอก็ยังคงเสถียรบนหน้าจอเดิม โดยความเร็วในการเชื่อมต่อปรับตัวขึ้นอย่างเหมาะสมกับขนาดภาพ และบัฟเฟอร์ก็อยู่ในระดับที่น่าพอใจ คือ ช่วง 30 ถึง 120 วินาทีครับ แม้จะเล่นที่ความละเอียด 1080p/30fps ระบบนี้ก็ยังคงรักษาความลื่นไหลไว้ได้โดยไม่มีเฟรมเรตตก ผลการทดสอบนี้แสดงให้เห็นว่าตัวเครื่องมีความสามารถในการถอดรหัสวิดีโอและการจัดการบัฟเฟอร์ที่ดีในทุกระดับความละเอียดมาตรฐานของ YouTube ครับ

YouTube Stats for Nerds ที่ความละเอียด 144p
YouTube Stats for Nerds ที่ความละเอียด 144p
YouTube Stats for Nerds ที่ความละเอียด 240p
YouTube Stats for Nerds ที่ความละเอียด 240p
YouTube Stats for Nerds ที่ความละเอียด 360p
YouTube Stats for Nerds ที่ความละเอียด 360p
YouTube Stats for Nerds ที่ความละเอียด 480p
YouTube Stats for Nerds ที่ความละเอียด 480p
YouTube Stats for Nerds ที่ความละเอียด 720p
YouTube Stats for Nerds ที่ความละเอียด 720p
YouTube Stats for Nerds ที่ความละเอียด 1080p
YouTube Stats for Nerds ที่ความละเอียด 1080p

การทดสอบประสิทธิภาพการเรนเดอร์ 3D บนเว็บเบราว์เซอร์ด้วย WebGL

ถัดมาผมได้ประเมินประสิทธิภาพการเรนเดอร์ 3D ผ่านเว็บเบราว์เซอร์ โดยใช้ตัวอย่าง WebGL Aquarium และรันบนเบราว์เซอร์ Chromium ครับ

ผมกำหนดขนาดหน้าจอการเรนเดอร์ (Canvas) ไว้ที่ 1024 × 1024 ผลลัพธ์แสดงให้เห็นถึงการลดทอนของประสิทธิภาพที่ชัดเจนและคาดการณ์ได้ตามความซับซ้อนของฉากที่เพิ่มขึ้นครับ ในช่วงที่มีจำนวนวัตถุไม่มาก ประสิทธิภาพถือว่ายอดเยี่ยมดี โดยสามารถรันได้ที่ 60 fps อย่างเสถียรเมื่อมีปลา 1–100 ตัว และยังคงใกล้เคียงระดับ Real-time ที่ประมาณ 54 fps เมื่อเพิ่มเป็น 500 ตัว ส่วนที่ 1,000 ตัวก็ยังให้ความลื่นไหลที่ยอมรับได้ที่ประมาณ 48 fps ครับ อย่างไรก็ตาม เมื่อจำนวนปลาเพิ่มขึ้นมากกว่านี้ เฟรมเรตก็เริ่มตกลงอย่างต่อเนื่อง โดยเหลือประมาณ 29 fps ที่ปลา 5,000 ตัว ซึ่งเริ่มรู้สึกได้ว่าแอนิเมชันไม่ลื่นไหลเท่าที่ควร

อัตราการแสดงผล WebGL Aquarium ที่ปลาจำนวน 1, 100, 500, 1000, และ 5000 ตัว
อัตราการแสดงผล WebGL Aquarium ที่ปลาจำนวน 1, 100, 500, 1000, และ 5000 ตัว

เมื่อเจอกับ Workload ที่หนักขึ้น ข้อจำกัดของ GPU ก็เริ่มปรากฏชัดเจนขึ้น โดยที่ปลา 10,000 ตัวนั้น อัตราการแสดงผลตกลงมาอยู่ที่ประมาณ 16 fps และลดลงเหลือเพียง 11 fps เมื่อมีปลา 15,000 ตัว และแสดงผลได้เพียง 8 fps ที่ปลา 20,000 ตัวครับ ส่วนในฉากที่มีความหนาแน่นสูงมากระดับ 25,000–30,000 ตัว ประสิทธิภาพจะลดลงเหลือเพียง 6–7 fps ซึ่งต่ำเกินการเรนเดอร์แบบ Real-time ไปแล้ว  โดยรวมแล้ว ผลการทดสอบนี้ชี้ให้เห็นว่า Chromium สามารถรับมือกับงาน WebGL ระดับปานกลางได้อย่างลื่นไหล แต่ประสิทธิภาพจะลดลงอย่างรวดเร็วเมื่อมีการเรียกใช้งานการวาดภาพและการประมวลผลที่มากขึ้น ซึ่งอาจจะสะท้อนถึงอาการ GPU-bound มากกว่าที่จะเป็นปัญหาเรื่องความไม่เสถียรของตัวเบราว์เซอร์ครับ โดยกราฟสรุปด้านล่างนี้จะเปรียบเทียบเฟรมเรตในแต่ละสถานการณ์ให้เห็นภาพชัดเจนขึ้นครับ

อัตราการแสดงผล WebGL Aquarium ที่ปลาจำนวน 10000, 15000, 20000, 25000, และ 30000 ตัว
อัตราการแสดงผล WebGL Aquarium ที่ปลาจำนวน 10000, 15000, 20000, 25000, และ 30000 ตัว
เปรียบเทียบอัตราการแสดงผล WebGL Aquarium ที่จำนวนปลาต่าง ๆ กัน
เปรียบเทียบอัตราการแสดงผล WebGL Aquarium ที่จำนวนปลาต่าง ๆ กัน

การทดสอบตัวเร่งความเร็ว AI Hailo-8

reComputer Industrial R2135-12 ของผมมาพร้อมกับตัวเร่งความเร็ว AI Hailo-8 ที่ติดตั้งมาให้ในตัว โดยมีไลบรารีและแพ็กเกจที่จำเป็นทั้งหมดพร้อมใช้งานทันทีครับ ในการทดสอบ Hailo Raspberry Pi 5 examples นั้น ผมเพียงแค่ตั้งค่า Source โดยใช้สคริปต์จาก /mnt/hailo-rpi5-examples/setup_env.sh ซึ่งจะทำการเปิดใช้งาน Virtual Environment และกำหนดเส้นทาง (Paths) ที่จำเป็นสำหรับ Hailo-8 Runtime ให้โดยอัตโนมัติ เมื่อตั้งค่าสภาพแวดล้อมเสร็จ ระบบก็พร้อมที่จะรันแอปพลิเคชันตัวอย่างและ Workload ด้านการประมวลผล AI ได้ทันทีโดยไม่ต้องติดตั้งอะไรเพิ่มเติมครับ โดยสคริปต์ตัวอย่าง Python ทั้งหมดนั้นสร้างขึ้นบน GStreamer และ Pipeline ภายใน ซึ่งทำหน้าที่จัดการทั้งการสตรีมวิดีโอ, การประมวลผลวิดีโอ และการประมวลผล AI ไปพร้อมกัน

การเตรียมสภาพแวดล้อมเพื่อรัน Hailo-8
การเตรียมสภาพแวดล้อมเพื่อรัน Hailo-8

ในการทดสอบเบื้องต้น ผมเริ่มจากสคริปต์ simple_detection.py ซึ่งเป็นโปรแกรมตัวอย่างการตรวจหาวัตถุแบบเน้นลดภาระของ CPU ให้เหลือน้อยที่สุด โดยมีตัวเลือก Command Line ที่น่าสนใจอย่าง --input สำหรับเลือกแหล่งข้อมูล (เช่น ไฟล์วิดีโอหรือเว็บแคม USB) และ --show-fps เพื่อแสดงเฟรมเรตซ้อนทับบนวิดีโอครับ จากการตั้งค่าเริ่มต้น สคริปต์นี้รันบนไฟล์วิดีโอตัวอย่างโดยมีการจำกัดเฟรมเรตไว้ ซึ่งบนหน้าจอ Console จะแสดงรายละเอียดการตรวจจับ เช่น ค่าความเชื่อมั่น (Confidence score) ของวัตถุแต่ละชิ้น โดยรวมแล้วโปรแกรมตัวอย่างนี้ทำงานได้อย่างลื่นไหลที่ประมาณ 30 fps ภาพด้านล่างนี้คือผลลัพธ์จากการรันสคริปต์ simple_detection.py ครับ

รันตัวอย่างการตรวจหาวัตถุอย่างงาน
รันตัวอย่างการตรวจหาวัตถุอย่างงาน

ภาพถัดมาแสดงผลการทดสอบการตรวจหาวัตถุแบบเต็มรูปแบบ (Full detection) โดยใช้สคริปต์ detection.py ครับ

รันตัวอย่างการตรวจหาวัตถุเต็มรูปแบบ
รันตัวอย่างการตรวจหาวัตถุเต็มรูปแบบ

และนี่คือผลลัพธ์จากการรันสคริปต์ instance_segmentation.py เพื่อการแบ่งส่วนวัตถุ (Object segmentation) ซึ่งทำงานได้ตามความคาดหมาย โดยทำความเร็วได้ใกล้เคียงกันที่ 30 FPS ภายใต้การตั้งค่าเริ่มต้นครับ

รันตัวอย่างการแบ่งส่วนภาพ
รันตัวอย่างการแบ่งส่วนภาพ

ส่วนสคริปต์ depth_estimation.py นั้นทำงานบนโมเดลการประมาณค่าความลึก SCDepthV3 ซึ่งให้ผลลัพธ์ออกมาดีมากเช่นกัน

รันตัวอย่างการประมาณค่าความลึก
รันตัวอย่างการประมาณค่าความลึก

โปรแกรมตัวอย่างตัวสุดท้ายที่ผมทดสอบคือการประมาณท่าทาง (Pose estimation) ซึ่งระบบจะส่งคืนจุดสำคัญ (Keypoints) ทั้งหมด 17 จุด (HAILO_LANDMARKS) สำหรับแต่ละคนที่ตรวจหาพบในภาพ เช่น จมูก, ตา, หู, ไหล่, ข้อศอก, ข้อมือ, สะโพก, เข่า และข้อเท้า ซึ่งสคริปต์ตัวอย่างนี้ก็ทำงานได้ถูกต้องตามปกติ และให้ผลการประมาณท่าทางที่เสถียรและแม่นยำค่อนข้างดี

รันตัวอย่างการประมาณค่าท่าทาง
รันตัวอย่างการประมาณค่าท่าทาง

การสาธิตการใช้งาน – การตรวจจับตำแหน่งบุคคลในพื้นที่ที่กำหนด

ในส่วนนี้ ผมจะแสดงศักยภาพด้าน AI ของ reComputer Industrial R2135-12 ผ่านโปรเจกต์ตัวอย่างของผมเอง โดยใช้การตรวจหาบุคคลในวิดีโอสตรีม และจะคำนวณหาตำแหน่งของแต่ละคนในภาพออกมาเป็นพิกัดในโลกจริง (Real-world coordinates) จากนั้นจะส่งพิกัดนี้ไปแสดงผลบนแผงไฟ LED Matrix ขนาด 8×16 ที่ควบคุมด้วยบอร์ด ESP32 ซึ่งทำหน้าที่เสมือน “แผนผังไฟ LED” เพื่อระบุตำแหน่งว่ามีคนอยู่จุดไหนบ้างในพื้นที่นั้นครับ

อย่างไรก็ตามในการตั้งค่าใช้งานจริงและการประมาณตำแหน่งที่แม่นยำนั้นมักจำเป็นต้องมีหน้าจอ GUI เพื่อให้ผู้ใช้คลิกเลือกจุดอ้างอิงบนเฟรมวิดีโอเพื่อทำการสอบเทียบ (Calibration) แต่เนื่องจากข้อจำกัดด้านเวลาของการรีวิวนี้ ผมจึงข้ามขั้นตอนนี้ไปโดยใช้การรันสคริปต์ผ่านวิดีโอที่บันทึกไว้แทน เพื่อมุ่งเน้นไปที่การโชว์พลังการประมวลผลและขีดความสามารถด้าน AI ของตัวเครื่อง reComputer เป็นหลักครับ

ทฤษฎีพื้นฐาน

ภาพด้านล่างอธิบายถึงแนวคิดการแปลงพิกัดโลกจริงจากจุดบนภาพ (Image points) สรุปคร่าว ๆ ได้ว่า ถ้าหากเราทราบระนาบพื้น (Ground plane) และทราบพิกัดโลกจริงของจุดอ้างอิงอย่างน้อย 2 จุด (ในภาพคือ A และ B) เราจะสามารถระบุตำแหน่งที่สอดคล้องกันบนภาพได้ (คือจุด a และ b) ข้อมูลเหล่านี้ประกอบกับพารามิเตอร์ของกล้อง (Camera frustum – สามเหลี่ยมสีเหลือง) จะช่วยให้เราประมาณตำแหน่งและทิศทางการวางตัวของกล้องได้

เมื่อทราบค่าทุกอย่างข้างต้นแล้ว หากมีวัตถุใด ๆ อยู่บนพื้นและเราทราบตำแหน่งของมันบนภาพ (เช่น จุด c) เราก็จะสามารถหาพิกัดโลกจริงของวัตถุนั้นได้โดยการลากเส้นรังสีย้อนกลับ (Back-projecting) เช่น การลากเส้นสีส้มจากจุดศูนย์กลางกล้องผ่านจุด c บนภาพ เพื่อหาจุดที่รังสีนี้ไปตัดกับระนาบพื้นดินนั่นเอง

แนวคิดการคำนวณการฉายรังสีย้อนกลับ
แนวคิดการคำนวณการฉายรังสีย้อนกลับ

ภาพถัดมาแสดงตัวอย่างการประมาณพิกัดของฐานขาตั้งกล้องโดยอนุมาณว่าผมทราบค่าพารามิเตอร์ภายในของกล้อง (Intrinsics) ร่วมกับจุดควบคุมบนพื้น 4 จุด (A–D) โดยในการตั้งค่าตัวอย่างนี้ ผมกำหนดให้จุดกำเนิด (0, 0) อยู่ที่กึ่งกลางระหว่างจุด A–D โดยที่กระเบื้องปูพื้นแต่ละแผ่นมีขนาด 60 × 60 ซม.  ตำแหน่งจริงของขาตั้งกล้องจะอยู่ที่ประมาณ (0, −60, 0) ในพิกัดโลก และผลจากการประมาณค่าได้ออกมาเป็น (0.3, -59.4, 0.0) ซึ่งถือว่าใกล้เคียงกับตำแหน่งจริงมากครับ สิ่งนี้พิสูจน์ให้เห็นว่าวิธีการกู้คืนพิกัด (Coordinate recovery) แบบง่าย ๆ นี้มีความแม่นยำเพียงพอสำหรับการใช้งานครับ

ตัวอย่างการคำนวณพิกัดของขาตั้งกล้อง
ตัวอย่างการคำนวณพิกัดของขาตั้งกล้อง

การจัดตั้งฉากและการประมาณท่าทางของกล้อง

ขั้นตอนแรก ผมได้ทำการสอบเทียบกล้อง (Calibration) โดยใช้ชุดภาพกระดานหมากรุก (Chessboard images) ร่วมกับฟังก์ชันของ OpenCV เพื่อหาค่าพารามิเตอร์ภายใน (Intrinsic parameters: fx,fy,cx,cy) และค่าสัมประสิทธิ์การบิดเบี้ยวของเลนส์ (Distortion coefficients: k1,k2,p1,p2,k3) ครับ


จากนั้นผมได้จัดเตรียมฉากทดสอบตามภาพด้านล่าง โดยใช้เทปสีน้ำเงินทำเครื่องหมายเป็นจุดกำเนิดอ้างอิง (0, 0) กำหนดให้แกน +X วางตัวตามแนวทิศทาง A–B และแกน +Y ตามแนวทิศทาง A–D หลังจากนั้นผมได้บันทึกวิดีโอและดึงเฟรมออกมาหนึ่งภาพเพื่อระบุจุดอ้างอิงต่างๆ สำหรับใช้คำนวณหาค่าการแปลงพิกัดของกล้อง (Camera transformation) โดยใช้ฟังก์ชัน Python ที่พัฒนาจากวิธี Perspective-n-Point (PnP) ของ OpenCV ครับ

การเตรียมสถานที่ทดลอง
การเตรียมสถานที่ทดลอง
พิกัดอ้างอิงบนระนาบพื้น
พิกัดอ้างอิงบนระนาบพื้น

ด้านล่างนี้คือฟังก์ชันที่ผมใช้ในการประมาณท่าทางของกล้อง


และนี่คือข้อมูลเมทริกซ์การหมุน (Rotation) และเวกเตอร์การแปลพิกัด (Translation) ของกล้องที่ประมาณค่าได้


ในขณะที่เมทริกซ์การหมุนนั้นค่อนข้างทำความเข้าใจได้ค่อนข้างยาก แต่ Translation vector (เวกเตอร์การเลื่อนพิกัด) นั้นเข้าใจง่ายกว่ามากครับ ซึ่งในตัวอย่างด้านบนนี้ข้อมูลระบุว่ากล้องติดตั้งอยู่ห่างจากจุด A ออกไปประมาณ 2.1 เมตร ตามแนวแกน X ทางลบ (ห่างออกมาทางด้านล่างของภาพ), ห่างจากแกน Y ประมาณ 1 เมตร และอยู่ที่ความสูงประมาณ 1.2 เมตรจากพื้นดินเมื่อเทียบกับจุด A ครับ

การประมาณตำแหน่งที่เท้า

ขั้นตอนถัดมาคือการหาตำแหน่งพิกัด 3 มิติบริเวณเท้าของบุคคลที่ตรวจพบครับ เพื่อความง่ายผมจึงเลือกใช้สคริปต์ตัวอย่าง pose_estimation.py ของ Hailo-8 ในการตรวจจับจุดสำคัญบนร่างกาย (Body landmarks) แล้วดึงพิกัด 2 มิติของ ข้อเท้าซ้ายและข้อเท้าขวาออกมา จากนั้นแปลงพิกัดบนภาพเหล่านี้ให้เป็นพิกัดโลกจริงด้วยเทคนิคการลากเส้นรังสีย้อนกลับ (Back-projection) ตามที่อธิบายไว้ก่อนหน้านี้ครับ

โดยผมได้ใช้ฟังก์ชัน 2 ส่วนนี้ในการสร้างรังสีจากจุดศูนย์กลางกล้อง และคำนวณหาจุดตัดบนระนาบพื้นดินครับ


จากการใช้วิธีนี้กับข้อมูลที่มี ทำให้ผมคำนวณค่าพิกัดเท้าได้ประมาณ (202.0, 44.2, 0.0) ในพิกัดอ้างอิงโลกจริง ซึ่งถือว่าเป็นผลลัพธ์ที่สมเหตุสมผลมากครับ เพราะขณะนั้นผมยืนอยู่ใกล้กับจุด B มาก ซึ่งมีพิกัดที่ทราบค่าอยู่แล้วคือ (240, 0)

ผลการคำนวณค่าพิกัดเท้า
ผลการคำนวณค่าพิกัดเท้า

การแสดงผลตำแหน่งเท้าที่ตรวจพบด้วย ESP32 และ LED Matrix

ขั้นตอนสุดท้ายคือการสร้างภาพจำลองตำแหน่งของบุคคลที่ตรวจพบ โดยใช้แผงไฟ LED Matrix ขนาด 8×8 จำนวน 2 ตัวต่อกันครับ ผมคำนวณหาตำแหน่งแถวและคอลัมน์ของ LED โดยการทำปรับสัดส่วนเชิงเส้น (Linear scaling) จากพิกัดโลกที่ประมาณค่าได้ (ครอบคลุมพื้นที่ประมาณ 480.0 × 240.0 ซม.) ให้สอดคล้องกับตาราง LED ขนาด 8×16 และหลังจากนั้นข้อมูลตำแหน่งเหล่านี้จะถูกส่งไปยังบอร์ด ESP32 ผ่านการเชื่อมต่อ USB ครับ

สำหรับการสาธิตนี้ ผมเลือกใช้บอร์ด KidBright 32 V1.3 ซึ่งมีชิปควบคุม LED Matrix รุ่น HT16K33 มาให้บนบอร์ดเรียบร้อยแล้ว ทำให้สะดวกและรวดเร็วมากในการสร้างชิ้นงานต้นแบบ ภาพด้านล่างแสดงการทำงานของระบบแบบเวลาจริง โดยรับสัญญาณจาก Web Cam ผ่านสาย USB ซึ่งไฟ LED ที่สว่างขึ้นจะเปลี่ยนตำแหน่งไปตามการเดินของบุคคลในฉากครับ  ผู้อ่านสามารถรับชมวิดีโอสาธิตการทำงานของโปรเจกต์นี้ได้จากลิงค์ที่ส่วนบนสุดของบทความรีวิว หรือรับชมโดยตรงผ่านลิงก์ YouTube นี้ได้ครับ

ตัวอย่างการแสดงตำแหน่งบน LED Matrix
ตัวอย่างการแสดงตำแหน่งบน LED Matrix

อุณหภูมิและการกระจายความร้อน

การทดสอบสุดท้ายผมคือทดสอบพฤติกรรมด้านอุณหภูมิและการกระจายความร้อนของตัวเครื่องครับ โดยผมเริ่มจากการเปิดเครื่องทิ้งไว้ในสภาวะว่างงาน (Idle) เป็นเวลาประมาณ 5 นาที แล้วจึงบันทึกภาพด้วยกล้องถ่ายภาพความร้อน FLIR E4

รันอุปกรณ์แบบโหลดเต็ม
รันอุปกรณ์แบบโหลดเต็ม

ในสภาวะ Idle นั้น อุณหภูมิพื้นผิวภายนอกของอุปกรณ์มีค่าเฉลี่ยอยู่ที่ประมาณ 33 °C โดยขณะที่ทดสอบนั้นอุณหภูมิห้องมีค่าประมาณ 25 °C ดังที่แสดงในภาพด้านล่างครับ

อุณหภูมิในสถานะ Idle
อุณหภูมิในสถานะ Idle

จากนั้นผมได้ทดสอบตัวเครื่องภายใต้ภาระงานโหลดเต็มที่ โดยผมรัน WebGL Aquarium ที่จำนวนปลา 30,000 ตัว พร้อมกับเปิดวิดีโอ YouTube ที่ความละเอียด 1080p ในโหมดหน้าต่าง และรันแอปพลิเคชันตัวอย่าง AI ไปพร้อม ๆ กัน โดยผมปล่อยให้ระบบทำงานในสภาวะนี้เป็นเวลาประมาณ 10 นาทีก่อนจะบันทึกภาพความร้อนอีกครั้งครับ

อุณหภูมิในสถานะโหลดเต็ม
อุณหภูมิในสถานะโหลดเต็ม

จากภาพถ่ายความร้อน จะเห็นได้ว่าตัวเครื่องมีรูปแบบการกระจายความร้อนภายอกที่สม่ำเสมอและจัดการได้ดีในทุกสถานะการทำงานครับ โดยเมื่อต้องรับงานหนักขึ้นอุณหภูมิที่พื้นผิวของตัวเคสจะขึ้นไปสูงสุดที่ประมาณ 35–37 °C โดยบริเวณที่มีอุณหภูมิสูงที่สุดจะพบอยู่ที่แผงด้านบนและพื้นผิวด้านข้างส่วนบน ซึ่งค่อนข้างสอดคล้องกับแหล่งกำเนิดความร้อนภายใน ซึ่งน่าจะเป็น Compute Module 5 และตัวเร่งความเร็ว AI  โดยอุปกรณ์ที่เกี่ยวข้องภายในสามารถถ่ายเทความร้อนมายังเคสอะลูมิเนียมที่ทำหน้าที่เป็นแผงระบายความร้อนได้ดี จุดที่น่าสนใจอีกอย่างคือผมไม่พบจุดที่ร้อนจัดสะสมเฉพาะจุด (Hot spots) เลย ซึ่งสะท้อนถึงการออกแบบการเชื่อมต่อทางความร้อนภายในและการกระจายความร้อนที่มีประสิทธิภาพครับ

อุณหภูมิในสถานะโหลดเต็มจากมุมต่าง ๆ
อุณหภูมิในสถานะโหลดเต็มจากมุมต่าง ๆ

สรุป

reComputer Industrial R2135-12 มีตัวเลือกการเชื่อมต่อที่ครบครัน ทั้งแบบใช้สายและไร้สาย จุดที่ผมประทับใจมากคือการติดตั้งระบบปฏิบัติการและซอฟต์แวร์มาให้พร้อมใช้งาน รวมถึงตัวอย่างการใช้งานร่วมกับตัวเร่งความเร็ว AI อย่าง Hailo-8 ซึ่งช่วยประหยัดเวลาในการตั้งค่าไปได้มากครับ ในด้านประสิทธิภาพ AI นั้นทำความเร็วเฉลี่ยได้ที่ประมาณ 30 FPS ซึ่งถือว่าเกินพอสำหรับการนำไปประยุกต์ใช้ในงานวิจัยหลาย ๆ ด้านของผม

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

สุดท้ายนี้ ขอขอบคุณทาง Seeed Studio ที่ส่ง reComputer Industrial R2135-12 มาให้เราได้รีวิวครับ สำหรับผู้ที่สนใจ สามารถสั่งซื้อได้จาก Seeed Studio ในราคา $279.00 (~8,700฿)  สำหรับรุ่น RAM 8 GB / eMMC 32 GB (26 TOPS) ที่นำมารีวิวนี้ หรือจะเลือกเป็นรุ่น RAM 16 GB ในราคา $339 (~10,500฿) ก็ได้เช่นกันครับ นอกจากนี้ในอนาคต Raspberry Pi CM5 Edge AI PC รุ่นนี้อาจจะมีวางจำหน่ายเพิ่มเติมผ่านทางร้านค้าใน Amazon และ AliExpress ของบริษัท

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