จะฝึกชุดข้อมูลที่กำหนดเองด้วย YOLOv5 ได้อย่างไร

จะฝึกชุดข้อมูลที่กำหนดเองด้วย YOLOv5 ได้อย่างไร

โหนดต้นทาง: 1953267

บทนำ

เราได้เห็นคำศัพท์แปลกๆ สำหรับ AI และการเรียนรู้เชิงลึก เช่น โมเดลที่ผ่านการฝึกอบรมล่วงหน้า การถ่ายโอนการเรียนรู้ ฯลฯ ให้ฉันให้ความรู้แก่คุณด้วยเทคโนโลยีที่ใช้กันอย่างแพร่หลาย และหนึ่งในสิ่งที่สำคัญและมีประสิทธิภาพมากที่สุด: การถ่ายโอนการเรียนรู้ด้วย YOLOv5

คุณดูเพียงครั้งเดียวหรือ YOLO เป็นหนึ่งในวิธีการระบุวัตถุที่ใช้การเรียนรู้เชิงลึกอย่างกว้างขวางที่สุด การใช้ชุดข้อมูลที่กำหนดเอง บทความนี้จะแสดงวิธีฝึกรูปแบบล่าสุด YOLOv5

วัตถุประสงค์การเรียนรู้ 

  1. บทความนี้จะมุ่งเน้นไปที่การฝึกอบรมโมเดล YOLOv5 เป็นหลักในการใช้งานชุดข้อมูลที่กำหนดเอง
  2. เราจะมาดูกันว่า pre-trained model คืออะไร และดูว่าอะไรคือการถ่ายโอนการเรียนรู้
  3. เราจะเข้าใจว่า YOLOv5 คืออะไรและเหตุใดเราจึงใช้ YOLO เวอร์ชัน 5

ดังนั้น เพื่อไม่ให้เป็นการเสียเวลา เรามาเริ่มกระบวนการกันเลยดีกว่า

สารบัญ

  1. โมเดลฝึกหัด
  2. ถ่ายทอดการเรียนรู้
  3. อะไรและทำไม YOLOv5?
  4. ขั้นตอนที่เกี่ยวข้องกับการถ่ายโอนการเรียนรู้
  5. การดำเนินงาน
  6. ความท้าทายบางอย่างที่คุณเผชิญได้
  7. สรุป

โมเดลฝึกหัด

คุณอาจเคยได้ยินนักวิทยาศาสตร์ข้อมูลใช้คำว่า "แบบจำลองที่ได้รับการฝึกฝนล่วงหน้า" อย่างแพร่หลาย หลังจากอธิบายว่าโมเดล/เครือข่ายการเรียนรู้เชิงลึกทำอะไรได้บ้าง ฉันจะอธิบายคำศัพท์นี้ โมเดลการเรียนรู้เชิงลึกคือโมเดลที่ประกอบด้วยเลเยอร์ต่างๆ ซ้อนกันเพื่อจุดประสงค์เดียว เช่น การจำแนก การตรวจจับ เป็นต้น เครือข่ายการเรียนรู้เชิงลึกเรียนรู้โดยการค้นพบโครงสร้างที่ซับซ้อนในข้อมูลที่ป้อนเข้าไป และบันทึกน้ำหนักในไฟล์ซึ่ง ถูกใช้ในภายหลังเพื่อทำงานที่คล้ายกัน โมเดลที่ได้รับการฝึกล่วงหน้าเป็นโมเดล Deep Learning ที่ผ่านการฝึกอบรมแล้ว หมายความว่าพวกเขาได้รับการฝึกอบรมเกี่ยวกับชุดข้อมูลขนาดใหญ่ที่มีภาพนับล้านแล้ว

นี่คือวิธีการ TensorFlow เว็บไซต์กำหนดรูปแบบการฝึกอบรมล่วงหน้า: แบบจำลองที่ผ่านการฝึกอบรมล่วงหน้าคือเครือข่ายที่บันทึกไว้ซึ่งได้รับการฝึกอบรมก่อนหน้านี้ในชุดข้อมูลขนาดใหญ่ โดยทั่วไปแล้วเป็นงานการจัดหมวดหมู่รูปภาพขนาดใหญ่

