การตรวจจับวัตถุด้วย YOLOv8
YOLO ของ ultralytics, model.predict(), กรอบล้อมวัตถุ การกรองตามค่าความเชื่อมั่น และการฝึกแบบกำหนดเอง
การตรวจจับวัตถุด้วย YOLOv8 เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
การจำแนกประเภทกับการตรวจจับ
การจำแนกประเภทรูปภาพจะบอกว่ามีอะไรอยู่ในรูปภาพ ส่วนการตรวจจับวัตถุทำได้มากกว่านั้น โดยค้นหาว่าวัตถุแต่ละชิ้นอยู่ที่ใด แล้ววาดกรอบล้อมวัตถุและป้ายกำกับ YOLO เป็นตัวตรวจจับแบบเรียลไทม์ที่ได้รับความนิยมมากที่สุด
YOLO คืออะไร
YOLO (You Only Look Once หรือมองเพียงครั้งเดียว) ตรวจจับวัตถุทั้งหมดด้วยการส่งข้อมูลไปข้างหน้าเพียงครั้งเดียว จึงเร็วพอสำหรับวิดีโอ YOLOv8 โดย Ultralytics มีส่วนติดต่อโปรแกรมประยุกต์ภาษาไพธอนที่ใช้งานง่ายสำหรับการอนุมานและการฝึก
pip install ultralyticsการโหลดโมเดลที่ฝึกไว้ล่วงหน้า
นำเข้า YOLO และโหลดจุดตรวจ yolov8n.pt คือโมเดล นาโน ซึ่งมีขนาดเล็กและรวดเร็ว รุ่นที่ใหญ่กว่า (s, m, l, x) แลกความเร็วกับความแม่นยำ น้ำหนักจะถูกดาวน์โหลดโดยอัตโนมัติเมื่อใช้งานครั้งแรก
from ultralytics import YOLO
model = YOLO("yolov8n.pt")การทำการอนุมาน
เรียก model.predict (หรือเรียกเพียง model(image)) กับเส้นทางรูปภาพ ที่อยู่เว็บ หรืออาร์เรย์ เมธอดนี้จะคืนรายการผลลัพธ์หนึ่งรายการต่อรูปภาพขาเข้าแต่ละรูป
results = model.predict("street.jpg", conf=0.5)เกณฑ์ conf
พารามิเตอร์ conf กำหนดค่าความเชื่อมั่นขั้นต่ำสำหรับเก็บผลการตรวจจับ ปรับค่าให้สูงขึ้นเพื่อทิ้งกรอบที่ไม่แน่นอน (ผลบวกลวงน้อยลง) หรือลดค่าเพื่อจับวัตถุได้มากขึ้น โดยยอมรับความเสี่ยงที่จะมีสัญญาณรบกวน
results = model.predict("street.jpg", conf=0.25) # more detections
results = model.predict("street.jpg", conf=0.7) # only confident onesการอ่านกรอบ
ผลลัพธ์แต่ละรายการมีออบเจ็กต์ boxes boxes.xyxy ให้พิกัดมุมของกรอบล้อมวัตถุในรูปแบบ [x1, y1, x2, y2] (พิกัดพิกเซลของมุมซ้ายบนและมุมขวาล่าง)
r = results[0]
print(r.boxes.xyxy) # tensor of [x1, y1, x2, y2] rowsคลาสและความเชื่อมั่น
นอกจากกรอบแล้ว คุณยังได้รับ boxes.cls (ดัชนีคลาส) และ boxes.conf (คะแนนความเชื่อมั่น) ใช้ model.names เพื่อแมปดัชนีกับชื่อ
for box in r.boxes:
cls_id = int(box.cls)
conf = float(box.conf)
name = model.names[cls_id]
print(name, round(conf, 2))การแสดงผลลัพธ์เป็นภาพ
results[0].plot() จะคืนอาร์เรย์รูปภาพที่มีคำอธิบายกำกับ พร้อมวาดกรอบและป้ายกำกับไว้แล้ว จึงพร้อมสำหรับการแสดงผลหรือบันทึก เหมาะอย่างยิ่งสำหรับตรวจสอบผลการตรวจจับอย่างรวดเร็ว
annotated = results[0].plot()
import cv2
cv2.imwrite("output.jpg", annotated)การตรวจจับในวิดีโอ
ส่งไฟล์วิดีโอหรือดัชนีของกล้องเว็บแคมให้ YOLO แล้ว YOLO จะประมวลผลทุกเฟรม เมื่อใช้ stream=True ระบบจะคืนผลลัพธ์ทีละเฟรม ทำให้ใช้หน่วยความจำต่ำแม้กับวิดีโอขนาดยาว
for result in model.predict("clip.mp4", stream=True):
boxes = result.boxes
# process each frameการฝึกแบบกำหนดเอง
หากต้องการตรวจจับคลาสวัตถุของคุณเอง ให้ฝึกด้วยชุดข้อมูลที่มีป้ายกำกับและมีคำอธิบายอยู่ในไฟล์ YAML เรียก model.train พร้อมการกำหนดค่าข้อมูล จำนวนยุค และขนาดรูปภาพ YOLO จะปรับแต่งน้ำหนักที่ฝึกไว้ล่วงหน้า
model = YOLO("yolov8n.pt")
model.train(
data="my_dataset.yaml",
epochs=50,
imgsz=640
)YAML ของข้อมูล
YAML ของชุดข้อมูลจะแสดงรายการโฟลเดอร์รูปภาพสำหรับการฝึก/การตรวจสอบและชื่อคลาส YOLO คาดหวังว่ารูปภาพแต่ละรูปจะมีไฟล์ป้ายกำกับที่ตรงกัน ซึ่งมีพิกัดกรอบของวัตถุแต่ละชิ้นในรูปแบบปรับมาตรฐานแล้ว
# my_dataset.yaml
# train: images/train
# val: images/val
# names:
# 0: helmet
# 1: vestตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับ YOLOv8 ของคุณ
สรุป: การตรวจจับวัตถุด้วย YOLOv8
คุณโหลดตัวตรวจจับที่ฝึกไว้ล่วงหน้าด้วย YOLO("yolov8n.pt") เรียกใช้ model.predict(img, conf=0.5) และอ่านผลการตรวจจับจาก results[0].boxes.xyxy, .cls และ .conf คุณแสดงผลเป็นภาพด้วย results[0].plot() และปรับแต่งโมเดลกับคลาสแบบกำหนดเองผ่าน model.train โดยใช้ YAML ของข้อมูล
คำถามที่พบบ่อย
บทเรียน “การตรวจจับวัตถุด้วย YOLOv8” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตรวจจับวัตถุด้วย YOLOv8” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตรวจจับวัตถุด้วย YOLOv8”
YOLO ของ ultralytics, model.predict(), กรอบล้อมวัตถุ การกรองตามค่าความเชื่อมั่น และการฝึกแบบกำหนดเอง คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การตรวจจับวัตถุด้วย YOLOv8” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เทนเซอร์ PyTorch และ Autograd
- ชุดข้อมูลและ DataLoaders แบบกำหนดเอง
- การสร้างและฝึก CNN ด้วย PyTorch
- การตรวจจับวัตถุด้วย YOLOv8