การอนุมานการตรวจจับวัตถุใน Python ด้วย YOLOv5 และ PyTorch PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

การอนุมานการตรวจจับวัตถุใน Python ด้วย YOLOv5 และ PyTorch

บทนำ

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

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

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

โชคดีสำหรับคนจำนวนมาก – Ultralytics ได้พัฒนา API การตรวจจับวัตถุที่เรียบง่าย ทรงพลัง และสวยงามรอบการใช้งาน YOLOv5

ในคู่มือฉบับย่อนี้ เราจะดำเนินการ Object Detection ใน Python โดย YOLOv5 สร้างขึ้นโดย Ultralytics ใน PyTorch โดยใช้ชุดตุ้มน้ำหนักที่ได้รับการฝึกฝนล่วงหน้าบน MS COCO

โยลอฟ5

YOLO (คุณมองเพียงครั้งเดียว) เป็นวิธีการเช่นเดียวกับกลุ่มของแบบจำลองที่สร้างขึ้นสำหรับการตรวจจับวัตถุ นับตั้งแต่ก่อตั้งในปี 2015 YOLOv1, YOLOv2 (YOLO9000) และ YOLOv3 ได้รับการเสนอโดยผู้เขียนคนเดียวกัน – และชุมชนการเรียนรู้เชิงลึกยังคงดำเนินต่อไปด้วยความก้าวหน้าแบบโอเพนซอร์ซในปีต่อๆ ไป

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

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

การตรวจจับวัตถุด้วย YOLOv5

ก่อนจะก้าวไปข้างหน้า จงแน่ใจว่าคุณมี torch และ torchvision ติดตั้ง:

! python -m pip install torch torchvision

YOLOv5 มีเอกสารประกอบที่ละเอียดและไร้สาระและ API ที่เรียบง่ายสวยงามดังที่แสดงบน repo เองและในตัวอย่างต่อไปนี้:

import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg'  
results = model(img)
fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(results.render()[0])
plt.show()

อาร์กิวเมนต์ที่สองของ hub.load() method ระบุน้ำหนักที่เราต้องการใช้ โดยเลือกที่ใดก็ได้ระหว่าง yolov5n ไปยัง yolov5l6 – เรากำลังโหลดในตุ้มน้ำหนักที่ฝึกไว้ล่วงหน้าของ MS COCO สำหรับรุ่นที่กำหนดเอง:

model = torch.hub.load('ultralytics/yolov5', 'custom', path='path_to_weights.pt')

ไม่ว่าในกรณีใด เมื่อคุณส่งข้อมูลผ่านโมเดล วัตถุที่ส่งคืนจะมีวิธีการที่เป็นประโยชน์ในการตีความผลลัพธ์ และเราได้เลือก render() ซึ่งส่งคืนอาร์เรย์ NumPy ที่เราสามารถรวมเข้ากับ an imshow() เรียก. ส่งผลให้มีรูปแบบที่สวยงาม:

การบันทึกผลลัพธ์เป็นไฟล์

คุณสามารถบันทึกผลลัพธ์ของการอนุมานเป็นไฟล์ได้โดยใช้ปุ่ม results.save() วิธี:

results.save(save_dir='results')

สิ่งนี้จะสร้างไดเร็กทอรีใหม่หากยังไม่มีอยู่ และบันทึกภาพเดิมที่เราเพิ่งลงจุดเป็นไฟล์

การครอบตัดวัตถุ

คุณยังสามารถตัดสินใจครอบตัดออบเจ็กต์ที่ตรวจพบออกเป็นไฟล์แต่ละไฟล์ ในกรณีของเรา สำหรับทุกป้ายกำกับที่ตรวจพบ สามารถแยกรูปภาพจำนวนหนึ่งได้ ทำได้โดยง่ายผ่าน results.crop() วิธีการ ซึ่งสร้าง a runs/detect/ ไดเรกทอรีด้วย expN/crops (โดยที่ N เพิ่มขึ้นสำหรับการรันแต่ละครั้ง) ซึ่งไดเร็กทอรีที่มีภาพที่ครอบตัดถูกสร้างขึ้นสำหรับแต่ละป้ายกำกับ:

results.crop()
Saved 1 image to runs/detect/exp2
Saved results to runs/detect/exp2

