การอนุมานการตรวจจับวัตถุแบบเรียลไทม์ใน Python พร้อมด้วย YOLOv7 PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

การอนุมานการตรวจจับวัตถุตามเวลาจริงใน Python ด้วย YOLOv7

บทนำ

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

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

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

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

ในคู่มือฉบับย่อนี้ เราจะดำเนินการ Object Detection ใน Python ด้วย YOLOv7 ที่ล้ำสมัย

ภูมิทัศน์ YOLO และ YOLOv7

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

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

YOLOv5 ยังคงเป็นโครงการหลักในการสร้างแบบจำลองการตรวจจับวัตถุด้วย และที่เก็บจำนวนมากที่มีจุดมุ่งหมายเพื่อพัฒนาวิธี YOLO เริ่มต้นด้วย YOLOv5 เป็นพื้นฐานและเสนอ API ที่คล้ายกัน (หรือเพียงแค่แยกโครงการแล้วสร้างต่อยอด) นั่นคือกรณีของ YOLOR (คุณเรียนรู้เพียงหนึ่งตัวแทน) และ YOLOv7 ซึ่งสร้างขึ้นบน YOLOR (ผู้เขียนคนเดียวกัน) YOLOv7 เป็นความก้าวหน้าล่าสุดในวิธีการของ YOLO และที่โดดเด่นที่สุดคือ YOLOv7 มีส่วนหัวของโมเดลใหม่ ที่สามารถส่งออกจุดสำคัญ (โครงกระดูก) และดำเนินการแบ่งส่วนอินสแตนซ์นอกเหนือจากการถดถอยของขอบเขตเท่านั้น ซึ่งไม่ได้มาตรฐานสำหรับรุ่น YOLO รุ่นก่อน

ทำให้การแบ่งส่วนอินสแตนซ์และการตรวจจับจุดสำคัญได้เร็วกว่าที่เคย!

นอกจากนี้ YOLOv7 ยังทำงานได้เร็วขึ้นและมีระดับความแม่นยำที่สูงกว่ารุ่นก่อนๆ เนื่องจากการนับพารามิเตอร์ที่ลดลงและประสิทธิภาพในการคำนวณที่สูงขึ้น:

การอนุมานการตรวจจับวัตถุแบบเรียลไทม์ใน Python พร้อมด้วย YOLOv7 PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

โมเดลนี้สร้างขึ้นจากการเปลี่ยนแปลงทางสถาปัตยกรรม รวมถึงการเพิ่มประสิทธิภาพด้านการฝึกอบรม เรียกว่า "กระเป๋าของแจกฟรี" ซึ่งเพิ่มความแม่นยำโดยไม่เพิ่มต้นทุนการอนุมาน

กำลังติดตั้ง YOLOv7

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

หมายเหตุ น่าเสียดายในขณะที่เขียน YOLOv7 ไม่ได้เสนอ API แบบเป็นโปรแกรมที่สะอาดเช่น YOLOv5 ซึ่งโดยทั่วไปจะโหลดจาก torch.hub()ผ่านที่เก็บ GitHub เข้ามา ดูเหมือนว่าจะเป็นคุณลักษณะที่ควรใช้งานได้ แต่ขณะนี้ล้มเหลว เมื่อได้รับการแก้ไข ฉันจะอัปเดตคู่มือหรือเผยแพร่คู่มือใหม่ใน API แบบเป็นโปรแกรม สำหรับตอนนี้ – เราจะเน้นที่สคริปต์การอนุมานที่มีให้ในที่เก็บ

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

มาดาวน์โหลดที่เก็บและทำการอนุมานกัน:

! git clone https://github.com/WongKinYiu/yolov7.git

สิ่งนี้จะสร้างไฟล์ yolov7 ไดเร็กทอรีในไดเร็กทอรีการทำงานปัจจุบันของคุณ ซึ่งเป็นที่เก็บโปรเจ็กต์ ไปที่ไดเร็กทอรีนั้นและดูไฟล์:

%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md       detect.py        models           tools
README.md        export.py        paper            train.py
cfg              figure           requirements.txt train_aux.py
data             hubconf.py       scripts          utils
deploy           inference        test.py          runs

หมายเหตุ บน Google Colab Notebook คุณจะต้องใช้เวทมนตร์ %cd คำสั่งในแต่ละเซลล์ที่คุณต้องการเปลี่ยนไดเร็กทอรีของคุณเป็น yolov7ในขณะที่เซลล์ถัดไปจะนำคุณกลับไปยังไดเร็กทอรีการทำงานเดิมของคุณ บน Local Jupyter Notebooks ให้เปลี่ยนไดเร็กทอรี ครั้งเดียว ช่วยให้คุณไม่ต้องออกคำสั่งซ้ำหลายครั้ง

