เรียกใช้โค้ด Machine Learning ในโหนด IoT ในตัวเพื่อระบุวัตถุอย่างง่ายดาย

By Bill Giovino

Contributed By DigiKey's North American Editors

เครือข่าย 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

แผงผังไมโครชิป ATSAMD51J19A จากแกน Arm Cortex-M4F (คลิกเพื่อขยาย)รูปที่ 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 ที่ต่อออกไปสำหรับการชาร์จแบตเตอรี่ การดีบัก และการเขียนโปรแกรม

รูปภาพ Adafruit Industries 4317 TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์รูปภาพที่ 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 และดูโปรเจ็คเหล่านี้:

DigiKey logo

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.

About this author

Image of Bill Giovino

Bill Giovino

Bill Giovino เป็นวิศวกรอิเล็กทรอนิกส์ที่จบการศึกษาระดับปริญญาตรีจากมหาวิทยาลัย Syracuse และเป็นหนึ่งในไม่กี่คนที่ประสบความสำเร็จจากวิศวกรออกแบบวิศวกรแอปพลิเคชันภาคสนามไปจนถึงการตลาดด้านเทคโนโลยี

เป็นเวลากว่า 25 ปีแล้วที่ Bill มีความสุขในการส่งเสริมเทคโนโลยีใหม่ต่อหน้าผู้ชมทั้งทางเทคนิคและทางเทคนิคสำหรับหลาย ๆ บริษัท รวมถึง STMicroelectronics, Intel และ Maxim Integrated ในขณะที่ STMicroelectronics Bill ช่วยเป็นหัวหอกในความสำเร็จในช่วงแรกของ บริษัท ในอุตสาหกรรมไมโครคอนโทรลเลอร์ ที่ Infineon Bill ได้จัดเตรียมการออกแบบไมโครคอนโทรลเลอร์ตัวแรกของบริษัทที่ชนะในยานยนต์ของสหรัฐอเมริกา ในฐานะที่ปรึกษาด้านการตลาดของ CPU Technologies ของบริษัท Bill ได้ช่วยให้หลายบริษัทเปลี่ยนผลิตภัณฑ์ที่มีประสิทธิภาพต่ำให้กลายเป็นเรื่องราวแห่งความสำเร็จ

Bill เป็นผู้ใช้ Internet of Things ในยุคแรก ๆ รวมถึงการวางสแต็ก TCP / IP เต็มรูปแบบครั้งแรกบนไมโครคอนโทรลเลอร์ Bill ทุ่มเทให้กับข้อความ “การขายผ่านการศึกษา” และความสำคัญที่เพิ่มขึ้นของการสื่อสารที่ชัดเจนและเป็นลายลักษณ์อักษรในการโปรโมตผลิตภัณฑ์ทางออนไลน์ เขาเป็นผู้ดูแล LinkedIn Semiconductor Sales & Marketing Group ยอดนิยมและพูด B2E ได้อย่างคล่องแคล่ว

About this publisher

DigiKey's North American Editors