[{'box': [tensor(295.09409),
   tensor(277.03699),
   tensor(514.16113),
   tensor(494.83691)],
  'conf': tensor(0.25112),
  'cls': tensor(0.),
  'label': 'person 0.25',
  'im': array([[[167, 186, 165],
          [174, 184, 167],
          [173, 184, 164],

คุณยังสามารถตรวจสอบโครงสร้างไฟล์เอาต์พุตด้วย:

ดูคู่มือเชิงปฏิบัติสำหรับการเรียนรู้ Git ที่มีแนวทางปฏิบัติที่ดีที่สุด มาตรฐานที่ยอมรับในอุตสาหกรรม และเอกสารสรุปรวม หยุดคำสั่ง Googling Git และจริงๆ แล้ว เรียน มัน!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

การนับวัตถุ

ตามค่าเริ่มต้น เมื่อคุณทำการตรวจจับหรือพิมพ์ results วัตถุ – คุณจะได้จำนวนภาพที่ทำการอนุมานสำหรับสิ่งนั้น results ออบเจ็กต์ (YOLOv5 ใช้งานได้กับชุดรูปภาพด้วย) ความละเอียดและจำนวนของแต่ละป้ายกำกับที่ตรวจพบ:

print(results)

ผลลัพธ์นี้ใน:

image 1/1: 720x1280 14 persons, 1 car, 3 buss, 6 traffic lights, 1 backpack, 1 umbrella, 1 handbag
Speed: 35.0ms pre-process, 256.2ms inference, 0.7ms NMS per image at shape (1, 3, 384, 640)

การอนุมานด้วยสคริปต์

อีกวิธีหนึ่ง คุณสามารถเรียกใช้สคริปต์การตรวจหา detect.pyโดยการโคลนที่เก็บ YOLOv5:

$ git clone https://github.com/ultralytics/yolov5 
$ cd yolov5
$ pip install -r requirements.txt

แล้ววิ่ง:

$ python detect.py --source img.jpg

อีกวิธีหนึ่ง คุณสามารถระบุ URL, ไฟล์วิดีโอ, พาธไปยังไดเร็กทอรีที่มีหลายไฟล์, glob ในพาธเพื่อจับคู่เฉพาะไฟล์บางไฟล์, ลิงก์ YouTube หรือสตรีม HTTP อื่นๆ ผลลัพธ์จะถูกบันทึกไว้ใน runs/detect ไดเรกทอรี

ก้าวต่อไป – การเรียนรู้เชิงลึกเชิงปฏิบัติสำหรับคอมพิวเตอร์วิทัศน์

ธรรมชาติที่อยากรู้อยากเห็นของคุณทำให้คุณต้องการไปต่อหรือไม่? เราขอแนะนำให้ตรวจสอบของเรา คอร์ส: “การเรียนรู้เชิงลึกเชิงปฏิบัติสำหรับคอมพิวเตอร์วิทัศน์ด้วย Python”.

การอนุมานการตรวจจับวัตถุใน Python ด้วย YOLOv5 และ PyTorch PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

หลักสูตร Computer Vision อื่น?

เราจะไม่ทำการจำแนกตัวเลข MNIST หรือแฟชั่น MNIST พวกเขาทำหน้าที่ส่วนของตนเมื่อนานมาแล้ว ทรัพยากรการเรียนรู้จำนวนมากเกินไปมุ่งเน้นไปที่ชุดข้อมูลพื้นฐานและสถาปัตยกรรมพื้นฐาน ก่อนปล่อยให้สถาปัตยกรรมกล่องดำขั้นสูงรับภาระด้านประสิทธิภาพ

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

อะไรอยู่ข้างใน?

  • หลักการมองเห็นเบื้องต้นและวิธีการสอนคอมพิวเตอร์ให้ “มองเห็น”
  • งานต่างๆ และการประยุกต์ใช้คอมพิวเตอร์วิทัศน์
  • เครื่องมือการค้าที่จะทำให้งานของคุณง่ายขึ้น
  • การค้นหา การสร้าง และการใช้ชุดข้อมูลสำหรับคอมพิวเตอร์วิทัศน์
  • ทฤษฎีและการประยุกต์ใช้ Convolutional Neural Networks
  • การจัดการการเปลี่ยนแปลงโดเมน การเกิดขึ้นร่วม และอคติอื่นๆ ในชุดข้อมูล
  • ถ่ายทอดการเรียนรู้และใช้เวลาฝึกอบรมและทรัพยากรการคำนวณของผู้อื่นเพื่อประโยชน์ของคุณ
  • การสร้างและฝึกอบรมผู้จำแนกมะเร็งเต้านมที่ล้ำสมัย
  • วิธีการใช้ความสงสัยที่ดีต่อสุขภาพกับแนวคิดกระแสหลักและทำความเข้าใจกับความหมายของเทคนิคที่นำมาใช้กันอย่างแพร่หลาย
  • การแสดงภาพ "พื้นที่แนวคิด" ของ ConvNet โดยใช้ t-SNE และ PCA
  • กรณีศึกษาวิธีที่บริษัทต่างๆ ใช้เทคนิคการมองเห็นด้วยคอมพิวเตอร์เพื่อให้ได้ผลลัพธ์ที่ดีขึ้น
  • การประเมินแบบจำลองที่เหมาะสม การสร้างภาพพื้นที่แฝง และการระบุความสนใจของแบบจำลอง
  • ดำเนินการวิจัยโดเมน ประมวลผลชุดข้อมูลของคุณเอง และสร้างการทดสอบแบบจำลอง
  • สถาปัตยกรรมล้ำสมัย ความก้าวหน้าของแนวคิด สิ่งที่ทำให้มีเอกลักษณ์เฉพาะตัว และวิธีนำไปใช้
  • KerasCV – ไลบรารี WIP สำหรับสร้างไปป์ไลน์และโมเดลที่ทันสมัย
  • วิธีแยกวิเคราะห์และอ่านเอกสารและนำไปใช้เอง
  • การเลือกรุ่นขึ้นอยู่กับการใช้งานของคุณ
  • การสร้างไปป์ไลน์การเรียนรู้ของเครื่องแบบ end-to-end
  • ภูมิทัศน์และสัญชาตญาณในการตรวจจับวัตถุด้วย R-CNN ที่เร็วกว่า, RetinaNets, SSD และ YOLO
  • การแบ่งกลุ่มตัวอย่างและความหมาย
  • การจดจำวัตถุแบบเรียลไทม์ด้วย YOLOv5
  • การฝึกอบรมเครื่องตรวจจับวัตถุ YOLOv5
  • การทำงานกับ Transformers โดยใช้ KerasNLP (ไลบรารี WIP ที่มีความแข็งแกร่งในอุตสาหกรรม)
  • การรวม Transformers เข้ากับ ConvNets เพื่อสร้างคำบรรยายภาพ
  • Deepdream

สรุป

ในคู่มือฉบับย่อนี้ เราได้มาดูวิธีที่คุณสามารถดำเนินการตรวจจับวัตถุด้วย YOLOv5 ที่สร้างโดยใช้ PyTorch

ประทับเวลา:

เพิ่มเติมจาก สแต็ค