บางส่วนได้รับการปรับให้เหมาะสมและมีประสิทธิภาพเป็นพิเศษ รุ่นก่อนการฝึกอบรม มีอยู่บนอินเทอร์เน็ต มีการใช้โมเดลต่างๆ ในการทำงานที่แตกต่างกัน โมเดลที่ผ่านการฝึกอบรมล่วงหน้าบางรุ่น ได้แก่ VGG-16, VGG-19, YOLOv5, YOLOv3 และ เรสเน็ต 50.

รุ่นที่จะใช้ขึ้นอยู่กับงานที่คุณต้องการทำ ตัวอย่างเช่น ถ้าฉันต้องการแสดง การตรวจจับวัตถุ ฉันจะใช้โมเดล YOLOv5

ถ่ายทอดการเรียนรู้

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

ดังนั้นโดยทั่วไปแล้วการถ่ายโอนการเรียนรู้หมายถึงการถ่ายโอนความรู้ที่ได้รับจากการฝึกอบรมโมเดลเกี่ยวกับข้อมูลก่อนหน้าเพื่อช่วยให้โมเดลเรียนรู้ได้ดีขึ้นและเร็วขึ้นเพื่อทำงานที่แตกต่างแต่คล้ายคลึงกัน

ตัวอย่างเช่น การใช้ YOLOv5 สำหรับการตรวจจับวัตถุ แต่วัตถุนั้นเป็นสิ่งอื่นที่ไม่ใช่ข้อมูลก่อนหน้าของวัตถุที่ใช้

อะไรและทำไม YOLOv5?

YOLOv5 เป็นโมเดลที่ผ่านการฝึกอบรมล่วงหน้าซึ่งหมายถึงการดูเฉพาะเมื่อเวอร์ชัน 5 ใช้สำหรับการตรวจจับวัตถุแบบเรียลไทม์ และได้รับการพิสูจน์แล้วว่ามีประสิทธิภาพสูงในแง่ของความแม่นยำและเวลาในการอนุมาน มี YOLO เวอร์ชันอื่น ๆ แต่อย่างที่คาดการณ์ไว้ YOLOv5 ทำงานได้ดีกว่าเวอร์ชันอื่น ๆ YOLOv5 นั้นรวดเร็วและใช้งานง่าย มันขึ้นอยู่กับเฟรมเวิร์ก PyTorch ซึ่งมีชุมชนขนาดใหญ่กว่า Yolo v4 Darknet

โยลอฟ5

ตอนนี้เราจะดูสถาปัตยกรรมของ YOLOv5

โครงสร้างอาจดูสับสน แต่ไม่เป็นไร เพราะเราไม่ต้องดูสถาปัตยกรรม แทนที่จะใช้โมเดลและน้ำหนักโดยตรง

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

ขั้นตอนที่เกี่ยวข้องกับการถ่ายโอนการเรียนรู้

การถ่ายโอนการเรียนรู้เป็นกระบวนการง่ายๆ และเราสามารถทำได้ด้วยขั้นตอนง่ายๆ ไม่กี่ขั้นตอน:

  1. การเตรียมข้อมูล
  2. รูปแบบที่เหมาะสมสำหรับคำอธิบายประกอบ
  3. เปลี่ยนเลเยอร์เล็กน้อยหากต้องการ
  4. ฝึกโมเดลใหม่สำหรับการทำซ้ำสองสามรอบ
  5. ตรวจสอบ/ทดสอบ

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

การเตรียมข้อมูลอาจใช้เวลานานหากข้อมูลที่คุณเลือกมีขนาดใหญ่สักหน่อย การเตรียมข้อมูลหมายถึงการใส่คำอธิบายประกอบรูปภาพ ซึ่งเป็นกระบวนการที่คุณติดป้ายกำกับรูปภาพโดยทำช่องรอบวัตถุในภาพ เมื่อทำเช่นนี้ พิกัดของวัตถุที่ทำเครื่องหมายจะถูกบันทึกไว้ในไฟล์ซึ่งจะถูกป้อนไปยังแบบจำลองสำหรับการฝึกอบรม มีไม่กี่เว็บเช่น makeense.ai และ roboflow.com, ซึ่งสามารถช่วยคุณติดป้ายกำกับข้อมูลได้ 

