OpenMV
โล่
เลนส์
วิทยาการหุ่นยนต์
หนังสือ
วีดีโอ
ดาวน์โหลด
เอกสาร
ฟอรั่ม
OpenMV.io
Githubเมื่อเดือนเมษายนปีที่แล้ว ผลิตภัณฑ์ใหม่ของเรา OpenMV4 H7 Plus ได้เปิดตัวแล้ว วันนี้ผมจะมาแนะนำฟังก์ชันใหม่ของ OpenMV4 H7 Plus นั่นคือ การใช้เว็บไซต์ออนไลน์ EdgeImpulse เพื่อฝึกฝนโครงข่ายประสาทเทียมด้วยตนเองสำหรับการจำแนกประเภทและการจดจำ
ในบทเรียนนี้ คุณจะใช้การเรียนรู้ของเครื่องเพื่อสร้างระบบจดจำที่สามารถระบุได้ว่าบุคคลสวมหน้ากากอนามัยหรือไม่ผ่านกล้องอัจฉริยะ OpenMV4 H7 Plus ซึ่งเป็นการจำแนกภาพ

EdgeImpulse เป็นเว็บไซต์ที่ให้บริการฝึกอบรมโมเดลโครงข่ายประสาทเทียมออนไลน์สำหรับอุปกรณ์ฝังตัว ซึ่งเป็นพันธมิตรของ OpenMV ของเรา และทั้งคู่ยังเป็นพันธมิตรอย่างเป็นทางการของ STMicroelectronics ปัจจุบัน EdgeImpulse เปิดให้บริการฟรีสำหรับผู้ใช้ OpenMV ของเรา ผู้ใช้ OpenMV สามารถใช้ EdgeImpulse ฝึกอบรมโมเดลโครงข่ายประสาทเทียมออนไลน์ที่เหมาะกับ OpenMV ได้ฟรี
การเพิ่มโครงข่ายประสาทเทียมให้กับอุปกรณ์ฝังตัว OpenMV สามารถทำให้สามารถแยกแยะระหว่างผู้ลักลอบล่าสัตว์และช้าง ดำเนินการควบคุมคุณภาพในสายการผลิตโรงงาน และทำให้รถโมเดลควบคุมระยะไกลขับเคลื่อนได้ด้วยตนเอง เป็นต้น
ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีการรวบรวมภาพเพื่อสร้างชุดข้อมูลคุณภาพสูง วิธีการใช้การเรียนรู้แบบถ่ายโอนเพื่อฝึกโครงข่ายประสาทเทียม และวิธีการนำระบบไปใช้งานบน OpenMV
นอกจากนี้เรายังมีวิดีโอสอนที่สามารถค้นหาในเว็บไซต์ทางการเพื่อดู "OpenMV4 Plus ฝึกอบรมโครงข่ายประสาทเทียมสำหรับการจดจำหน้ากาก
คุณสามารถดูเนื้อหาโครงการทั้งหมดได้ที่ลิงก์ต่อไปนี้ ซึ่งรวมถึงโค้ดและโมเดลทั้งหมด: https://book.openmv.cc/project/mask.html
การใช้ EdgeImpulse ฝึกอบรมโมเดลโครงข่ายประสาทเทียมออนไลน์สำหรับ OpenMV แบ่งออกเป็นสี่ขั้นตอนหลักดังนี้: การรวบรวมชุดข้อมูล การอัปโหลด การฝึกอบรม และการปรับใช้
01、การรวบรวมชุดข้อมูล
ในบทช่วยสอนนี้ เราจะสร้างโมเดลที่สามารถแยกแยะได้ว่าหน้าคนสวมหน้ากากอนามัยหรือไม่ แน่นอนว่าคุณสามารถเลือกที่จะจำแนกสิ่งของอื่นๆ ได้เช่นกัน เพื่อให้โมเดลการเรียนรู้ของเครื่องทำงานได้ คุณจำเป็นต้องรวบรวมภาพตัวอย่างจำนวนมากของใบหน้าที่สวมหน้ากากอนามัยและไม่สวมหน้ากากอนามัย ในระหว่างการฝึกฝน ภาพตัวอย่างเหล่านี้จะถูกใช้เพื่อฝึกให้โมเดลแยกแยะ
เราจำเป็นต้องใช้ OpenMV IDE เพื่อรวบรวมชุดข้อมูลของเรา ขั้นตอนการรวบรวมภาพมีดังนี้
สร้างสองหมวดหมู่:
เปิด "เครื่องมือ" ในแถบเมนูของ OpenMV IDE เลือก "ตัวแก้ไขชุดข้อมูล" คลิก "สร้างชุดข้อมูลใหม่" จากนั้นสร้างโฟลเดอร์ใหม่และเปิดขึ้นมา ในชุดข้อมูลให้สร้างโฟลเดอร์อีกสองโฟลเดอร์ ตั้งชื่อว่า mask (ใช้สำหรับเก็บภาพใบหน้าคนที่สวมหน้ากาก) และ face (ใช้สำหรับเก็บภาพใบหน้าคนที่ไม่สวมหน้ากาก)


