มหากาพย์ YOLO object detection ตอนที่ 1 เตรียมข้อมูลดีมีชัยไปกว่าครึ่ง

Original article was published by Kittisak Phormraksa on Artificial Intelligence on Medium


มหากาพย์ YOLO object detection ตอนที่ 1 เตรียมข้อมูลดีมีชัยไปกว่าครึ่ง

ห่างหายกันไปนานเลยนะครับ วันนี้ผมมาพร้อมกับ tool ชื่อดังที่หลายท่านอาจจะเคยได้ยินหรือผ่านตามาบ้างแล้วกับเจ้า yolo object detection

YOLO คืออะไร??

‘‘ You only look once (YOLO) is a state-of-the-art, real-time object detection system. ’’ from yolo official website.

Source: https://pjreddie.com/darknet/yolo/

หรือง่าย ๆ ก็คือ YOLO เป็นวิธีการที่ใช้จัดการเกี่ยวกับ object detection นั่นเอง

เนื้อหาในบทความนี้ผมจะอ้างอิงจากคุณ Mihir Rajput และคุณ ENEmy ที่เผยแพร่เมื่อเดือนมิถุนายน 2020 ที่ผ่านมาครับ

YOLOv5

YOLO ที่ผมใช้จะเป็น YOLO เวอร์ชัน 5 ซึ่งถูกพัฒนาโดยคุณ Glenn Jocher ครับ

Operating system

OS ที่ผมใช้คือ windows 10 นะครับ ถ้าใครใช้ตระกูล linux ให้ตามลิงก์นี้ไปครับ

Goals

เป้าหมายหลักของผมในโปรเจคนี้คือช่วยนำพาทุกท่านให้สามารถใช้งาน YOLOv5 ในการทำ object detection เบื้องต้นให้ได้ครับ โดยขั้นตอนหลักของเราจะมีดังนี้

  1. เตรียมข้อมูล
  2. ติดตั้งเครื่องมือที่เกี่ยวข้อง
  3. ปรับแต่งไฟล์ให้เข้ากับโปรเจคของเรา
  4. เทรนโมเดล
  5. ทดสอบโมเดล
  6. ผลลัพธ์จากการเทรน

Before we start

แต่เดี๋ยวก่อนครับทุกคน สิ่งที่ผมจะทำต่อไปนี้คือนำ YOLOv5 มาใช้กับ dataset ที่มีคนทำ labelling ไว้ให้แล้วนะครับ

สิ่งที่ผมจะทำในวันนี้คือใช้ YOLOv5 ในการ detect “วัชพืช” และ “พืช” ในภาพ หมายความว่าเราจะมีจำนวนคลาสเท่ากับ 2 คลาสนั่นเองครับ โดยสามารถโหลดได้จากลิงก์นี้เลย -> download

Source: https://www.kaggle.com/ravirajsinh45/crop-and-weed-detection-data-with-bounding-boxes

เตรียมข้อมูล

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

1 0.496094 0.384766 0.960938 0.753906

แล้วตัวเลขพวกนี้มันคืออะไรและนี่ก็คือที่มาครับ

ซึ่งเป็นชุดตัวเลขที่บอกข้อมูลของภาพเพื่อใช้ในการเทรนโมเดลนั่นเอง

ต่อไปเราจะทำการแบ่งข้อมูลออกเป็น 3 ส่วน ดังนี้

Training 70%

Validation 20%

Testing 10%

ก่อนอื่นผมจะทำการสร้างโฟลเดอร์ data ขึ้นมาและแบ่งข้อมูลตามนี้ครับ

ส่วนโฟลเดอร์ data ผมได้ทำการอัพโหลดไว้แล้วสามารถกด ลิงก์ นี้เพื่อดาวน์โหลดได้เลยครับ

โฟลเดอร์ data จะถูกใช้ในตอนต่อไป ดังนั้นให้ทุกคนเก็บไว้ก่อนนะครับ

วันนี้ผมก็ขอพักไว้เท่านี้ก่อนนะครับกลัวว่ามันจะยาวเกินไป แล้วมาเจอกันตอนต่อไปนะครับ

ถ้าใครติดปัญหาหรือว่าสงสัยตรงส่วนไหนก็หลังไมค์มาได้นะครับ contact ผมอยู่ใน Bio ครับ

อ้างอิง