Train Object detections ด้วย Roboflow เเละ YoloV4 Pytorch [Part1]

Chinnatip Taemkaeo
Super AI Engineer
Published in
3 min readMar 30, 2021

ในยุคที่เราเริ่มหยิบ AI มาใช้งานที่หลากหลายมากขึ้น เพื่อให้นักพัฒนาสามารถ custom model ให้เหมาะสมกับโจทย์ที่มีความหลากหลาย ในหลากครั้งเราก็จำเป็นต้องเทรนด์โมเดลขึ้นมาแก้ปัยหางานนั้นๆเอง สำหรับงาน Computer vision ที่เราจำเป็นต้องเตรียมภาพมาเพื่อนทำ labelling จำนวนมากๆเเล้ว คงไม่สนุกเลยถ้าเราไม่สามารถจัดระบบการทำงานในฝั่ง labelling ให้เป็นระบบได้

Roboflow เป็นสตาร์ทอัพที่ให้บริการ เครื่องมือสำหรับการทำ Labelling ที่เราสามารถเเบ่งงานกับคนในทีม เพื่อมาเตรียม dataset ของงานในกลุ่ม Computer vision ได้พร้อมกันหลายคน (collaborative) นอกจากมีฟีเจอร์ในการทำงานร่วมกันเเล้ว roboflow ยังมีฟีเจอร์ในการทำ image augmentation เเละ tool ที่ใช้ export dataset ยังมีความสะดวก ใช้งานได้ง่าย เพราะทีมนักพัฒนาคิดทั้งหมดมาให้เราเเล้วอีกด้วย

มาดูกันดีกว่า ว่าเราสามารถใช้ Roboflow เตรียม dataset ในงานกลุ่ม computer vision อะไรได้บ้าง

  • image classification
  • object detection
  • semantic segmentation (เป็น request feature ที่เราต้องติดต่อ sale โดยตรง)
  • key point detection (เป็น request feature ที่เราต้องติดต่อ sale โดยตรง)

เริ่มต้นใช้งาน Roboflow

  1. ขั้นตอนเเรกสุดขอให้คุณผู้อ่านเข้าไปที่เวป https://app.roboflow.com/ ซึ่งเป็นแอพหลักของ roboflow เเล้วทำการลงทะเบียนผู้ใช้งานด้วย Github account , Email ของคุณ

2. เมื่อลงทะเบียนเรียบร้อยเเล้ว เราจะเข้าสู่หน้าจัดการ dataset ต่างๆ โดยที่ทาง roboflow จะเตรียมโปรเจคบางตัวไว้ให้เเล้ว เเต่ในกรณีนี้เราต้องการสร้าง dataset ใช้เองจึงจะให้เลือกที่ ‘Create Dataset’ ใหม่ขึ้นมา

3. ในกรณีนี้ เนื่องจากผู้เขียนเป็นทาสเเมว จึงต้องการสาธิตการทำ dataset ภาพน้องเเมวกระโดด ขึ้นมาครับ ^^’

4. เมื่อเลือกที่ create dataset เเล้ว ตัวโปรแกรม Roboflow จะถามว่าเราต้องการสร้าง data สำหรับงานประเภทไหน ในกรณีนี้ผมเลือก object detection เนื่องจากว่าสามารถเอาไปใช้กับงานประเภท video ได้ดีครับ

5. จากนั้นระบบจะตัดมาที่หน้า input dataset ให้เรารวบรวมภาพถ่ายน้องเเมวมาใส่ ให้เราพยายามนำภาพน้องแมวกระโดด (หรือสิ่งที่เราต้องการ detect) มาใส่ให้มากที่สุดเท่าที่จะทำได้ครับ เมื่อใส่จนพอใจเเล้ว สามารถกดที่ finished uploading เพื่อใส่ให้โปรแกรมเริ่มทำการ backup ชุดภาพไปที่ cloud ของ roboflow ได้เลย

6. ตัวโปรแกรมจะถามเราว่า ต้องการจะจัดแบ่งชุดภาพนี้แบบไหน ส่วนตัวผมเเนะนำให้เราเเบ่งภาพแบบ “Split images between Train/Valid/Test” มากกว่าครับ เพราะว่าจะทำให้เราง่ายต่อการนำไปใช้ในขั้นตอนการเทรนด์โมเดลมากกว่า

เมื่อเลิก split images between… เเล้วระบบจะทำการเเบ่งภาพให้อัตโนมัติเลย สะดวกมากครับ

7. หลังจากทำการ upload ภาพเรียบร้อยเเล้ว ขั้นตอนต่อไปคือการทำ label ตี bounding box ในภาพ เพื่อระบุเเท็ควัตถุที่เราสนใจ เมื่อเรา label วัตถุทั้งหมดในทุกาภาพเเล้ว ให้กดออกมาได้เลย

8. มาดูที่หมวด health check กันบ้าง เมื่อกดเข้าไปดูเเล้ว ระบบจะทำการโหลดตัวเองพักนึงก่อนจะบอกว่าในชุดภาพทั้งหมดของเรา มี label อะไรบ้างทั้งหมดกี่รูป การวิเคราะห์ healthcheck ให้ดี จะทำให้เราวางแผนเพิ่ม dataset ได้ในอนาคตครับ

9. อีกสิ่งหนึ่งที่ขาดไม่ได้เลย กับการเตรียม dataset คือการทำ Image Augmentation เนื่องจากว่าในสถานการณ์จริง หลายครั้งเราอาจจะไม่ได้มีรูปภาพตัวอย่างเยอะมากนัก การใช้โปรเเกรมสกัดภาพ เพื่อให้เพิ่มปรอมาณภาพที่มีความหลากหลาย จากชุดภาพที่มีอยู่น้อย ก็เป็นวิธีทำให้ AI ได้มีพื้นที่ในการเรียนรู้มากขึ้น

สำหรับฟังค์ชั่นการทำ Augmentation เอง ตัว Roboflow มีให้เราเรียบร้อยเเล้ว สามารถทดสอบกันดูได้เลยครับ

10. ขั้นตอนสุดท้าย เราสามารถกด export dataset ได้จากมุมขวาบนของจอ ตอนที่ export เราสามารถเลือกได้ว่าจะให้ format ของ dataset เหมาะกับ model ประเภทไหน ในเคสนี้ผมเลือก YOLO v4 PyTorch ครับ

11. เมื่อ generated เรียบร้อย เราจะได้ link สำหรับดาวโหลด dataset มาเลย ทำให้สะดวกแก่การใช้งานมากครับ

สำหรับบทความพาร์ทเเรกคงมีเท่านี้ ขอให้คุณผู้อ่านที่สนใจ น่าจะได้ประโยชน์จาก tutorial ชุดนี้ไปไม่มากก็น้อย เเละพบกับบทความตอนที่ 2 เรื่องการเอา dataset จาก roboflow ไปเทรน์บน YoloV4

เเล้วเจอกันครับ

--

--