นี่คือวิธีที่คุณสามารถใส่คำอธิบายประกอบข้อมูลสำหรับโมเดล YOLOv5 บน makesense.ai

1. เยี่ยมชมร้านค้า https://www.makesense.ai/. 

2. คลิกที่เริ่มต้นที่ด้านล่างขวาของหน้าจอ

โยลอฟ5

3. เลือกรูปภาพที่คุณต้องการติดป้ายกำกับโดยคลิกที่ช่องที่ไฮไลต์ตรงกลาง

โหลดรูปภาพที่คุณต้องการใส่คำอธิบายประกอบและคลิกที่การตรวจหาวัตถุ
โยลอฟ5

4. หลังจากโหลดรูปภาพแล้ว ระบบจะขอให้คุณสร้างป้ายกำกับสำหรับคลาสต่างๆ ของชุดข้อมูล

ฉันกำลังตรวจหาป้ายทะเบียนรถ ดังนั้นป้ายเดียวที่ฉันจะใช้คือ "ป้ายทะเบียนรถ" คุณสามารถสร้างป้ายกำกับเพิ่มเติมได้เพียงแค่กดปุ่ม Enter โดยคลิกปุ่ม '+' ทางด้านซ้ายของกล่องโต้ตอบ

หลังจากที่คุณสร้างป้ายกำกับทั้งหมดแล้ว ให้คลิกเริ่มโครงการ

โยลอฟ5

หากคุณพลาดป้ายกำกับใดๆ คุณสามารถแก้ไขได้ในภายหลังโดยคลิกที่การดำเนินการแล้วแก้ไขป้ายกำกับ

5. เริ่มสร้างกรอบล้อมรอบวัตถุในภาพ แบบฝึกหัดนี้อาจสนุกในตอนแรก แต่ด้วยข้อมูลขนาดใหญ่อาจทำให้เหนื่อยได้

ขอบกล่อง

6. หลังจากใส่คำอธิบายประกอบรูปภาพทั้งหมดแล้ว คุณต้องบันทึกไฟล์ซึ่งจะมีพิกัดของกล่องขอบเขตพร้อมกับคลาส

ดังนั้นคุณต้องไปที่ปุ่มการดำเนินการและคลิกที่ส่งออกคำอธิบายประกอบ อย่าลืมตรวจสอบตัวเลือก 'แพ็คเกจ zip ที่มีไฟล์ในรูปแบบ YOLO' เนื่องจากจะเป็นการบันทึกไฟล์ในรูปแบบที่ถูกต้องตามที่กำหนดในแบบจำลอง YOLO

รุ่น YOLO

7. นี่เป็นขั้นตอนที่สำคัญ ดังนั้นควรปฏิบัติตามอย่างระมัดระวัง

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

เพื่อให้คุณเห็นภาพคร่าวๆ เกี่ยวกับโฟลเดอร์ ฉันได้สร้างโฟลเดอร์ชื่อ 'CarsData' และในโฟลเดอร์นั้นมีโฟลเดอร์สองโฟลเดอร์ ได้แก่ 'รูปภาพ' และ 'ป้ายกำกับ'

โยลอฟ5

ภายในทั้งสองโฟลเดอร์ คุณต้องสร้างอีกสองโฟลเดอร์ชื่อ 'train' และ 'val' ในโฟลเดอร์รูปภาพ คุณสามารถแยกรูปภาพได้ตามต้องการ แต่คุณต้องระวังในขณะที่แยกฉลาก เนื่องจากฉลากควรตรงกับรูปภาพที่คุณแยก

8. ตอนนี้สร้างไฟล์ zip ของโฟลเดอร์และอัปโหลดไปยังไดรฟ์เพื่อให้เราสามารถใช้ใน colab

การดำเนินงาน

ตอนนี้เราจะมาถึงส่วนการใช้งานซึ่งง่ายมาก แต่ยุ่งยาก หากคุณไม่ทราบว่าต้องเปลี่ยนไฟล์ใด คุณจะไม่สามารถฝึกโมเดลในชุดข้อมูลที่กำหนดเองได้ 

ดังนั้นนี่คือรหัสที่คุณควรปฏิบัติตามเพื่อฝึกโมเดล YOLOv5 ในชุดข้อมูลที่กำหนดเอง

