เทคโนโลยีการตรวจจับวัตถุของการมองเห็นด้วยคอมพิวเตอร์เป็นสิ่งจำเป็นสำหรับการใช้งานจำนวนมาก เราใช้มันในวิทยาการหุ่นยนต์ อุปกรณ์เฝ้าระวัง รถยนต์ไร้คนขับ และอื่นๆ อีกมากมาย ดังนั้นเราจึงสามารถค้นหาและจดจำบางสิ่งในรูปภาพหรือวิดีโอได้
เป็นที่รู้จักมากที่สุดแห่งหนึ่ง อัลกอริธึมการระบุวัตถุคือ YOLO (คุณมองเพียงครั้งเดียว) ชุดโมเดล โมเดลเหล่านี้สร้างโดย บริษัท อัลตราไลติกส์ แอลแอลซี
เวอร์ชันล่าสุดของซีรี่ส์นี้คือ YOLOv5 และเป็นรูปแบบการระบุวัตถุที่รวดเร็วและแม่นยำที่สุดในตลาด ความสามารถของแบบจำลองในการสรุปข้อมูลใหม่ได้รับการปรับปรุงอย่างมาก นอกจากนี้ยังมีคุณสมบัติมากมายที่ทำให้ทำงานได้ดีกว่าการทำซ้ำก่อนหน้านี้
YOLOv5 นั้นยอดเยี่ยมสำหรับแอพพลิเคชั่นแบบเรียลไทม์ เนื่องจากสามารถประมวลผลรูปภาพในอัตราสูงถึง 1000 เฟรมต่อวินาทีใน GPU ตัวเดียว
ในบทความนี้ เราจะแนะนำ YOLOv5 และดูรายละเอียดเกี่ยวกับขอบเขตการใช้งานของมัน
การเดินทางของ YOLO: จาก YOLO ถึง YOLOv5
โจเซฟ เรดมอน และคณะ เดิมเปิดตัว YOLO ซึ่งเป็นชุดของแบบจำลองการระบุวัตถุในปี 2016 แบบจำลอง YOLO เริ่มต้นสามารถระบุวัตถุได้แบบเรียลไทม์ อย่างไรก็ตาม มีความแม่นยำต่ำเมื่อเทียบกับรุ่นอื่นๆ ในขณะนั้น
YOLO เวอร์ชันอัปเกรดหลายเวอร์ชันได้รับการเผยแพร่ตลอดหลายปีที่ผ่านมา และในที่สุด Ultralytics LLC ได้สร้างซีรี่ส์ YOLO รุ่นใหม่ล่าสุด YOLOv5
YOLOv5 เป็นแบบจำลองการระบุวัตถุที่แม่นยำและรวดเร็วที่สุดที่มีอยู่ในปัจจุบัน
คุณลักษณะที่สำคัญ
กล่องสมอ
YOLOv5 ทำนายกล่องขอบเขตสำหรับวัตถุในภาพโดยใช้กล่องสมอ แบบจำลองจะคาดการณ์ว่าช่องใดในกรอบที่กำหนดไว้ล่วงหน้าซึ่งมีอัตราส่วนกว้างยาวต่างๆ ตรงกับรายการในรูปภาพมากที่สุดโดยใช้สมอกล่อง นี่คือกล่องที่กำหนดไว้ล่วงหน้า
และช่วยให้ YOLOv5 สามารถจดจำและค้นหารายการในรูปภาพได้อย่างแม่นยำ
การเพิ่มข้อมูลโมเสค
เมื่อทำการฝึกอบรม YOLOv5 ใช้วิธีที่เรียกว่าโมเสค การเสริมข้อมูล. เพื่อพัฒนาภาพการฝึกที่สดใหม่ แบบจำลองของเราจะสุ่มรวมแพตช์ของภาพถ่ายหลายภาพเข้าด้วยกัน เป็นผลให้โมเดลมีความยืดหยุ่นและเชื่อถือได้มากขึ้น ดังนั้นจึงได้รับการสรุปข้อมูลใหม่และลดการ overfitting
ไปป์ไลน์การฝึกอบรมที่ไม่เหมือนใคร
ไปป์ไลน์การฝึกอบรมที่ไม่เหมือนใครซึ่งผสมผสานการควบคุมดูแลและ การเรียนรู้โดยไม่ได้รับการดูแล ถูกนำมาใช้.
ดังนั้น โมเดลจะเรียนรู้จากตัวอย่างที่มีขนาดเล็กกว่าและใช้อินพุตที่ไม่มีป้ายกำกับอย่างมีประสิทธิภาพ สิ่งนี้ช่วยเพิ่มประสิทธิภาพของโมเดลและเพิ่มขีดความสามารถในการสรุปข้อมูลอินพุตใหม่
เลเยอร์ที่เหลือและไม่เหลือ
สถาปัตยกรรมของ YOLOv5 รวมเลเยอร์ที่เหลือและไม่เหลือ ด้วยการปล่อยให้การไล่ระดับสีไหลไปตามเลเยอร์ เลเยอร์ที่เหลือจะช่วยโมเดลในการเรียนรู้คุณสมบัติที่ยาก นอกจากนี้ เลเยอร์ที่ไม่ตกค้างยังช่วยให้โมเดลเข้าใจภาพที่ป้อนเข้าได้อย่างครอบคลุมยิ่งขึ้น เป็นผลให้ YOLOv5 สามารถทำงานได้แม่นยำและมีประสิทธิภาพมากขึ้น
วิธีใช้ YOLOv5
การติดตั้ง
การติดตั้ง YOLOv5 อาจเสร็จสิ้นอย่างรวดเร็วโดยใช้ pip Pip เป็นผู้จัดการแพ็คเกจ Python ขั้นตอนทั่วไปสำหรับการติดตั้ง YOLOv5 มีดังนี้:
1- ติดตั้ง PyTorch: เนื่องจาก YOLOv5 ใช้เฟรมเวิร์ก PyTorch คุณต้องติดตั้ง PyTorch ก่อน
pip install torch torchvision
2. ติดตั้ง CUDA: คุณต้องติดตั้ง CUDA หากคุณต้องการเรียกใช้ YOLOv5 บน GPU
3. ติดตั้ง YOLOv5: หลังจากตั้งค่า PyTorch และ CUDA แล้ว ให้ใช้คำสั่งต่อไปนี้เพื่อดาวน์โหลด YOLOv5
pip install yolov5
4-หลังจากการติดตั้ง YOLOv5 คุณต้องดาวน์โหลดน้ำหนักที่ฝึกไว้ล่วงหน้า น้ำหนักที่ฝึกไว้ล่วงหน้ามีอยู่ใน Ultralytics GitHub repo
ไปที่ส่วน "น้ำหนัก" ของเว็บไซต์โดยเลื่อนลง คุณสามารถดาวน์โหลดน้ำหนักที่ฝึกไว้ล่วงหน้าได้จากรายการที่นี่
5. เลือกน้ำหนักที่ได้รับการฝึกอบรมแล้วและเหมาะสมกับกรณีการใช้งานของคุณมากที่สุด ชุดข้อมูลหรือรุ่น YOLOv5 เฉพาะที่เรียนรู้น้ำหนักอาจใช้เพื่อจำกัดรายการให้แคบลง
6- หลังจากเลือกน้ำหนักที่เหมาะสมแล้ว ให้เลือกน้ำหนักโดยคลิกปุ่ม "ดาวน์โหลด" ข้างๆ น้ำหนักจะพร้อมให้ดาวน์โหลดเป็น ไฟล์ .pt
7- ถ่ายโอนน้ำหนักที่ดาวน์โหลดไปยังไดเร็กทอรี นี่คือที่ที่สคริปต์การตรวจจับของคุณจะทำงาน
8- ณ จุดนี้ คุณสามารถเรียกใช้การตรวจจับวัตถุในภาพถ่ายหรือวิดีโอของคุณโดยใช้น้ำหนักที่ฝึกไว้ล่วงหน้าในสคริปต์การตรวจจับของคุณ
เตรียมข้อมูล
คุณต้องดำเนินการต่อไปนี้เพื่อให้ข้อมูลพร้อมใช้งานกับ YOLOv5:
1. รวบรวมข้อมูล: ขั้นตอนแรกคือการรวบรวมข้อมูลรูปภาพหรือวิดีโอที่คุณต้องการ การตรวจจับวัตถุ. สิ่งที่คุณต้องการตรวจจับควรมีอยู่ในภาพถ่ายหรือวิดีโอ
2- จัดรูปแบบข้อมูล: คุณสามารถนำเข้ารูปภาพไปยังสคริปต์ของคุณหากคุณใช้ คุณต้องเปลี่ยนวิดีโอเป็นชุดรูปภาพหากคุณวางแผนที่จะใช้ คุณสามารถแยกเฟรมออกจากภาพยนตร์โดยใช้ไลบรารีเช่น OpenCV
import cv2
img = cv2.imread('path/to/image')
ด้วยไลบรารี OpenCV คุณสามารถใช้คำสั่งต่อไปนี้เพื่อเปลี่ยนวิดีโอเป็นชุดรูปภาพ:
import cv2
cap = cv2.VideoCapture('path/to/video')
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3. ติดป้ายกำกับข้อมูล: คุณต้องติดป้ายกำกับข้อมูลหากคุณใช้ชุดข้อมูลของคุณ วาดกรอบล้อมรอบรายการที่คุณต้องการระบุในแต่ละเฟรมของภาพ เป็นขั้นตอนการติดฉลากข้อมูล คุณอาจใช้เครื่องมือหลายอย่างเพื่อช่วยคุณในการดำเนินการนี้ รวมถึง LabelImg และ RectLabel
4- คุณต้องแบ่งข้อมูลออกเป็นชุดการฝึกและการทดสอบหลังจากที่คุณติดแท็กแล้ว นี่เป็นสิ่งสำคัญสำหรับการประเมินว่าโมเดลของคุณทำงานได้ดีเพียงใด
5. สุดท้าย คุณอาจต้องประมวลผลข้อมูลล่วงหน้าก่อนการฝึกอบรมหรือการทดสอบ สิ่งนี้อาจนำมาซึ่งการปรับขนาดรูปภาพหรือวิดีโอ การกำหนดมาตรฐานของค่าพิกเซล หรือการใช้วิธีเพิ่มข้อมูล
หลังจากทำตามขั้นตอนเหล่านี้แล้ว ข้อมูลของคุณก็พร้อมแล้ว
เรียกใช้สคริปต์การตรวจจับ
นี่คือภาพประกอบของสคริปต์การตรวจจับที่วิเคราะห์รูปภาพและค้นหาวัตถุ
import yolov5
import cv2
# Pre-trained weights should be loaded.
weights = 'path/to/weights.pt'
# Set the detection confidence level
conf_thres = 0.5
# Set the Non-Maxima Suppression (NMS) threshold
nms_thres = 0.5
# Create the detector object
detector = yolov5.YOLOv5(weights, conf_thres, nms_thres)
# Load the image
img = cv2.imread('path/to/image')
# Perform object detection
detections = detector.detect(img)
# Print the detections
for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections:
print("Object:", classes[int(cls_pred)])
print("Confidence:", conf)
print("Bounding box:", (x1, y1, x2, y2))
การโพสต์
การปราบปรามแบบไม่สูงสุดเป็นหนึ่งในเทคนิคหลังการประมวลผลที่ใช้บ่อยที่สุดในการตรวจจับวัตถุ (NMS) เราใช้ NMS เพื่อกำจัดกล่องขอบเขตที่ทับซ้อนกันสำหรับวัตถุเดียวกัน ในการดำเนินการ NMS ในการตรวจจับ เราสามารถใช้เมธอด cv2.dnn.NMSBoxes() ของไลบรารี OpenCV
ต่อไปนี้คือตัวอย่างวิธีดำเนินการตรวจจับหลังการประมวลผลโดยใช้ NMS
import cv2
# Perform Non-Maxima Suppression (NMS)
ดัชนี = cv2.dnn.NMSBoxes (การตรวจหา, ความเชื่อมั่น, conf_thres, nms_thres)
การแสดง
ในกรณีของการสร้างภาพ เราสามารถใช้ไลบรารีเช่น OpenCV ได้อีกครั้ง เราสามารถแสดงกรอบล้อมรอบวัตถุที่ค้นพบบนรูปภาพหรือวิดีโอต้นฉบับ ในการวาดกรอบขอบเขตของรูปภาพ ให้ใช้เมธอด cv2.rectangle() ต่อไปนี้คือวิธีดูการตรวจจับบนภาพต้นฉบับ:
นำเข้า cv2
# Draw the bounding boxes on the image
สำหรับฉันในดัชนี:
i = i[0]
x1, y1, x2, y2 = detections[i][0], detections[i][1], detections[i][2], detections[i][3]
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.putText(img, classes[class_ids[i]], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# Show the image
cv2.imshow("Object Detection", img)
cv2
การใช้งาน
YOLOv5 เป็นแบบจำลองการระบุวัตถุที่แข็งแกร่ง ดังนั้นเราจึงสามารถใช้มันได้ในหลาย ๆ สถานการณ์ในโลกแห่งความเป็นจริง หนึ่งในการใช้งานที่โดดเด่นที่สุดคือในรถยนต์ไร้คนขับ YOLOv5 สามารถระบุรายการแบบเรียลไทม์ เช่น รถยนต์และสัญญาณไฟจราจร
ในระบบเฝ้าระวัง เราสามารถใช้ YOLOv5 เพื่อจดจำและติดตามวัตถุในสตรีมวิดีโอสด นอกจากนี้ YOLOv5 ยังเป็นทรัพย์สินที่ยอดเยี่ยมในด้านวิทยาการหุ่นยนต์ สามารถช่วยให้หุ่นยนต์ตรวจจับและเข้าใจสภาพแวดล้อมได้ สิ่งนี้สำคัญมากสำหรับกิจกรรมต่างๆ เช่น การนำทางและการจัดการ
YOLOv5 ยังอาจใช้ในอุตสาหกรรมใดๆ ที่ต้องการการตรวจจับวัตถุ เช่น การค้าปลีก กีฬา การแพทย์ และการรักษาความปลอดภัย
สรุป
ในที่สุด YOLOv5 เป็นรุ่นล่าสุดและซับซ้อนที่สุดของตระกูล YOLO การตรวจจับวัตถุ โมเดล
. นอกจากนี้ยังสามารถกล่าวได้ว่าเป็นแบบจำลองการตรวจจับวัตถุที่แม่นยำที่สุดที่มีอยู่ ด้วยความแม่นยำและความเร็วสูง คุณจึงเลือกใช้ได้อย่างปลอดภัยสำหรับโครงการตรวจจับวัตถุของคุณ
เรสกี อากัส
ฉันทำบันทึกแรกเกี่ยวกับการตรวจจับยานพาหนะด้วย yolov5 และเว็บนี้ช่วยค้นหาข้อมูลเกี่ยวกับสิ่งนั้น
ฉันสนใจเกี่ยวกับ AI มาก
หากคุณมีคำถามมากมายเกี่ยวกับ AI คุณอาจช่วยฉันได้
ขอขอบคุณ