ใช้ OpenMV ในการเก็บภาพ
ก่อนอื่นเราเชื่อมต่อ OpenMV คลิก "เชื่อมต่อ" ใน IDE คลิก "รัน" ใน Framebuffer จะเห็นภาพแบบเรียลไทม์จาก OpenMV คลิกปุ่มรูปภาพในแถบเมนูด้านซ้าย OpenMV จะบันทึกรูปภาพนี้โดยอัตโนมัติ นี่คือหนึ่งในข้อมูลในชุดข้อมูล
ก่อนอื่นเราต้องบันทึกใบหน้าของคนที่สวมหน้ากาก กดปุ่มถ่ายภาพที่ด้านล่างของ IDE จะถ่ายภาพหนึ่งรูป ซึ่งจะถูกตั้งชื่ออัตโนมัติว่า 00000 จากนั้นรูปถัดไปคือ 00001 และต่อๆไป
ใช้ OpenMV เก็บรวบรวมภาพใบหน้าของบุคคล 200 ภาพ โดยแบ่งเป็น 200 ภาพที่สวมหน้ากากอนามัย (ชาย 100 ภาพ หญิง 100 ภาพ) และ 200 ภาพที่ไม่สวมหน้ากากอนามัย (ชาย 100 ภาพ หญิง 100 ภาพ)