ฉันแนะนำให้คุณใช้ google colab สำหรับบทช่วยสอนนี้ เนื่องจากยังมี GPU ซึ่งให้การคำนวณที่เร็วขึ้น

1. !git โคลน https://github.com/ultralytics/yolov5
สิ่งนี้จะสร้างสำเนาของที่เก็บ YOLOv5 ซึ่งเป็นที่เก็บ GitHub ที่สร้างขึ้นโดย ultralytics

2. ซีดี โยลอฟ5
นี่คือคำสั่งเชลล์บรรทัดคำสั่งที่ใช้เพื่อเปลี่ยนไดเร็กทอรีการทำงานปัจจุบันเป็นไดเร็กทอรี YOLOv5

3. !pip install -r ความต้องการ.txt
คำสั่งนี้จะติดตั้งแพ็คเกจและไลบรารีทั้งหมดที่ใช้ในการฝึกโมเดล

4. !unzip '/content/drive/MyDrive/CarsData.zip'
คลายซิปโฟลเดอร์ที่มีรูปภาพและป้ายกำกับใน google colab

มาถึงขั้นตอนที่สำคัญที่สุด…

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

นี่คือสิ่งที่คุณต้องทำ

หลังจากดำเนินการ 4 ขั้นตอนข้างต้นแล้ว คุณจะมีโฟลเดอร์ yolov5 ใน google colab ไปที่โฟลเดอร์ yolov5 และคลิกที่โฟลเดอร์ 'ข้อมูล' ตอนนี้คุณจะเห็นโฟลเดอร์ชื่อ 'coco128.yaml' 

โยลอฟ5

ไปข้างหน้าและดาวน์โหลดโฟลเดอร์นี้

หลังจากดาวน์โหลดโฟลเดอร์แล้ว คุณต้องทำการเปลี่ยนแปลงบางอย่างกับโฟลเดอร์และอัปโหลดกลับไปยังโฟลเดอร์เดียวกับที่คุณดาวน์โหลดมา

มาดูเนื้อหาของไฟล์ที่เราดาวน์โหลดมากัน ซึ่งจะมีลักษณะดังนี้

โยลอฟ5

เราจะปรับแต่งไฟล์นี้ตามชุดข้อมูลและคำอธิบายประกอบของเรา

เราได้คลายซิปชุดข้อมูลบน colab แล้ว ดังนั้นเราจะคัดลอกเส้นทางของรถไฟและอิมเมจการตรวจสอบของเรา หลังจากคัดลอกเส้นทางของอิมเมจรถไฟ ซึ่งจะอยู่ในโฟลเดอร์ชุดข้อมูลและมีลักษณะดังนี้ '/content/yolov5/CarsData/images/train' ให้วางลงในไฟล์ coco128.yaml ที่เราเพิ่งดาวน์โหลด

ทำเช่นเดียวกันกับภาพทดสอบและการตรวจสอบความถูกต้อง

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

Yolo

บันทึกไฟล์นี้ด้วยชื่อใดก็ได้ที่คุณต้องการ ฉันได้บันทึกไฟล์ด้วยชื่อ customPath.yaml และตอนนี้อัปโหลดไฟล์นี้กลับไปที่ colab ที่เดิมซึ่ง coco128.yaml อยู่ 

ตอนนี้เราทำส่วนแก้ไขเสร็จแล้วและพร้อมที่จะฝึกโมเดล

รันคำสั่งต่อไปนี้เพื่อฝึกโมเดลของคุณสำหรับการโต้ตอบบางอย่างบนชุดข้อมูลที่คุณกำหนดเอง

