0Pricing
Learn AI with Python · บทเรียน

การตรวจจับวัตถุด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เทนเซอร์ PyTorch และ Autograd
  2. ชุดข้อมูลและ DataLoaders แบบกำหนดเอง
  3. การสร้างและฝึก CNN ด้วย PyTorch
  4. การตรวจจับวัตถุด้วย YOLOv8
← กลับไปที่ Learn AI with Python