การทำความเข้าใจ YOLO: วิธีการทำงานและตัวอย่างโค้ด

บทนำเกี่ยวกับ YOLO

YOLO (You Only Look Once) เป็นอัลกอริธึมการตรวจจับวัตถุที่ล้ำสมัยซึ่งขึ้นชื่อเรื่องความเร็วและความแม่นยำ ไม่เหมือนกับโมเดลแบบดั้งเดิมที่ใช้วิธีการเสนอพื้นที่ (เช่น Faster R-CNN) YOLO ปฏิบัติต่อการตรวจจับวัตถุเป็น ปัญหาการถดถอยเดียว โดยคาดการณ์กรอบขอบเขตและความน่าจะเป็นของคลาสในครั้งเดียว

บล็อกนี้จะอธิบายว่า YOLO ทำงานอย่างไรและให้ตัวอย่างโค้ดเพื่อช่วยให้คุณเริ่มต้นกับ YOLOv8


วิธีการทำงานของ YOLO

1. การแบ่งภาพเป็นกริดเพื่อทำนายผล

YOLO แบ่งภาพออกเป็น กริด S x S แต่ละเซลล์ของกริดจะทำนาย:

  • กรอบขอบเขต (x, y, กว้าง, สูง)
  • คะแนนความมั่นใจ
  • ความน่าจะเป็นของคลาส

แต่ละเซลล์จะรับผิดชอบการตรวจจับวัตถุที่มีศูนย์กลางอยู่ภายในเซลล์นั้น

2. การประมวลผลภาพผ่านโครงข่ายประสาทเทียมเพียงครั้งเดียว

  • แตกต่างจากเครือข่ายที่ใช้การเสนอพื้นที่ (เช่น R-CNN) YOLO ประมวลผลภาพทั้งหมดในครั้งเดียว
  • ทำให้มี ความเร็วสูงมาก ขณะยังคงรักษาความแม่นยำที่ดี

3. การกรองกรอบขอบเขต

YOLO ใช้ Non-Maximum Suppression (NMS) เพื่อลบกรอบที่ซ้อนกันออกและคงไว้เฉพาะผลลัพธ์ที่มีความมั่นใจสูงสุด


การติดตั้ง YOLOv8

หากต้องการใช้ YOLO ให้ติดตั้ง Ultralytics YOLO library:

pip install ultralytics

ตัวอย่างโค้ด: การใช้ YOLO กับภาพนิ่ง

1. นำเข้าไลบรารีที่จำเป็น

from ultralytics import YOLO
import cv2
import matplotlib.pyplot as plt

2. โหลดโมเดล YOLO

# โหลดโมเดล YOLOv8 ที่ผ่านการฝึกมาแล้ว
model = YOLO("yolov8n.pt")  # 'n' (nano) เป็นเวอร์ชันที่เล็กที่สุด; มีเวอร์ชัน 's', 'm', 'l', 'x'

3. รัน YOLO บนภาพนิ่ง

# ใช้ YOLO กับภาพ
image_path = "test.jpg"  # แทนที่ด้วยพาธของภาพของคุณ
results = model(image_path)

# แสดงผลลัพธ์
results.show()  # แสดงวัตถุที่ตรวจพบ

4. แสดงผลลัพธ์ด้วย Matplotlib

# แปลงผลลัพธ์เป็นรูปแบบ OpenCV และแสดง
for result in results:
    img = result.plot()  # วาดกรอบขอบเขต
    plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    plt.axis("off")
    plt.show()

5. ดึงข้อมูลวัตถุที่ตรวจพบ

# พิมพ์ข้อมูลวัตถุที่ตรวจพบ
for result in results:
    for box in result.boxes:
        print(f"คลาส: {model.names[int(box.cls)]}, ความมั่นใจ: {box.conf.item()}, กรอบขอบเขต: {box.xyxy.tolist()}")

การรัน YOLO กับวิดีโอ (เว็บแคมหรือไฟล์วิดีโอ)

# เปิดวิดีโอ (0 สำหรับเว็บแคม หรือระบุพาธของไฟล์วิดีโอ)
cap = cv2.VideoCapture(0)

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    # ใช้ YOLO กับเฟรม
    results = model(frame)

    # วาดผลลัพธ์ลงบนเฟรม
    frame = results[0].plot()

    # แสดงเฟรม
    cv2.imshow("YOLOv8 Detection", frame)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

กรณีการใช้งานของ YOLO

  • การรักษาความปลอดภัย & การเฝ้าระวัง (การตรวจจับอาวุธ, การจดจำใบหน้า)
  • ยานยนต์อัตโนมัติ (การตรวจจับวัตถุแบบเรียลไทม์)
  • การค้าปลีก & คลังสินค้า (การชำระเงินอัตโนมัติ, การติดตามสินค้าคงคลัง)
  • การแพทย์ (การตรวจหามะเร็ง, การวินิจฉัยโรค)
  • โดรน & หุ่นยนต์ (การติดตามและติดตามวัตถุ)
  • การอนุรักษ์สัตว์ป่า (การติดตามสัตว์ที่ใกล้สูญพันธุ์, การป้องกันการล่าสัตว์)
  • การเกษตร (การตรวจจับโรคพืช, การนับสัตว์เลี้ยง, การตรวจสอบสุขภาพของพืช)
  • การผลิต & การควบคุมคุณภาพ (การตรวจจับข้อบกพร่องในสายการผลิต)
  • การวิเคราะห์กีฬา (การติดตามการเคลื่อนไหวของผู้เล่นและวัตถุในสนามแบบเรียลไทม์)

สรุป

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

ต้องการฝึก YOLO บนวัตถุที่กำหนดเองหรือไม่? ติดตามคำแนะนำของเราในครั้งถัดไป! 🚀

Related Posts

Articles

Our Products


Related Posts

Articles

Our Products


Get in Touch with us

Speak to Us or Whatsapp(+66) 83001 0222

Chat with Us on LINEiiitum1984

Our HeadquartersChanthaburi, Thailand