สวัสดีครับ วันนี้ผมจะมาสอนเพื่อนๆลองสร้างตัว Machine Learning บนบอร์ด KB32-FT กัน
โดยเราจะลองทำตัวอย่างการแบ่งแยกคำ (Word Classification) ที่จะทำการสอนให้บอร์ดรู้จักกับคำพูดต่างๆ เช่น หนึ่ง, สอง, สาม, เปิด และปิด ซึ่งเราจะทำการสอน AI แบบที่เรียกว่า Supervised learning
โดยบทความนี้จะถูกแบ่งออกเป็น 3 Part โดย
Part 1 จะเป็น Learning Phase : pre-processing, สร้าง datasets
Part 2 จะเป็น Learning Phase : Create Model, Train Model, Convert model
Part 3 จะเป็น Inference Phase
Part 2 Learning Phase : Create Model, Train Model, Convert model
VDO ประกอบ
หลังจากที่เราได้ทำการเก็บ datasets มาเรียบร้อยแล้วนะครับ ก่อนอื่นเลยเนี่ยเราก็จะทำการแยกข้อมูลของแต่ละคำออกจากกัน เพื่อเตรียมข้อมูลสำหรับการ training นะครับ ซึ่งผมจะแยกเป็นไฟล์ csv ตามชนิดของคำ

ซึ่งภายในไฟล์ csv จะเก็บข้อมูลองค์ประกอบของคำที่เราพูดแบ่งตามบรรทัด ในแต่ละบรรทัดจะหมายถึง แอมพลิจูด ขององค์ประกอบความถี่ย่อยของเสียงนั้นๆ
เช่นรูปด้านล่างเป็น dataset ของเสียง หนึ่ง
บรรทัดแรกคือองค์ประกอบความถี่ของเสียง หนึ่ง หนึ่งคำ คอลัมน์แรกเป็นแอมพลิจูดที่ความถี่ 17.85 *1 Hz คอลัมน์ที่สองเป็นแอมพลิจูดที่ความถี่ 17.85 *2 Hz เป็นต้น

เมื่อทำการเตรียมชุดข้อมูลของแต่ละคำเรียบร้อยแล้วก็ให้ทำการสร้างเป็นไฟล์ zip เพื่อให้ง่ายต่อการอัพโหลดขึ้นไปใช้งานบน google Colab

จากนั้นเปิด link Demo_KB32_tinyML.ipynb และกด Connect เพื่อเริ่มใช้งาน Session

ตัว code ส่วนแรกจะเป็นการเตรียม library และฟังก์ชันที่ใช้งานในโปรแกรม รวมถึงทำการ unzip และโหลด datasets

Code ส่วนที่ 2 จะเป็นการแบ่ง dataset ออกเป็น 2 ส่วนสำหรับ train และ validate จากนั้นทำการสร้าง neuron network พร้อมทั้งกำหนดค่า hyperparameter ต่างๆ ส่วนสุดท้ายเป็นการสั่ง train จำนวน 100 Epoch แล้วทำการ save model แต่หากเพื่อนๆยังไม่พอใจในผลลัพท์ก็สามารถเพิ่มจำนวน Epoch หรือปรับแต่ง hyperparameter ดูได้ครับ

หลังจากที่ได้โมเดลเรียบร้อยแล้ว ใน Code ส่วนสุดท้ายนี้ก็จะเป็นการเรียกฟังก์ชันสำหรับแปลงตัว TensorFlow model ให้เป็น TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์ ที่จะให้เราสามารถนำไปร้านในตัว KB32-FT ได้ครับ

เท่านี้เราก็สามารถนำตัว AI ที่มีความสามารถแยกเสียงต่างๆที่เราสอนเข้าไป ทำงานในไมโครคอนโทรลเลอร์ได้
ผู้ที่สนใจบอร์ด KB32-FT สามารถดูข้อมูล หรือสั่งซื้อได้ที่ LINK
ขอบคุณครับ