การทำความเข้าใจ 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
- 量子コンピューティングはAIのボトルネックを解決できるのか?
- ควอนตัมคอมพิวติ้งสามารถแก้ไขปัญหาคอขวดของ AI ได้หรือไม่?
- Can Quantum Computing Solve AI’s Biggest Bottlenecks
- วิธีฝึก YOLO ด้วยชุดข้อมูลที่กำหนดเอง: คำแนะนำทีละขั้นตอน
- カスタムデータセットでYOLOをトレーニングする方法:ステップバイステップガイド
- Training YOLO with a Custom Dataset: A Step-by-Step Guide
- WazuhとAIの統合による高度な脅威検出
- การผสานรวม AI กับ Wazuh เพื่อการตรวจจับภัยคุกคามขั้นสูง
- Integrating AI with Wazuh for Advanced Threat Detection
- AIはどのようにして偽造された高級品を検出するのか?
Articles
- 🚀 LangChainを活用したエージェントAIチャットボットの開発
- วิธีสร้างแชทบอท AI อัจฉริยะด้วย LangChain
- 🚀 How to Build an Agentic AI Chatbot with LangChain
- Wazuhの理解: アーキテクチャ、ユースケース、実践的な応用
- ทำความเข้าใจ Wazuh: สถาปัตยกรรม, กรณีการใช้งาน และการนำไปใช้จริง
- Understanding Wazuh: Architecture, Use Cases, and Applications
- Djangoでの耐障害性ソフトウェア設計
- การออกแบบซอฟต์แวร์ที่ทนต่อความล้มเหลวด้วย Django
- Designing Fault-Tolerant Software with Django
- 実際に求められているオープンソースプロジェクトのアイデアを見つける方法
- วิธีค้นหาไอเดียโครงการโอเพ่นซอร์สที่ผู้คนต้องการจริง ๆ
- How to Find Open-Source Project Ideas That People Actually Want
- アウトプットの力:優れたプログラマーになるための方法
- พลังของการลงมือทำ: วิธีพัฒนาตัวเองให้เป็นโปรแกรมเมอร์ที่เก่งขึ้น
- The Power of Output: How to Become a Better Programmer
- 量子コンピューティングはAIのボトルネックを解決できるのか?
- ควอนตัมคอมพิวติ้งสามารถแก้ไขปัญหาคอขวดของ AI ได้หรือไม่?
- Can Quantum Computing Solve AI's Biggest Bottlenecks
- 提高 Django 性能:开发者和企业主的缓存指南
- Django のパフォーマンス向上: 開発者とビジネスオーナーのためのキャッシュガイド
Our Products
Related Posts
- 量子コンピューティングはAIのボトルネックを解決できるのか?
- ควอนตัมคอมพิวติ้งสามารถแก้ไขปัญหาคอขวดของ AI ได้หรือไม่?
- Can Quantum Computing Solve AI’s Biggest Bottlenecks
- วิธีฝึก YOLO ด้วยชุดข้อมูลที่กำหนดเอง: คำแนะนำทีละขั้นตอน
- カスタムデータセットでYOLOをトレーニングする方法:ステップバイステップガイド
- Training YOLO with a Custom Dataset: A Step-by-Step Guide
- WazuhとAIの統合による高度な脅威検出
- การผสานรวม AI กับ Wazuh เพื่อการตรวจจับภัยคุกคามขั้นสูง
- Integrating AI with Wazuh for Advanced Threat Detection
- AIはどのようにして偽造された高級品を検出するのか?
Articles
- 🚀 LangChainを活用したエージェントAIチャットボットの開発
- วิธีสร้างแชทบอท AI อัจฉริยะด้วย LangChain
- 🚀 How to Build an Agentic AI Chatbot with LangChain
- Wazuhの理解: アーキテクチャ、ユースケース、実践的な応用
- ทำความเข้าใจ Wazuh: สถาปัตยกรรม, กรณีการใช้งาน และการนำไปใช้จริง
- Understanding Wazuh: Architecture, Use Cases, and Applications
- Djangoでの耐障害性ソフトウェア設計
- การออกแบบซอฟต์แวร์ที่ทนต่อความล้มเหลวด้วย Django
- Designing Fault-Tolerant Software with Django
- 実際に求められているオープンソースプロジェクトのアイデアを見つける方法
- วิธีค้นหาไอเดียโครงการโอเพ่นซอร์สที่ผู้คนต้องการจริง ๆ
- How to Find Open-Source Project Ideas That People Actually Want
- アウトプットの力:優れたプログラマーになるための方法
- พลังของการลงมือทำ: วิธีพัฒนาตัวเองให้เป็นโปรแกรมเมอร์ที่เก่งขึ้น
- The Power of Output: How to Become a Better Programmer
- 量子コンピューティングはAIのボトルネックを解決できるのか?
- ควอนตัมคอมพิวติ้งสามารถแก้ไขปัญหาคอขวดของ AI ได้หรือไม่?
- Can Quantum Computing Solve AI's Biggest Bottlenecks
- 提高 Django 性能:开发者和企业主的缓存指南
- Django のパフォーマンス向上: 開発者とビジネスオーナーのためのキャッシュガイド