เรียกใช้โค้ด Machine Learning ในโหนด IoT ในตัวเพื่อระบุวัตถุอย่างง่ายดาย
Contributed By DigiKey's North American Editors
2020-10-08
เครือข่าย Internet of Things (IoT) ที่ทำงานในสิ่งแวดล้อมแบบไดนามิกกำลังจะเข้าสู่การตรวจจับวัตถุ เพื่อนำการระบุวัตถุที่มองเห็นได้ไปใช้งานในแบบต่าง ๆ เช่น การรักษาความปลอดภัย การเฝ้าสังเกตการณ์สภาพแวดล้อม ความปลอดภัย และ IoT ในภาคอุตสาหกรรม (IIoT) เนื่องจากการระบุวัตถุนั้นปรับเปลี่ยนได้และเกี่ยวข้องกับการใช้โมเดล Machine Learning (ML) จึงเป็นเรื่องที่ซับซ้อนซึ่งอาจเป็นเรื่องยากที่จะเรียนรู้ตั้งแต่ระดับเริ่มต้นและนำไปใช้อย่างมีประสิทธิภาพ
ความยากเกิดขึ้นจากความจริงที่ว่าโมเดล ML นั้นจะดีได้พอ ๆ ชุดข้อมูลเพียงเท่านั้น และเมื่อได้ข้อมูลที่ถูกต้องแล้ว ระบบต้องได้รับการฝึกฝนอย่างเหมาะสม เพื่อให้ตอบสนองและใช้งานได้จริง
บทความนี้จะแสดงให้นักพัฒนาเห็นวิธีการนำโมเดล ML ของ TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์จาก Google ไปใช้กับไมโครคอนโทรลเลอร์ของ Microchip Technology และจะอธิบายวิธีการนำชุดข้อมูลเรียนรู้ของการคัดแยกรูปภาพและการตรวจจับวัตถุไปใช้กับ TensorFlow Lite เพื่อตรวจจับวัตถุได้อย่างง่ายดายโดยการปรับแต่งโค้ดเพียงเล็กน้อย
จากนั้นจะแนะนำชุดเริ่มต้น TensorFlow Lite ML จาก Adafruit Industries ที่สามารถทำให้นักพัฒนาคุ้นเคยด้วยพื้นฐานของ ML
ML สำหรับระบบวิชั่นฝังตัว
ในความหมายกว้าง ๆ แล้ว ML ทำให้คอมพิวเตอร์หรือระบบฝังตัวมีความสามารถในการจดจำในรูปแบบที่คล้ายคลึงกับมนุษย์ จากมุมมองความรู้สึกของมนุษย์นั้นจะหมายถึงการใช้เซ็นเซอร์ เช่น ไมโครโฟนและกล้อง เพื่อเลียนแบบการรับรู้ทางประสาทสัมผัสของมนุษย์ในด้านการได้ยินและการมองเห็น แม้ว่าเซนเซอร์จะง่ายต่อการใช้งานในการจับข้อมูลภาพและเสียง แต่เมื่อเป็นข้อมูลดิจิตอลและนำมาจัดเก็บ จะต้องประมวลผลข้อมูลเพื่อให้ตรงกับรูปแบบการจัดเก็บในหน่วยความจำว่าเป็นเสียงหรือวัตถุ ตัวอย่างความท้าทาย เช่น ข้อมูลภาพวัตถุที่มองเห็นที่กล้องจับจะไม่ตรงกับข้อมูลที่เก็บไว้ในหน่วยความจำวัตถุ การใช้งาน ML ที่ต้องระบุวัตถุที่มองเห็นได้นั้นจะต้องประมวลผลข้อมูล เพื่อจับคู่รูปแบบข้อมูลที่กล้องจับได้กับรูปแบบที่เก็บไว้ในหน่วยความจำอย่างแม่นยำและมีประสิทธิภาพ
มีไลบรารี่หรือเอนจินที่ใช้ในการตับคู่ข้อมูลทีไ่ด้มาโดยใช้เซ็นเซอร์ TensorFlow เป็นไลบรารี่โค้ดแบบโอเพนซอร์ซที่ใช้ในการจับคู่รูปแบบข้อมูล ไลบรารี่โค้ดใน TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์ออกแบบมาเฉพาะให้เรียกใช้งานบนไมโครคอนโทลเลอร์ และเป็นผลให้ความต้องการหน่วยความจำและ CPU ลดลงเพื่อการทำงานบนฮาร์ดแวร์ที่จำกัดมากขึ้น โดยเฉพาะต้องใช้งานไมโครคอนโทรลเลอร์ 32 บิตและใช้หน่วยความจำแฟลชน้อยกว่า 25 กิโลไบต์ (Kbyte)
อย่างไรก็ตามแม้ว่า TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์เป็นเอนจิน ML ระบบก็ยังคงต้องการชุดข้อมูลเรียนรู้ของรูปแบบในการระบุวัตถุ ไม่ว่าเอนจิน ML จะดีมากเพียงใด ระบบนั้นก็ดีได้พอ ๆ กับชุดข้อมูลเรียนรู้เท่านั้น และสำหรับวัตถุที่มองเห็นในชุดข้อมูลเรียนรู้อาจจะต้องใช้ข้อมูลหลายกิกะไบต์สำหรับโมเดลใหญ่ ๆ ข้อมูลที่มากขึ้นต้องการประสิทธิภาพของ CPU ที่สูงขึ้นเพื่อหาข้อมูลให้ตรงกันอย่างแม่นยำและรวดเร็ว ซึ่งเป็นเหตุผลที่โดยปกติแล้วการใช้งานประเภทนี้จะทำงานบนคอมพิวเตอร์ที่มีประสิทธิภาพหรือแล็ปท็อประดับไฮเอนด์
สำหรับแอปพลิเคชันในระบบฝังตัว ควรจัดเก็บแบบจำลองเฉพาะเหล่านั้นไว้ในชุดข้อมูลเรียนรู้ที่จำเป็นกับแอปพลิเคชันเท่านั้น หากระบบจะต้องจดจำเครื่องมือและฮาร์ดแวร์ ก็สามารถนำโมเดลผลไม้และของเล่นออกไปได้ โดยจะเป็นการลดขนาดชุดข้อมูลเรียนรู้ ซึ่งจะช่วยลดความต้องการหน่วยความจำของระบบฝังตัว และปรับปรุงประสิทธิภาพพร้อมกับลดต้นทุนลง
ไมโครคอนโทรลเลอร์ ML
เพื่อเรียกใช้ TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์ Microchip Technology กำลังกำหนดเป้าหมาย Machine Learning ในไมโครคอนโทรลเลอร์ด้วยไมโครคอนโทรลเลอร์ Arm® Cortex®-M4F-based ATSAMD51J19A-AFT (รูปที่ 1) ไมโครคอนโทรลเลอร์ดังกล่าวมีหน่วยความจำแฟลช 512 กิโลไบต์พร้อมหน่วยความจำ SRAM 192 กิโลไบต์และทำงานที่ 120 เมกะเฮิร์ต (MHz) ATSAMD51J19A-AFT เป็นส่วนหนึ่งของไมโครคอนโทลเลอร์ ML ตระกูล ATSAMD51 ของ Microchip Technology ซึ่งเป็นไปตามมาตรฐานคุณภาพยานยนต์ AEC-Q100 เกรด 1 และทำงานได้ในอุณหภูมิ -40°C ถึง +125°C ทำให้สามารถใช้งานได้กับสภาพแวดล้อม IoT และ IIoT ที่เลวร้ายที่สุด และเป็นไมโครคอนโทรลเลอร์แรงดันไฟฟ้าต่ำและทำงานโดยใช้แรงดันไฟฟ้าตั้งแต่ 1.71 ถึง 3.63 เมื่อทำงานที่ 120 MHz
รูปที่ 1: ATSAMD51J19A จากแกน Arm Cortex-M4F ทำงานที่ 120 MHz ไมโครคอนโทรลเลอร์แบบเต็มรูปแบบที่มีความจำแฟรช 512 กิโลไบต์และ SRAM 192 กิโลไบต์ (แหล่งที่มาภาพ: Microchip Technology)
ตัวเลือกเครือข่าย ATSAMD51J19A ประกอบด้วย CAN 2.0B สำหรับเครือข่ายอุตสาหกรรมและ 10/100 Ethernet สำหรับเครือข่ายใช้สายส่วนใหญ่ สิ่งนี้ช่วยให้ไมโครคอนโทรลเลอร์ทำงานบนเครือข่าย IoT ที่หลากหลาย อินเทอร์เฟซ USB 2.0 รองรับทั้งโหมดการทำงานของโฮสต์และอุปกรณ์และสามารถใช้สำหรับการดีบักอุปกรณ์หรือระบบเครือข่าย
คำสั่งรวม 4 Kbyte และแคชข้อมูลช่วยเพิ่มประสิทธิภาพเมื่อประมวลผลโค้ด ML หน่วยจุดลอยตัว (FPU) ยังมีประโยชน์สำหรับการปรับปรุงประสิทธิภาพของโค้ด ML รวมถึงการประมวลผลข้อมูลดิบจากเซ็นเซอร์
การเก็บชุดข้อมูลเรียนรู้
ATSAMD51J19A มีอินเทอร์เฟซ QSPI สำหรับโปรแกรมหรือหน่วยความจำข้อมูลภายนอก ซึ่งเป็นประโยชน์สำหรับการจัดเก็บข้อมูลเพิ่มเติมของชุดข้อมูลเรียนรู้ที่เกินความจุของหน่วยความจำแฟลชบนชิป นอกจากนั้น QSPI รองรับ EXecute in Place (XiP) สำหรับการขยายหน่วยความจำโปรแกรมความเร็วสูงภายนอก
ATSAMD51J19A ยังมีตัวควบคุมโฮสต์การ์ดหน่วยความจำ SD/MMC (SDHC) ซึ่งมีประโยชน์มากสำหรับแอปพลิเคชัน ML เนื่องจากช่วยสลับหน่วยความจำรหัส ML และชุดข้อมูลเรียนรู้ได้อย่างง่ายดาย ในขณะที่เอนจิน TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์ สามารถทำงานในหน่วยความจำแฟลช 512 กิโลไบต์บน ATSAMD51J19A ชุดข้อมูลการเรียนรู้สามารถอัปเกรดและปรับปรุงได้เป็นประจำ ชุดข้อมูลเรียนรู้สามารถเก็บในหน่วยความจำแฟรชภายนอก QSPI หรือ QSPI EEPROM และสามารถอัปเกรดทางไกลผ่านเครือข่ายโดยขึ้นอยู่กับการตั้งค่าเครือข่าย อย่างไรก็ตาม สำหรับบางระบบการสลับการ์ดหน่วยความจำกับการ์ดอื่นที่มีชุดข้อมูลเรียนรู้ที่ดีกว่าด้วยตัวนักพัฒนาเองอาจสะดวกกว่า ในการกำหนดค่านี้นักพัฒนาจำเป็นต้องตัดสินใจว่าระบบควรได้รับการออกแบบมาเพื่อ hot-swap การ์ดหน่วยความจำหรือจะต้องปิดโหนด IoT หากจำเป็น
หากโหนด IoT มีพื้นที่จำกัดอย่างมาก แทนที่จะใช้หน่วยความจำภายนอก จะเป็นประโยชน์มากกว่าหากบันทึกแอปพลิเคชันในหน่วยความจำไมโครคอนโทรลเลอร์ให้มากที่สุด ATSAMD51J20A-AFT ของ Microchip Technology มีความคล้ายกับ ATSAMD51J19A และมีพินที่เข้ากันได้ยกเว้นมีหน่วยความจำแฟลช 1 เมกะไบต์และ SRAM 256 กิกะไบต์ ซึ่งให้พื้นที่เก็บข้อมูลบนชิปมากขึ้นสำหรับชุดข้อมูลเรียนรู้
การพัฒนาด้วย TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์
Adafruit Industries รองรับการพัฒนาบน ATSAMD51J19A ด้วย ชุดพัฒนา 4317 TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์ (รูปที่ 2) บอร์ดมีความจำแฟรช QSPI 2 เมกะไบต์ที่สามารถใช้เพื่อจัดเก็บชุดข้อมูลเรียนรู้ ชุดคิทมาพร้อมกับช่องต่อไมโครโฟนสำหรับการจดจำเสียง ML สามารถใช้จอสี LCD TFT 160 x 128 ขนาด 1.8 นิ้วในการพัฒนาและดีบัก จอแสดงผลยังสามารถใช้สำหรับการสาธิตการจดจำเสียง เมื่อใช้ TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์กับชุดข้อมูลเรียนรู้จดจำเสียง เนื่องจากแอปพลิเคชันจดจำคำต่าง ๆ ได้ คำดังกล่าวก็จะแสดงบนหน้าจอได้
ชุดคิดของ Adafruit Industries มีปุ่มกดแปดปุ่ม เซนเซอร์วัดความเร่ง 3 แกน เซ็นเซอร์แสง ลำโพงขนาดเล็ก และแบตเตอรี่ลีเธียม-โพลิเมอร์ มีพอร์ต USB 2.0 บน ATSAMD51J19A ที่ต่อออกไปสำหรับการชาร์จแบตเตอรี่ การดีบัก และการเขียนโปรแกรม
รูปภาพที่ 2: ชุดพัฒนา Adafruit Industries 4317 TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์มาพร้อมกับจอสี LCD TFT สำหรับการพัฒนาและแสดงผลการทำงาน ML (แหล่งที่มาภาพ: Adafruit Industries)
ชุดคิท Adafruit มาพร้อมกับ TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์เวอร์ชันล่าสุด สามารถใช้พอร์ต USB โหลดชุดข้อมูลเรียนรู้เข้าไปในหน่วยความจำแฟรช 521 กิโลไบต์ของไมโครคอนโทรลเลอร์ ATSAMD51J19A หรือโหลดเข้าไปในหน่วยความจำ QSPI ภายนอกขนาด 2 เมกะไบต์
สำหรับการประเมินการจดจำภาพ สามารถโหลดชุดเรียนรู้การตรวจจับวัตถุ TensorFlow ลงในบอร์ดพัฒนาได้ บอร์ดพัฒนามีพอร์ตสำหรับเชื่อมต่อกับพอร์ตขนานและพอร์ตอนุกรมของไมโครคอนโทรลเลอร์ ซึ่งหลายพอร์ตสามารถใช้เชื่อมต่อกับกล้องภายนอกได้ ด้วยชุดการเรียนรู้การตรวจจับวัตถุที่โหลดบนไมโครคอนโทรลเลอร์ ทำให้สามารถใช้ LCD เพื่อแสดงผลลัพธ์การประมวลผลการตรวจจับวัตถุ ML ได้ ดังนั้นหากจดจำกล้วย จอแสดงผล TFT อาจแสดงวัตถุที่จดจำได้ พร้อมกับเปอร์เซ็นต์ความมั่นใจ ตัวอย่างผลลัพธ์อาจแสดงเป็น:
กล้วย: 95%
ประแจ: 12%
แว่น: 8%
หวี: 2%
สำหรับการพัฒนาแอปพลิเคชันการตรวจจับวัตถุ IoT สามารถเร่งการพัฒนาและช่วยวินิจฉัยผลการตรวจจับที่ไม่ถูกต้อง
บทสรุป
ML เป็นส่วนขยายที่ต้องใช้ทักษะเฉพาะทาง เพื่อพัฒนาเครื่องยนต์และโมเดลไมโครคอนโทรลเลอร์ตั้งแต่ระดับเริ่มต้นและนำไปใช้อย่างมีประสิทธิภาพได้ในท้ายที่สุด อย่างไรก็ตามการใช้ไลบรารีโค้ดที่มีอยู่ เช่น TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์บนไมโครคอนโทรลเลอร์หรือบอร์ดพัฒนาที่มีต้นทุนต่ำและมีประสิทธิภาพสูงจะช่วยประหยัดเวลาและค่าใช้จ่าย ส่งผลให้ระบบ ML ประสิทธิภาพสูงโดยสามารถใช้ตรวจจับวัตถุในโหนด IoT ได้อย่างรวดเร็ว เชื่อถือได้ และมีประสิทธิภาพ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ TensorFlow และ ML ไปที่ maker.io และดูโปรเจ็คเหล่านี้:
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.


