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

ต่อไปเรามาดูกันว่าในการที่เราจะเริ่มสร้าง AI เราจะเริ่มจากทำอะไรก่อน โดยผมจะแบ่งเป็นขั้นตอนดังนี้

  • Problem กำหนดปัญหา
  • Collect Data เก็บข้อมูล
  • Data Preprocessing เตรียมข้อมูลสำหรับการ Trainning เช่น การทำ Labeling Data (กรณีเป็น Supervise Learning), การจัดการกับข้อมูลที่ไม่ถูกต้อง (Outlier หรือ Null)
  • Model Selection เลือกโมเดลหรืออัลกอริทึมที่จะใช้
  • Trainning & Optimize ให้โมเดลเรียนรู้จากข้อมูลและปรับปรุงประสิทธิภาพ
  • Deploy ติดตั้งเพื่อนำไปใช้งานจริง

ต่อไปเรามาลงรายละเอียดกันว่าในแต่ล่ะหัวข้อหมายถึงอะไรบ้างครับ

Problem

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

Collect Data

หลังจากผ่านการเสนอไอเดียแล้ว เราก็จะเริ่มทำงานด้วยการเก็บข้อมูล อาจจะเป็นการติดตั้ง Sensor ต่างๆ เช่น อุณหภูมิ, ความดัน, ความชื้น เป็นต้น ถ้าเป็นในส่วนของงาน Computer Vision เช่น การทำ Object Detection ส่วนนี้จะต้องไปติดกล้อง เพื่อใช้ในการตรวจดูพื้นที่การทำงาน และทำการเก็บภาพหน้างานเพื่อใช้เป็นข้อมูล

Data Preprocessing

ในส่วนนี้เป็นการเตรียมข้อมูล Dataset เพื่อที่จะนำไปใช้ในการ Trainning Model โดยเราจะให้โมเดลเรียนรู้จากข้อมูล Dataset ที่เรามีอยู่ ต้องขออธิบายก่อนว่าการทำ AI มีอยู่หลายแบบ ในส่วนนี้ผมขอพูดถึงงานด้าน Computer Vision คือการทำ Object Detection หรือการหาวัตถุจากในรูปภาพหรือวิดิโอ ซึ่งส่วนใหญ่ AI แบบนี้จะใช้การเรียนรู้แบบ supervise learning คือ การเรียนรู้แบบมีผู้สอน ยกตัวอย่างเช่น ในการทำ Object Detection เราต้องตีกรอบ Object ในรูปภาพเพื่อบอกให้โมเดลรู้ว่าอะไรคือ Object ที่อยู่ในรูปภาพ เป็นเหมือนการที่เราสอนให้โมเดลมันเรียนรู้ และวิธีการแบบนี้จะเรียกว่า Data Labeling ซึ่งโปรแกรมที่ใช้ในการทำที่อยากจะแนะนำ ก็จะมี LabelImg และ Label Studio ค้นหาจาก Keyword นี้ได้เลยครับ ดังนั้น เมื่อเราเก็บข้อมูลมาแล้ว จากนั้นทำ Data Labeling เสร็จ เราจะเรียกข้อมูลชุดนี้ว่า Dataset

Model Selection

ในส่วนนี้เราสามารถเลือกได้ว่าจะใช้โมเดลแบบไหนหรืออัลกอริทึมอะไร ซึ่งโดยส่วนใหญ่งานของผมจะเป็นการทำ Object Detection ดังนั้นผมจะใช้ตระกูล Yolo เป็นหลัก เพราะว่า Yolo จะเป็นการทำ Object Detection และค่อนข้างเด่นในเรื่องความเร็วการประมวลผลกว่าแบบอื่นๆ โดยเฉพาะในส่วนของตระกูล Yolo เองก็แตกกิ่งก้านสาขาออกมาเป็นหลายเวอชั่นมากมายจนใช้ตามไม่ทันเลยครับ โดยส่วนตัวเคยใช้มาตั้งแต่ Yolov4, YoloX, YoloR จนปัจจุบันนี้ใช้อยู่ที่ Yolov8 ครับ

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

Trainning & Optimize

ขั้นตอนนี้เป็นการนำโมเดลที่เราเลือกมาสร้างและ Trainning เพื่อให้โมเดลเรียนรู้ข้อมูลจาก Dataset ที่เราเตรียมไว้ หลังจาก Trainning เสร็จ เราจะได้โมเดลเพื่อนำไปใช้งานจริง ซึ่งโดยส่วนใหญ่ผมจะไม่ได้ใช้ Notebook หรือ PC ไปรันประมวลผลซักเท่าไหร่ ซึ่งในโลกของความเป็นจริงจากที่ได้พบเจอมา คือ เราต้องรันประมวลผลที่ Edge Device เพราะค่อนข้างจะดีในแง่ของการประหยัดพลังงาน พื้นที่การใช้งานและต้นทุนค่าใช้จ่ายต่างๆ ดังนั้น สิ่งสำคัญคือการ Optimize โมเดลให้สามารถใช้งานได้กับตัว Edge และการประมวลให้เร็วที่สุดเท่าที่จะทำได้

Deploy

การ Deploy คือการติดตั้งในส่วนของโปรแกรมและรันการใช้งาน ในการใช้งานจริงส่วนตัวของผมจะรันที่ Edge Device เป็นหลัก ตามที่ได้กล่าวไปแล้ว ดังนั้น อุปกรณ์ที่ผมใช้อยู่ก็คือ บอร์ด Jetson Nano โดยอุปกรณ์นี้สามารถรันโมเดลโดยเรียกใช้ GPU ในการประมวลผลได้ ซึ่งข้อดีของการรันด้วย GPU คือจะเร็วกว่าการรันด้วย CPU

จากที่อธิบายมาทั้งหมดขอสรุปสิ่งที่ผมคิดว่าสำคัญที่สุดในการทำ AI คือ การทำ Dataset ซึ่งเป็นส่วนที่ใช้เวลามากที่สุดและค่อนข้างสำคัญเลยเพราะต้องมีการออกแบบ Dataset ให้สอดคล้องกับสิ่งที่เราต้องการจะหาผลลัพธ์ และเมื่อเราได้ Dataset แล้ว เราสามารถนำไปสร้างโมเดลด้วยอัลกอริทึมอะไรก็ได้และสามารถนำ Dataset มาเพิ่มข้อมูลเพื่อใช้ Trainning ซ้ำในการเพิ่มความแม่นยำของโมเดล และการทำ Optimize ระบบให้มีความเร็วและกิน Resource ให้น้อยที่สุด ก็ถือว่าสำคัญเช่นเดียวกัน สุดท้ายนี้ก็ขออวยพรให้กับผู้สร้าง AI ทุกท่านนะครับ สู้ๆครับ 🙂

1