Skip to content

Latest commit

 

History

History
179 lines (101 loc) · 17.5 KB

File metadata and controls

179 lines (101 loc) · 17.5 KB

การตรวจจับวัตถุ

โมเดลการจำแนกภาพที่เราได้ศึกษาไปก่อนหน้านี้จะรับภาพและให้ผลลัพธ์เป็นหมวดหมู่ เช่น คลาส 'ตัวเลข' ในปัญหา MNIST อย่างไรก็ตาม ในหลายกรณีเราไม่ได้ต้องการแค่รู้ว่าภาพนั้นมีวัตถุอะไรบ้าง แต่เราต้องการทราบตำแหน่งที่แน่นอนของวัตถุเหล่านั้นด้วย ซึ่งนี่คือจุดประสงค์ของ การตรวจจับวัตถุ

การตรวจจับวัตถุ

ภาพจาก เว็บไซต์ YOLO v2

วิธีการพื้นฐานสำหรับการตรวจจับวัตถุ

สมมติว่าเราต้องการค้นหาแมวในภาพ วิธีการพื้นฐานที่ง่ายที่สุดสำหรับการตรวจจับวัตถุอาจเป็นดังนี้:

  1. แบ่งภาพออกเป็นหลายๆ ส่วน
  2. ใช้การจำแนกภาพในแต่ละส่วน
  3. ส่วนที่มีการกระตุ้นสูงพอสมควรสามารถพิจารณาได้ว่ามีวัตถุที่เราต้องการอยู่

การตรวจจับวัตถุแบบพื้นฐาน

ภาพจาก สมุดบันทึกการฝึกฝน

อย่างไรก็ตาม วิธีนี้ยังไม่เหมาะสม เพราะมันทำให้การระบุตำแหน่งกรอบของวัตถุไม่แม่นยำมากนัก หากต้องการตำแหน่งที่แม่นยำยิ่งขึ้น เราจำเป็นต้องใช้ การถดถอย (regression) เพื่อทำนายพิกัดของกรอบวัตถุ และสำหรับสิ่งนี้ เราต้องการชุดข้อมูลเฉพาะ

การถดถอยสำหรับการตรวจจับวัตถุ

บทความนี้ มีการแนะนำเบื้องต้นเกี่ยวกับการตรวจจับรูปร่างที่เข้าใจง่าย

ชุดข้อมูลสำหรับการตรวจจับวัตถุ

คุณอาจพบชุดข้อมูลต่อไปนี้สำหรับงานนี้:

  • PASCAL VOC - 20 คลาส
  • COCO - Common Objects in Context. มี 80 คลาส, กรอบวัตถุ และหน้ากากการแบ่งส่วน

COCO

ตัวชี้วัดสำหรับการตรวจจับวัตถุ

การซ้อนทับระหว่างพื้นที่ (Intersection over Union)

ในขณะที่การจำแนกภาพสามารถวัดผลได้ง่ายว่าประสิทธิภาพของอัลกอริทึมเป็นอย่างไร สำหรับการตรวจจับวัตถุ เราต้องวัดทั้งความถูกต้องของคลาส และความแม่นยำของตำแหน่งกรอบวัตถุที่คาดการณ์ได้ สำหรับอย่างหลัง เราใช้ตัวชี้วัดที่เรียกว่า Intersection over Union (IoU) ซึ่งวัดว่าพื้นที่สองส่วน (หรือพื้นที่ใดๆ) ซ้อนทับกันได้ดีเพียงใด

IoU

รูปที่ 2 จาก บทความที่ยอดเยี่ยมเกี่ยวกับ IoU

แนวคิดง่ายๆ คือ เราแบ่งพื้นที่ที่ซ้อนทับกันระหว่างสองรูปด้วยพื้นที่รวมของทั้งสองรูป สำหรับพื้นที่ที่เหมือนกัน IoU จะเท่ากับ 1 ในขณะที่พื้นที่ที่ไม่ซ้อนทับกันเลย IoU จะเท่ากับ 0 ในกรณีอื่นๆ ค่า IoU จะอยู่ระหว่าง 0 ถึง 1 โดยปกติเราจะพิจารณาเฉพาะกรอบวัตถุที่มีค่า IoU สูงกว่าค่าที่กำหนด

ความแม่นยำเฉลี่ย (Average Precision)

สมมติว่าเราต้องการวัดว่าคลาสของวัตถุ $C$ ถูกตรวจจับได้ดีเพียงใด เราใช้ตัวชี้วัด Average Precision ซึ่งคำนวณดังนี้:

  1. พิจารณา Precision-Recall curve ที่แสดงความแม่นยำขึ้นอยู่กับค่าธรณีการตรวจจับ (threshold) (จาก 0 ถึง 1)
  2. ขึ้นอยู่กับ threshold เราจะได้วัตถุที่ตรวจจับได้มากหรือน้อย และค่าความแม่นยำและการเรียกคืนที่แตกต่างกัน
  3. กราฟจะมีลักษณะดังนี้:

ภาพจาก NeuroWorkshop

ค่า Average Precision สำหรับคลาส $C$ คือพื้นที่ใต้กราฟนี้ โดยเฉพาะแกน Recall มักถูกแบ่งออกเป็น 10 ส่วน และค่า Precision จะถูกเฉลี่ยในทุกจุดเหล่านั้น:

$$ AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) $$