อย่าลืมเปลี่ยนชื่อไฟล์ที่คุณอัปโหลด ('customPath.yaml) คุณยังสามารถเปลี่ยนจำนวนยุคที่คุณต้องการฝึกโมเดล ในกรณีนี้ ฉันจะฝึกโมเดลสำหรับ 3 ยุคเท่านั้น

5. !python train.py –img 640 –batch 16 –epochs 10 –data /content/yolov5/customPath.yaml –weights yolov5s.pt

จำเส้นทางที่คุณอัปโหลดโฟลเดอร์ หากเปลี่ยนเส้นทางคำสั่งจะไม่ทำงานเลย

หลังจากที่คุณเรียกใช้คำสั่งนี้ โมเดลของคุณควรเริ่มการฝึก และคุณจะเห็นสิ่งนี้บนหน้าจอของคุณ

Yolo

Yolo

หลังจากเสร็จสิ้นทุกยุคแล้ว แบบจำลองของคุณสามารถทดสอบกับภาพใดก็ได้

คุณสามารถปรับแต่งเพิ่มเติมในไฟล์ Detection.py เกี่ยวกับสิ่งที่คุณต้องการบันทึกและสิ่งที่คุณไม่ชอบ การตรวจจับตำแหน่งที่ตรวจพบป้ายทะเบียน ฯลฯ

6. !python detection.py –weight /content/yolov5/runs/train/exp/weights/best.pt –source path_of_the_image

คุณสามารถใช้คำสั่งนี้เพื่อทดสอบการคาดคะเนโมเดลในบางภาพ

ความท้าทายบางอย่างที่คุณเผชิญได้

แม้ว่าขั้นตอนที่อธิบายไว้ด้านบนนั้นถูกต้อง แต่ก็มีปัญหาบางอย่างที่คุณอาจพบได้หากคุณไม่ปฏิบัติตามอย่างถูกต้อง 

  1. เส้นทางที่ไม่ถูกต้อง: นี่อาจเป็นเรื่องน่าปวดหัวหรือปัญหา หากคุณเข้าสู่เส้นทางที่ไม่ถูกต้องในการฝึกภาพ การระบุอาจไม่ใช่เรื่องง่าย และคุณจะไม่สามารถฝึกโมเดลได้
  2. รูปแบบป้ายกำกับไม่ถูกต้อง: นี่เป็นปัญหาทั่วไปที่ผู้คนต้องเผชิญขณะฝึก YOLOv5 โมเดลยอมรับเฉพาะรูปแบบที่ทุกภาพมีไฟล์ข้อความของตัวเองซึ่งมีรูปแบบที่ต้องการอยู่ภายใน บ่อยครั้งที่มีการป้อนไฟล์รูปแบบ XLS หรือไฟล์ CSV ไฟล์เดียวไปยังเครือข่าย ส่งผลให้เกิดข้อผิดพลาด หากคุณกำลังดาวน์โหลดข้อมูลจากที่ไหนสักแห่ง แทนที่จะใส่คำอธิบายประกอบรูปภาพแต่ละรูป อาจมีรูปแบบไฟล์ที่แตกต่างกันในการบันทึกป้ายกำกับ นี่คือบทความเกี่ยวกับการแปลงรูปแบบ XLS เป็นรูปแบบ YOLO (ลิงค์หลังบทความจบ).
  3. ตั้งชื่อไฟล์ไม่ถูกต้อง: การตั้งชื่อไฟล์ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาดอีกครั้ง ใส่ใจกับขั้นตอนในขณะที่ตั้งชื่อโฟลเดอร์และหลีกเลี่ยงข้อผิดพลาดนี้

สรุป

ในบทความนี้ เราได้เรียนรู้ว่าการเรียนรู้แบบถ่ายโอนคืออะไรและรูปแบบการฝึกอบรมล่วงหน้า เราได้เรียนรู้ว่าเมื่อใดและเพราะเหตุใดจึงควรใช้โมเดล YOLOv5 และวิธีฝึกโมเดลในชุดข้อมูลที่กำหนดเอง เราผ่านแต่ละขั้นตอนตั้งแต่การเตรียมชุดข้อมูลไปจนถึงการเปลี่ยนเส้นทางและสุดท้ายก็ป้อนเข้าสู่เครือข่ายในการนำเทคนิคไปใช้ และทำความเข้าใจขั้นตอนอย่างละเอียดถี่ถ้วน เรายังพิจารณาถึงปัญหาทั่วไปที่ต้องเผชิญขณะฝึก YOLOv5 และวิธีแก้ปัญหา ฉันหวังว่าบทความนี้จะช่วยคุณฝึกฝน YOLOv5 แรกของคุณบนชุดข้อมูลที่กำหนดเอง และคุณชอบบทความนี้

ประทับเวลา:

เพิ่มเติมจาก การวิเคราะห์ วิทยา