in Computer, Diary

วิธีการ Label ภาพเพื่อสร้างฐานข้อมูลใช้ในงาน ML/AI ขึ้นมาเองอย่างง่าย

ปกติเวลาเราเรียนวิชาที่เกี่ยวกับปัญญาประดิษฐ์อย่างเช่น Machine Learning หรือ Deep Learning เราจะได้ยินคำว่า Dataset (หรือเรียกประมาณว่าเป็นฐานข้อมูล) กันบ่อย ๆ ในเปเปอร์งานวิจัย ในหนังสือ อินเตอร์เน็ต หรืออื่น ๆ แต่ฐานข้อมูลที่มีให้ก็มีรูปเยอะหรือน้อยก็ขึ้นกับผู้จัดทำฐานข้อมูลขึ้นมาเอง

ส่วนของเราเป็นงานเกี่ยวกับการจับภาพใบหน้า และการจับภาพการเคลื่อนไหวของศีรษะและลำคอ ซึ่งใช้ฐานข้อมูลของภาพที่เผยแพร่เยอะมากเลย ตั้งแต่ WIDERFACE, 300W_LP หรืออื่น ๆ แต่อย่างไรก็ดี มีอีกงานที่รุ่นน้องที่แล็ปทำอยู่ก็เป็นงานเกี่ยวกับการวินิจฉัยโรคผิวหนังซึ่งมีฐานข้อมูลสาธารณะไม่เยอะเท่าไรนัก แต่เรามีรูปภาพอยู่ในมือเยอะมากแล้วจะทำอย่างไรดี

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

โปรแกรมที่เราเคยใช้ก็เป็น Universal Data Tool โปรแกรมนี้เป็นโปแกรมฟรีที่สามารถ Labeling ภาพตามที่เราต้องการได้ แต่ตัวโปรแกรมนี้ทำได้มากกว่านั้นก็คือสามารถ Labeling ข้อความ เสียง วิดีโอได้อีกด้วย แถมใช้ง่ายอีก ว่าแต่เราจะเริ่มต้นอย่างไรดีล่ะ

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

ก่อนอื่น เปิดโปรแกรมก่อน จากนั้นเลือก New File

หน้าแรกของโปรแกรม

เข้ามาหน้าจอนี้แล้วเลือกชนิดของข้อมูลที่เราต้องการใช้งาน ถ้าต้องการทำแนวจับภาพใบหน้า หรือจับภาพวัตถุ ก็เลือก Object Segmentation แต่ถ้าต้องการแยกว่าภาพนี้เป็นภาพอะไรก็เลือก Image Classification ส่วนรายละเอียดอื่น ๆ ศึกษาจากเว็บได้ครับ

เลือกชนิดข้อมูลที่เราต้องการ Labeling

เมื่อเลือกชนิดข้อมูลแล้ว จากนั้นตั้งค่าก่อนว่าจะ Label ข้อมุลอย่างไร ในภาพ

  • บรรทัดแรกเราต้องการ Label ข้อมูลที่ใช้ในการจับภาพวัตถุแบบทั่ว ๆ ไปที่จับภาพเป็นสี่เหลี่ยม ก็เลือกที่ Bounding box
  • บรรทัดต่อมาที่บอกว่าต้องการให้ Label หลายจุดในรูปหรือไม่ เลือก Yes
  • บรรทัดที่สามจะถามว่า เราสามารถ Label ให้พื้นที่ที่เราวาดมี label หลายชนิดในพื้นที่เดียวกันหรือไม่ ตอบไม่
  • บรรทัดล่างสุดกำหนด Label ว่าจะให้บริเวณที่เรากำหนดเป็นอะไร อย่างเช่นข้อมูลจับภาพใบหน้าก็เป็น face/non-face เป็นต้น
ตั้งค่าการ Labeling

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

ตั้งค่าการนำเข้าภาพว่านำเข้าจากไหน

ต่อมาเราเลือกไอคอนแถวที่สามบริเวณด้านซ้าย จากนั้นเลือกรูปที่เราต้องการ Label ของเราเลือกรูปแรกก่อน

เลือกรูปที่ต้องการ Label

เลือกปุ๊บ เรากำหนดพื้นที่ที่เราต้องการเลือกบริเวณที่เป็นรูปสี่เหลี่ยมด้านซ้าย จากนั้นวาดกรอบรูปตามที่เราต้องการ และเลือกว่าพื้นที่ในภาพเป็นอะไร ตัวอย่างเช่นในภาพเป็น face

ตัวอย่างการ Label ภาพครับ

เมื่อ Label เสร็จเรียบร้อย เรากดไปที่ไอคอนแถวที่ห้าทางฝั่งซ้าย จากนั้นเลือกว่าจะดาวน์โหลดฐานข้อมูลเป็นแบบไหน เราเลบือกว่าเป็นแบบ CSV ที่เปิดบน Excel ได้ หรือเลือกเป็นไฟล์ JSON ก็ได้เช่นกัน แต่ถ้ายังไม่ต้องการส่งออกภาพ เราเลือก Save As ที่เมนูไฟล์ได้

การส่งออกฐานข้อมูลภาพว่าจะส่งแบบไหน

โดยสรุปแล้ว เครื่องมือ Universal Data Tool เป็นเครื่องมือที่ใช้ในการ Labeling ภาพที่ทำได้ง่าย ไม่ยุ่งยากแบบโปรแกรมอื่น แถมฟรีอีก สำหรับคนที่สนใจสามารถดาวน์โหลดมาใช้ได้นะครับ