พื้นที่ detect.py เป็นสคริปต์อนุมานที่เรียกใช้การตรวจจับและบันทึกผลลัพธ์ภายใต้ runs/detect/video_nameซึ่งคุณสามารถระบุ video_name ขณะเรียก detect.py ต้นฉบับ export.py ส่งออกโมเดลไปยังรูปแบบต่างๆ เช่น ONNX, TFLite เป็นต้น train.py สามารถใช้ในการฝึกตัวตรวจจับ YOLOv7 แบบกำหนดเอง (หัวข้อของคู่มืออื่น) และ test.py สามารถใช้ทดสอบตัวตรวจจับได้ (โหลดจากไฟล์ตุ้มน้ำหนัก)

ไดเร็กทอรีเพิ่มเติมหลายไดเร็กทอรีมีการกำหนดค่า (cfg) ข้อมูลตัวอย่าง (inference) ข้อมูลเกี่ยวกับการสร้างแบบจำลองและการกำหนดค่า COCO (data) ฯลฯ

YOLOv7 ขนาด

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

YOLOv7 มีหลายขนาดและเปรียบเทียบกับ MS COCO:

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

รุ่น ขนาดทดสอบ APทดสอบ AP50test AP75test ชุดที่ 1 fps รุ่น 32 เวลาเฉลี่ย
โยลอฟ7 640 ลด 51.4% ลด 69.7% ลด 55.9% 161 FPS ms 2.8
โยโลฟ7-X 640 ลด 53.1% ลด 71.2% ลด 57.8% 114 FPS ms 4.3
โยโลฟ7-W6 1280 ลด 54.9% ลด 72.6% ลด 60.1% 84 FPS ms 7.6
โยโลฟ7-E6 1280 ลด 56.0% ลด 73.5% ลด 61.2% 56 FPS ms 12.3
โยโลฟ7-D6 1280 ลด 56.6% ลด 74.0% ลด 61.8% 44 FPS ms 15.0
โยโลฟ7-E6E 1280 ลด 56.8% ลด 74.4% ลด 62.1% 36 FPS ms 18.7

คุณสามารถเลือกระหว่างฮาร์ดแวร์เหล่านี้ได้ ทั้งนี้ขึ้นอยู่กับฮาร์ดแวร์พื้นฐานที่คุณคาดหวังให้โมเดลทำงานและความแม่นยำที่จำเป็น รุ่นที่เล็กที่สุดยิงได้ 160FPS บนภาพขนาด 640 บน V100! คุณสามารถคาดหวังประสิทธิภาพแบบเรียลไทม์ที่น่าพอใจบน GPU สำหรับผู้บริโภคทั่วไปได้เช่นกัน

การอนุมานวิดีโอด้วย YOLOv7

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

! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img

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

Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR 🚀 v0.1-112-g55b90e1 torch 1.12.1 CPU

Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|██████████████████████████████████████| 72.1M/72.1M [00:18<00:00, 4.02MB/s]

Fusing layers... 
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
 Convert model to Traced-model... 
 traced_script_module saved! 
 model is traced! 
 
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS

โปรดทราบว่าโปรเจ็กต์จะทำงานช้าบนเครื่องที่ใช้ CPU (เช่น 1000ms ต่อขั้นตอนการอนุมานในเอาต์พุตด้านบน รันบน MacBook Pro ที่ใช้ Intel ปี 2017) และเร็วขึ้นอย่างมากบนเครื่องที่ใช้ GPU (ใกล้กับ ~5ms/เฟรม) บน V100) แม้แต่ในระบบที่ใช้ CPU เช่นนี้ yolov7-tiny.pt วิ่งที่ 172ms/frameซึ่งแม้ว่าจะห่างไกลจากเรียลไทม์ แต่ก็ยังเหมาะสมมากสำหรับการจัดการการทำงานเหล่านี้บน CPU

เมื่อรันเสร็จแล้ว คุณจะพบวิดีโอที่ได้ภายใต้ runs/video_1 (ชื่อที่เราระบุใน detect.py โทร) บันทึกเป็น .mp4:

การอนุมานการตรวจจับวัตถุแบบเรียลไทม์ใน Python พร้อมด้วย YOLOv7 PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

การอนุมานเกี่ยวกับรูปภาพ

การอนุมานเกี่ยวกับรูปภาพทำให้กระบวนการเดียวกัน – จัดหา URL ให้กับรูปภาพในระบบไฟล์และเรียก detect.py:

! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt

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

การอนุมานการตรวจจับวัตถุแบบเรียลไทม์ใน Python พร้อมด้วย YOLOv7 PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

สรุป

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

ในคำแนะนำเพิ่มเติม เราจะครอบคลุมการตรวจหาจุดสำคัญและการแบ่งกลุ่มอินสแตนซ์

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

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

การอนุมานการตรวจจับวัตถุแบบเรียลไทม์ใน Python พร้อมด้วย YOLOv7 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
  • การเพิ่มประสิทธิภาพโมเดล Deep Learning สำหรับคอมพิวเตอร์วิทัศน์

ประทับเวลา:

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