* หมายเหตุ: ต้องมั่นใจว่าถ่ายภาพจากมุมต่างๆ เพื่อให้มั่นใจถึงความหลากหลายในการฝึกฝนการเรียนรู้ของเรา
หากพบว่าภาพใดที่เก็บรวบรวมมาไม่สมบูรณ์ในระหว่างกระบวนการเก็บรวบรวม คุณสามารถคลิกขวาที่ภาพนั้นแล้วเลือกลบได้
02. อัปโหลด
หลังจากใช้ OpenMV เก็บภาพแล้ว คุณต้องลงทะเบียนบัญชีและเข้าสู่ระบบเว็บไซต์ EdgeImpulse (https://edgeimpulse.com/) เพื่อเริ่มอัปโหลดภาพ ขั้นตอนการอัปโหลดภาพมีดังนี้
สร้างโครงการใหม่บน EdgeImpulse คลิกที่ "keys" เลือก "API Key" และคัดลอก "API Key" ใช้ API Key เพื่อเชื่อมต่อ OpenMV IDE และ Edge Impulse

เลือก "Tools" ในแถบเมนูด้านบนของ OpenMV IDE -> "Data Editor" -> "Export" -> "Upload" -> "Upload via API Key" คัดลอก "API Key" แล้วอัปโหลด
ข้อมูลจะถูกแบ่งออกเป็นชุดฝึกอบรมและชุดทดสอบโดยอัตโนมัติเมื่ออัปโหลด เราเลือกอัตราส่วนเริ่มต้นเป็น "80% และ 20%" ได้เลย เราได้รวบรวมรูปภาพใบหน้ามากกว่า 400 รูป โดย 80% ของ Training Date หมายถึงการใช้ข้อมูล 80% ของคุณสำหรับการฝึกอบรมตามค่าเริ่มต้น และอีก 20% ที่เหลือใช้เป็นชุดทดสอบ


03. ชุดข้อมูลการฝึกอบรม
เมื่อชุดข้อมูลพร้อมแล้ว คุณสามารถฝึกชุดข้อมูลได้ในอินเทอร์เฟซเว็บไซต์ของ EdgeImpulse
* โมดูลการจัดการการตั้งค่า:
ขั้นแรกเลือก "Impulse Design" กำหนดค่ามอดูลประมวลผล:
* ตั้งค่าขนาดภาพเริ่มต้นเป็น "96 x 96
* เลือกโมดูล "ภาพ Images" หมายความว่าเรากำลังฝึกการจำแนกภาพ (คุณสามารถใช้ EdgeImpulse จำแนกเสียง วิดีโอ ฯลฯ ได้เช่นกัน)
* เลือก "การเรียนรู้แบบถ่ายโอน (ภาพ) Transfer Learning (Images)" ตั้งค่าโมเดลการเรียนรู้
เลือก "บันทึก Save impulse" หากแสดงว่า Successfully แสดงว่าการตั้งค่าสำเร็จแล้ว

* การประมวลผลภาพเบื้องต้น:
คลิกที่ "ภาพ Image" ในเมนูด้านซ้าย ตั้งค่ารูปแบบสีเป็น "RGB" แล้วคลิก "บันทึก

ต่อไปนี้เลือก "สร้างคุณลักษณะ (Generate features)" เพื่อเริ่มกระบวนการ ซึ่งจะทำการประมวลผลภาพล่วงหน้าสำหรับข้อมูลมากกว่า 400 รูปภาพ และด้านขวาจะแสดงภาพสามมิติของชุดข้อมูลทั้งหมด

การกำหนดค่าโมเดลการเรียนรู้แบบถ่ายโอน
คลิก "การเรียนรู้การถ่ายโอน (Transfer learning)" ในเมนูด้านซ้าย เลือกพารามิเตอร์ทั้งหมดตามค่าเริ่มต้น หรือปรับเปลี่ยนพารามิเตอร์ตามความต้องการ:
1. ตั้งค่า Number of training cycles เป็นค่าเริ่มต้นที่ 10
2. ตั้งค่าอัตราการเรียนรู้ (Learning rate) เป็น 0.0005
3. สามารถเลือกหรือไม่เลือก "การเพิ่มข้อมูล Data augmentation" ก็ได้
4. ตั้งค่าความเชื่อมั่นขั้นต่ำ Minimum confidence rating เป็นค่าเริ่มต้นที่ 0.8
คลิก "เริ่มการฝึกอบรม Start training" กระบวนการฝึกอบรมใช้เวลาประมาณ 4 ถึง 5 นาที
หลังจากฝึกโมเดลเสร็จแล้ว คุณสามารถตรวจสอบความแม่นยำ เมทริกซ์ความสับสน (confusion matrix) และประสิทธิภาพของอุปกรณ์ที่คาดหวังได้

* ทดสอบโมเดล:
หลังจากฝึกอบรมเสร็จสิ้น เราจะใช้ข้อมูลทดสอบเพื่อตรวจสอบโมเดล
เลือก "การทดสอบแบบจำลองModel testing" ติ๊กเครื่องหมายที่ช่องข้าง "ชื่อตัวอย่างSample name" แล้วคลิก "เลือกประเภทClassify selected" ความแม่นยำที่แสดงที่นี่สูงถึง 97% ซึ่งถือว่าหายากสำหรับแบบจำลองที่มีข้อมูลน้อยขนาดนี้

พบว่าภาพนี้ที่แสดงเป็นสีแดงนั้นไม่แน่ชัด คลิกที่จุดสามจุดทางด้านขวาของภาพนี้ เลือก "แสดงการจัดหมวดหมู่ Show classification" คุณจะเข้าสู่หน้าจอ "การจัดหมวดหมู่แบบเรียลไทม์" ซึ่งมีรายละเอียดเพิ่มเติมของไฟล์ หน้าจอนี้จะช่วยคุณระบุสาเหตุที่ภาพถูกจัดหมวดหมู่ผิดพลาด

หากข้อมูลอยู่นอกเหนือจากคลัสเตอร์ที่รู้จักทั้งหมด (สวมหน้ากาก/ไม่สวมหน้ากาก) นี่อาจเป็นข้อมูลที่ไม่ตรงกับหมวดหมู่ใดๆ ที่เคยเห็นมาก่อน อาจเป็นเพราะเส้นผมบังใบหน้าส่วนใหญ่
04. รันโมเดลบน OpenMV
หลังจากเสร็จสิ้นขั้นตอนการออกแบบการฝึกอบรม การฝึกอบรมโมเดล และการตรวจสอบโมเดลแล้ว คุณสามารถส่งออกโมเดลนี้ไปยัง OpenMV ของคุณได้ โดยเลือก "OpenMV" และเลือก "Build" เพื่อสร้าง ซึ่งจะสร้างไฟล์ขึ้นมา 3 ไฟล์โดยอัตโนมัติ:
trained.tflite โมเดลโครงข่ายประสาทเทียมที่ได้รับการฝึกฝน
* labels.txt หมวดหมู่สองประเภท (face และ mask)
* ei_image_classification.py คือโค้ดที่ต้องรันบน OpenMV

เชื่อมต่อ OpenMV IDE และบันทึกไฟล์ทั้ง 3 นี้ลงใน Flash ในตัวของ OpenMV เปิดไฟล์ ei_image_classification.py ใน OpenMV IDE คุณจะเห็นโค้ดที่เราสร้างขึ้นใน EdgeImpulse ก่อนหน้านี้ คลิก Run ผลลัพธ์การทำงานจะแสดงใน Serial Terminal


เอาล่ะ คุณได้เพิ่มความสามารถในการฝึกฝนโครงข่ายประสาทเทียมด้วยตัวเองให้กับ OpenMV สำเร็จแล้ว
คาดหวังผลงานของคุณ!

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

แจ้งเตือนทันทีเมื่อบุคคลข้ามเขตที่กำหนด ด้วย OpenMV ที่สร้าง “ความรู้สึกปลอดภัยของเขตแดน”
การระบุพฤติกรรมการล่วงล้ำของบุคคลหรืออุปกรณ์ผ่านเส้นเตือนเสมือน

“AI ผู้บังคับใช้กฎหมายเมือง” มาแล้ว ระบบตรวจจับการประกอบกิจการรุกล้ำทางสาธารณะอัตโนมัติที่พัฒนาขึ้นบนพื้นฐานของ OpenMV
การตรวจจับพฤติกรรมการประกอบกิจการรุกล้ำทางสาธารณะโดยอัตโนมัติ เพื่อสนับสนุนการบริหารจัดการเมืองในชีวิตประจำวัน

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

การปฏิบัติงานขณะมีไฟฟ้าโดยไม่สวมถุงมือฉนวนหรือไม่? OpenMV จะแจ้งเตือนทันที!
ตรวจจับโดยอัตโนมัติว่าผู้ปฏิบัติงานสวมถุงมือฉนวนหรือไม่ เพื่อช่วยสนับสนุนการปฏิบัติงานอย่างปลอดภัย

ใช้กล้องอัจฉริยะ OpenMV ในการตรวจจับข้อบกพร่องบนพื้นผิวแผ่นอลูมิเนียมแบบเรียลไทม์
การตรวจจับข้อบกพร่องบนพื้นผิวแผ่นอลูมิเนียม เช่น รอยขีดข่วนและรอยบุบ แบบออนไลน์ เพื่อช่วยในการควบคุมคุณภาพ