Flame Detection System in Line Robot Welding

22p11c0018_Ton
Super AI Engineer
Published in
3 min readJan 31, 2021

ก่อนอื่นต้องขอแนะนำตัวก่อนนะครับ ผมชื่อ ต้น รหัส 22p11c0018 เป็นผู้เข้าแข่งขัน รายการ super ai engineer ซึ่งโจทย์ที่ได้รับมาคือ ให้หา Solution หรือ อธิบายทางด้านเทคนิค ที่เกี่ยวข้องกับ AI

นั่งคิดอยู่นานเลยครับว่าจะทำอะไรดี เพราะตัวผมเองนั้นมาทางสายออกแบบเครื่องจักรและหุ่นยนต์ คลุกคลีอยู่กับโรงงานมาตลอด หลังจากพยายามคิดอยู่นาน ในที่สุดก็คิดออก ซึ่ง idea ที่ผมจะมาเล่าให้เพื่อนๆ ได้ฟังในวันนี้ จะเป็นระบบตรวจจับเปลวไฟที่เกิดขึ้นใน line การผลิตที่ใช้หุ่นยนต์เชื่อมครับ

ภาพแสดง robot welding +flame detection using ai

ก่อนอื่นเรามาดูในส่วนของปัญหากันนะครับ ว่าทำไมเราถึงต้องใช้ AI มาช่วย และปัญหาคืออะไร ?

ปัญหาที่เรามักพบเจอ ในกระบวนการผลิตที่ทำให้เกิดประกายไฟ เช่น งานเชื่อม งานเจียร์ งานขัด หรือ งานที่ก่อให้เกิดความร้อน คือ ปัญหาเพลิงไหม้ ซึ่งก่อให้เกิดความเสียหายมากมายทั้งต่อชีวิตและทรัพย์สิน

ในระบบการตรวจจับเพลิงไหม้ทั่วไป มักจะใช้การตรวจจับ ควันไฟ และ ความร้อน ซึ่ง ใน line การผลิตที่ใช้หุ่นยนต์เชื่อมนั้น มีทั้งควันและความร้อน ถ้าเรานำระบบตรวจจับเพลิงไหม้ทั่วไปใช้งาน ระบบก็จะรวน สับสน ไม่รู้ว่าเป็นไฟไหม้จริงๆ หรือ เป็นไฟและควันที่เกิดจากกระบวนการเชื่อมกันแน่?

หลังจากที่เรา รู้ถึงปัญหาแล้ว ทีนี้ เราก็จะมาดูวิธีการแก้ไขกันนะครับ ซึ่งในส่วนนี้เราจะประยุกต์ใช้ deep learning ทำ object detection เพื่อตรวจจับเพลิงไหม้ครับ

ในส่วนของ object detection เราจะใช้ yolo โดย dataset ที่เราใช้ เราจะใช้เป็นภาพเปลวไฟแบบต่างๆ ซึ่งตัวของ model ที่เรา train จะสามารถแยกได้ระหว่าง ไฟทั่วไป กับประกายไฟ ที่เกิดจากงานเชื่อม

yolo algorithm

ขั้นตอนการทำ

ขั้นตอนที่ 1. รวบรวมข้อมูลของเปลวไฟมาก่อนครับ ของผมรวบรวมมาได้ทั้งหมด 2,000 ภาพ และ ทำการ augmentation +ใส่ noise เข้าไปอีกประมาณ 500 ภาพ

ภาพแสดงลักษณะของเปลวไฟ

ขั้นตอนที่ 2. ทำการ label ภาพ โดยการ label เราจะต้องทำให้อยู่ใน format ของ yolo ตามภาพ ด้านล่างครับ

ภาพแสดง format ของ yolo

คำอธิบายภาพนะครับ

หมายเลข 1 คือ class number ซึ่งโปรเจคเรามี 1 class เราก็ใส่ตรงนี้เป็น 0 ได้ครับ

หมายเลข 2 คือ ตำแหน่งกึ่งกลางของ object ในแนวแกน x

หมายเลข 3 คือ ตำแหน่งกึ่งกลางของ object ในแนวแกน y

หมายเลข 4 คือ ความกว้างของ object

หมายเลข 5 คือ ความยาวของ object

ส่วน tool ที่เราใช้ label นั้น เราจะใช้ Labelimg ครับ เพื่อนๆสามารถเข้าไป download และติดตั้งได้ตาม link นี้ครับ

tool for label picture

ขั้นตอนที่ 3. การ training data … หลังจากที่เราได้เตรียมข้อมูล และ label ภาพเรียบร้อยแล้ว ทีนี้ก็มาถึงขั้นตอนที่สำคัญนั่นก็คือ ขั้นตอนในการ training ข้อมูลเพื่อสร้าง weight ซึ่งเราจะนำ weight ที่ได้ไปใช้งานต่อ ในขั้นตอนการทำ real time object detect flame ครับ

ก่อนอื่นให้เพื่อนๆ clone project ตาม link ด้านล่าง

มาไว้ที่ computer ก่อนนะครับ หลังจากนั้นให้ทำตามคำแนะนำในหัวข้อชื่อ Requirement , How to use on the command line และ How to train (to detect your custom objects)

ขั้นตอนที่ 4. หลังจากที่เราได้ weight มาแล้ว ขั้นตอนต่อไป คือการนำมาใช้งานจริงครับ โดยจะทำ program สำหรับทำ real time frame detection ในส่วนของ class args: จะมีอยู่ 3 file ที่สำคัญ คือ 1. config .cfg จะเก็บค่าการตั้งค่าและโครงสร้างของ yolo 2. weights เป็น file ที่เราได้จาก train ตามข้อ 3 และ 3.classes จะเป็นชื่อของ classes ของเราครับ ซึ่ง project นี้เรามี 1 classes เราตั้งชื่อว่า fire ครับ

ภาพแสดงตัวอย่าง code สำหรับตรวจจับ flame detection

ขั้นตอนที่ 5 เป็นขั้นตอนสุดท้าย คือ การทดสอบและวัดผล เพื่อนๆสามารถดูตัวอย่างการทดสอบได้ตาม link ด้านล่างเลยครับ

ข้อเสนอแนะ

  1. ควรเพิ่ม data และ ทำ augmentation มุมมองของเปลวไฟหลายๆมุม เพื่อแก้ไขปัญหา overfit
  2. ตอนนี้มีปัญหาเล็กน้อยเรื่องของเงาสะท้อน ควรทำระบบป้องกันไม่ให้เงาสะท้อนเข้ามาหาหน้าเลนส์ของกล้อง จะช่วยทำให้ระบบนิ่งขึ้นได้ครับ

Ref.

--

--