มหากาพย์ YOLO object detection ตอนที่ 3 มาเทรนโมเดลกัน
--
ถ้าทุกคนทำตามทุกขั้นตอนในบทความที่แล้วแบบไม่มีผิดพลาด ตอนนี้เราก็พร้อมจะเทรนโมเดลแล้ว เตรียมคอมพิวเตอร์ของท่านให้พร้อม แล้วไปกันได้เลยครับ
Training
เปิด terminal ในโปรเจคเราขึ้นมา และทำการ active environment
จากนั้นให้ใช้สคริปต์นี้ เพื่อนเทรนโมเดลครับ
- — img: ขนาดของภาพที่จะถูกนำเข้าไปเทรน
- — batch: จำนวนภาพที่จะถูกนำเข้าไปเทรนต่อหนึ่งรอบ
- — ephochs: จำนวน epochs (ยิ่งจำนวน epochs เยอะ ความแม่นยำจะสูงขึ้นทำให้เวลาในการเทรนจะมากขึ้นตาม)
- — data: path สำหรับไฟล์สกุล .yaml ที่เราสร้างในตอนที่2
- — cfg: path สำหรับไฟล์โมเดล
- — weights: path สำหรับไฟล์ weights
เมื่อเรารันสคริปต์เทรนแล้วก็รอมันประมวลผล (ผมรันทั้งหมด 80 epochs ใช้เวลาประมาณหนึ่งชั่วโมง)
(optional) ระหว่างที่โปรแกรมกำลังรันอยู่เราสามารถ monitor ค่าต่าง ๆ ได้โดยให้เปิด terminal ใหม่ขึ้นมาจากนั้นให้รันสคริปต์นี้ครับ
จะมี URL ขึ้นมาให้เรานำไปเปิดใน browser ได้เลย
ถ้าใน terminal แสดงผลแบบนี้แสดงว่าเราเทรนโมเดลเสร็จแล้วครับ
Let’s try
เมื่อเราเทรนโมเดลเสร็จแล้วจะมีโฟลเดอร์ run ขึ้นมาใน project ของเรา
weights จากการเทรนจะถูกเก็บไว้ใน ./run/exp0 (เทรนครั้งแรกจะเป็น exp0 ถ้าเทรนครั้งต่อไปจะเป็น exp1, exp2, …, expN)
โดยเราจำนำไฟล์ best.pt ไปใช้ detect ภาพ
ผมได้สร้างโฟลเดอร์ชื่อ sample_img ไว้ที่ project และนำภาพที่จะใช้ detect มาวางไว้ในโฟลเดอร์นี้ (สามารถมีได้หลายภาพ)
สคริปต์ที่ใช้ detect
- — source: path ที่เก็บภาพสำหรับใช้ detect
- — weights: path สำหรับ weights ที่ถูกเทรน
- — conf: ค่า confident treshold (0.0–1.0)
Results
เมื่อรันเสร็จผลลัพธ์จะถูกเก็บไว้ในโฟลเดอร์ชื่อ inference
ก็จบกันไปแล้วนะครับสำหรับบทความนี้ถ้าผิดพลาดส่วนไหนก็ต้องขออภัยด้วยครับ สามารถให้คำแนะนำได้เพื่อนำไปปรับปรุงในบทความถัดไปครับ
ตอนที่ 1 : เตรียมข้อมูลดีมีชัยไปกว่าครึ่ง
ตอนที่ 2 : เตรียม environment เพื่อเทรนโมเดล
อ้างอิง