AP และ IoU

เราจะพิจารณาเฉพาะการตรวจจับที่มีค่า IoU สูงกว่าค่าที่กำหนด ตัวอย่างเช่น ในชุดข้อมูล PASCAL VOC มักจะกำหนด $\mbox{IoU Threshold} = 0.5$ ในขณะที่ใน COCO ค่า AP จะถูกวัดสำหรับค่าต่างๆ ของ $\mbox{IoU Threshold}$

ภาพจาก NeuroWorkshop

ความแม่นยำเฉลี่ยรวม (Mean Average Precision - mAP)

ตัวชี้วัดหลักสำหรับการตรวจจับวัตถุเรียกว่า Mean Average Precision หรือ mAP ซึ่งเป็นค่า Average Precision ที่เฉลี่ยในทุกคลาสของวัตถุ และบางครั้งยังเฉลี่ยในค่าของ $\mbox{IoU Threshold}$ ด้วย รายละเอียดเพิ่มเติมเกี่ยวกับกระบวนการคำนวณ mAP สามารถดูได้ใน บทความนี้ และ ตัวอย่างโค้ดที่นี่

วิธีการตรวจจับวัตถุที่แตกต่างกัน

มีสองกลุ่มใหญ่ของอัลกอริทึมการตรวจจับวัตถุ:

  • Region Proposal Networks (R-CNN, Fast R-CNN, Faster R-CNN) แนวคิดหลักคือการสร้าง Regions of Interests (ROI) และใช้ CNN กับ ROI เหล่านั้นเพื่อค้นหาการกระตุ้นสูงสุด วิธีนี้คล้ายกับวิธีพื้นฐาน แต่ ROI ถูกสร้างขึ้นอย่างชาญฉลาดมากขึ้น ข้อเสียหลักของวิธีนี้คือช้า เพราะต้องใช้ CNN หลายครั้งกับภาพ
  • One-pass (YOLO, SSD, RetinaNet) วิธีการเหล่านี้ออกแบบเครือข่ายให้ทำนายทั้งคลาสและ ROI ในครั้งเดียว

R-CNN: Region-Based CNN

R-CNN ใช้ Selective Search เพื่อสร้างโครงสร้างลำดับชั้นของ ROI ซึ่งจะถูกส่งผ่าน CNN เพื่อดึงคุณลักษณะ และใช้ SVM-classifiers เพื่อกำหนดคลาสของวัตถุ และการถดถอยเชิงเส้นเพื่อกำหนดพิกัดของ กรอบวัตถุ เอกสารอย่างเป็นทางการ

RCNN

ภาพจาก van de Sande et al. ICCV’11

RCNN-1

ภาพจาก บทความนี้

F-RCNN - Fast R-CNN

วิธีนี้คล้ายกับ R-CNN แต่ ROI ถูกกำหนดหลังจากที่เลเยอร์คอนโวลูชันถูกประยุกต์ใช้แล้ว

FRCNN

ภาพจาก เอกสารอย่างเป็นทางการ, arXiv, 2015

Faster R-CNN

แนวคิดหลักของวิธีนี้คือการใช้เครือข่ายประสาทเพื่อทำนาย ROI ที่เรียกว่า Region Proposal Network เอกสาร, 2016

FasterRCNN

ภาพจาก เอกสารอย่างเป็นทางการ

R-FCN: Region-Based Fully Convolutional Network

อัลกอริทึมนี้เร็วกว่าวิธี Faster R-CNN แนวคิดหลักคือ:

  1. ดึงคุณลักษณะโดยใช้ ResNet-101
  2. คุณลักษณะถูกประมวลผลโดย Position-Sensitive Score Map วัตถุแต่ละตัวจาก $C$ คลาสถูกแบ่งออกเป็น $k\times k$ พื้นที่ และเราฝึกให้ทำนายส่วนต่างๆ ของวัตถุ
  3. สำหรับแต่ละส่วนจาก $k\times k$ พื้นที่ เครือข่ายทั้งหมดจะโหวตให้คลาสของวัตถุ และคลาสที่มีคะแนนโหวตสูงสุดจะถูกเลือก

r-fcn image

ภาพจาก เอกสารอย่างเป็นทางการ

YOLO - You Only Look Once

YOLO เป็นอัลกอริทึมแบบเรียลไทม์ที่ทำงานในครั้งเดียว แนวคิดหลักคือ:

  • ภาพถูกแบ่งออกเป็น $S\times S$ พื้นที่
  • สำหรับแต่ละพื้นที่ CNN ทำนายวัตถุ $n$ ชนิด, พิกัด กรอบวัตถุ และ ความมั่นใจ=ความน่าจะเป็น * IoU

YOLO

ภาพจาก เอกสารอย่างเป็นทางการ

อัลกอริทึมอื่นๆ

✍️ แบบฝึกหัด: การตรวจจับวัตถุ

เรียนรู้เพิ่มเติมในสมุดบันทึกต่อไปนี้:

ObjectDetection.ipynb

สรุป

ในบทเรียนนี้ คุณได้สำรวจวิธีการต่างๆ ในการตรวจจับวัตถุอย่างรวดเร็ว!

🚀 ความท้าทาย

อ่านบทความและสมุดบันทึกเกี่ยวกับ YOLO และลองใช้งานด้วยตัวคุณเอง

ทบทวนและศึกษาด้วยตนเอง