การตรวจจับวัตถุด้วยรูปภาพ (Image Detection)

การตรวจจับวัตถุด้วยรูปภาพ (Image Detection)

13 ธันวาคม 2566

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

ประเภทของการตรวจจับวัตถุด้วยรูปภาพ

ก่อนอื่นเลย คนที่เข้ามาใหม่หรือยังไม่คุ้นชินกับเรื่องรูปเท่าไหร่ อาจจะมีคำถามว่าเราทำ Image Detection ไปทำไม แล้วมีตัวอย่างให้เห็นภาพชัด ๆ ไหม

การตรวจจับวัตถุสามารถแบ่งออกเป็นสามประเภทหลักๆขึ้นอยู่กับเป้าหมายในการใช้งานโดยจะมี

  • Image Classification เป็นการใช้ AI ให้มันบอกเราว่ารูปที่มีมันคือรูปของอะไร เช่น รูปตัวอย่างดังต่อไปนี้
น้องแมว

แน่นอนว่าทุกคนรู้ว่ามันคือ แมว แต่สำหรับ AI นั้น เราต้องส่งรูปเข้าไปพร้อมกับผลลัพธ์ว่า นี่คือรูปแมวนะ เพื่อให้มันเรียนรู้เรื่อย ๆ และนี่คืองานหลักของสิ่งที่เรียกว่า Image Classification

  • ต่อมาถ้าเราต้องการรู้เพิ่มเติมว่า แล้วแมวมันอยู่ตรงไหนของรูปหล่ะ ? ถ้าได้โจทย์มาเป็นแบบนี้ จะเป็นโจทย์อีกแนวที่เรียกว่า Image Detection โดยมันจะบอกถึงตำแหน่งของรูปด้วย เช่น
น้องแมวแอนด์เดอะแก๊งค์

จากรูป เราจะทราบเลยว่าน้องหมาอยู่ตรงไหนของรูป รวมถึงน้องแมว และน้องเป็ด ทำให้เราได้ insight เพิ่มเติมจากผลลัพธ์ (ซึ่งจะเป็นงานหลักของเราในบทความนี้) จากงานแนวนี้นั้นจะเพิ่มเติมจาก Image Classification ตรงที่เราต้องบอก AI ไปด้วยว่า แมวอยู่พิกัดตรงนี้ในรูปนะ

  • และอีกโจทย์คือ ในบางครั้งเราอยากจะแค่เอาเฉพาะส่วนของรูปที่สำคัญ ในโจทย์นี้จะเป็น Image Segmentation ดังรูปด้านล่างครับ
และภาพรวมความแตกต่างของโจทย์หลักๆคือ

สำหรับบทความนี้เราจะโฟกัสไปที่ Image Detection (ภาพกลาง) เพื่อที่จะดูว่าตำแหน่งของรูปนั้นอยู่ตรงไหนครับ

การนำ Image Detection ไปใช้ประโยชน์

การนำ Image Detection ไปใช้ประโยชน์ จะขึ้นอยู่กับโจทย์ (Scope) เลยครับ ตัวอย่างเช่น

  • Medical Sector

บางครั้งเวลาที่มีรูป X-ray ออกมา ในการตรวจเช็ครูปนั้นจะต้องใช้หมอเฉพาะทางที่มีจำกัด ถ้าเรามี AI คอยช่วย Focus หรือตีกรอบส่วนที่มีปัญหา จะลดเวลาในส่วนนี้มาก รวมถึงอาจจะใช้งานร่วมกับ Image Segmentation ได้ จากรูปด้านล่าง เขาวิเคราะห์เรื่องตำแหน่งของเนื้องอกในสมองครับ

  • Traffic Sector

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

YOLOv5 คืออะไร

หลังจากที่เราเห็นภาพรวมในของ Image Detection แล้ว เชื่อว่าหลายท่านคงเริ่มอยากจะลองหัดทำและสร้างระบบขึ้นมา เราจะมาเข้าหัวข้อหลักของเราคือ YOLOv5 และแน่นอนว่า YOLO ในที่นี้ไม่ได้แปลว่า ‘You only live once’ แต่มันคือ ‘You only look once’ ซึ่งจะเป็นหลักการทำงานของมัน และในปัจจุบันมีถึง Version 8 แล้วด้วยกัน (As of Nov 2023) แต่ต้องบอกว่า YOLOv5 คือเวอร์ชั่นที่ยังคงได้รับความนิยมอย่างมากจาก Github Page ที่ยังมีการอัพเดทเรื่อยๆ โดยตัว YOLO นี้มันคือสถาปัตยกรรมที่ทาง ultralytics ได้ออกแบบไว้เพื่อทำ Image Detection ได้อย่างรวดเร็วและมีประสิทธิภาพ

แน่นอนว่าการทำ Image Detection นั้นมีหลายวิธี ไม่น่าจะเป็น R-CNN, Faster R-CNN, EfficientDet แต่ข้อดีของ YOLO คือจะมีจุดเด่นที่ความไวในการวิเคราะห์ข้อมูล ทำให้เราเลือกใช้ตัว YOLO นี้และมี Document ที่พร้อม รวมถึง Customized ให้เข้าได้ข้อมูลและเป้าหมายของเราได้

อย่างไรก็ตาม หลายคนที่เคยเล่นเรื่องรูปภาพมาอาจจะสงสัยว่า Image Detection ก็มีวิธีคลาสสิก เช่น Keypoint Detector ได้ แต่พวกวิธี SIFT มันจะมีประเด็นเรื่องของความเร็วครับ

โดยสำหรับ YOLO นี้ข้อดีคือมันเร็วอย่างที่บอกไป เนื่องจากมันจะวิเคราะห์จากรูปครั้งเดียว แล้วทำ Label ให้ครอบคลุมทั้งรูป

หลักการทำงานของมันคือจากรูป 1 รูปเต็มๆ มันจะทำการแบ่ง Grid cell ออกมาเป็น n x n grid (จากรูปน้องหมา แบ่งไป 13 grid ยิ่งแบ่งมากก็จะละเอียด trade off กับการคำนวณ)

แล้วในแต่ละ grid (เช่นบนซ้ายสุด) เราก็ต้องใส่ Label ให้มัน(ถ้ามี) เช่น

[Pc, bx, by, bh, bw, c1, c2 ,… , cn]

โดยที่ Pc คือ Probability ที่มีวัตถุอยู่ใน Grid นั้นๆ ถ้าไม่มีคือ 0 ถ้ามีคือ 1

bx, by คือตำแหน่งตรงกลางของ Object ว่าอยู่พิกัดไหน

bh, bw คือขนาดความสูงและกว้างของ Object ว่าสูง, กว้างขนาดไหน

และ c1, c2, .., cn คือ ผลลัพธ์ว่าเป็น class อะไร ถ้าโจทย์เรามีแค่ detect น้องหมา ก็จะมี class เดียว และ grid นั้นมีค่าเป็น 1 แต่ถ้ามีหลาย Object ก็จะมีเลขต่อๆไป

(เช่น Grid ตรงกลางของน้องหมา จะมี C1 = 1 โดย Grid อื่น C1 = 0)

แต่ถ้าในกรณี 1 grid มีหลาย Object ละ? ทำยังไง

จาก Label ด้านบน มันจะรับได้เฉพาะ 1 grid คือ 1 Object แต่กรณีถ้ามีหลาย Object เราจะใช้หลักการที่เรียกว่า Anchor Box โดยเราสามารถกำหนดจำนวน Box นี้ได้ (เช่น 2) ก็จะมี Label แบบด้านบน 2 อันใน 1 Gridได้ (เราสามารถกำหนดเลขนี้ได้) และตัว YOLO ก็จะคำนวณให้ว่ารูปนั้นมันใกล้ Anchor ไหนสุดจากค่า IOU ก็จะถูกกำหนดไปที่ Anchor นั้น

แต่สำหรับคนที่เริ่ม YOLO นั้น อาจจะไม่ต้องสนใจส่วนนี้ก็ได้ ตัว YOLO มันจะคำนวณมาให้เลย เราสามารถทำแค่บอกว่ามีตำแหน่ง Object อะไรในรูปพอครับ

IOU & NMS

อีก Keyword ที่สำคัญคือ Intersection over Union (IOU) และ Non-max suppression (NMS) ที่ควรรู้ครับ

IOU จะมามีส่วนหลักๆหลายส่วนใน YOLO เช่นเวลาโมเดลทำนายออกมา มันอาจจะทำนายรูปรถเดียวกันแต่หลายกล่องได้ เช่น

เราจึงต้องใช้ metric IOU ในเลือกกล่องเดียวเป็นตัวแทนของ Object นั้นๆครับ จากวิธีการ NMS โดยหลักการคำนวณคือ หาส่วนที่ Intersect หารส่วนที่ Union กัน ถ้ากล่องใดมีค่านี้สูง (เกิน Threshold ที่กำหนด) แสดงว่ามันคือ Object เดียวกันครับ

และสุดท้ายแล้ว ผลลัพธ์ของ YOLO มันก็จะบอกได้ว่า Object ในรูปมีอะไรบ้างเพื่อนำไปใช้งานต่อไปครับ

สำหรับ detail หรือคำอธิบายที่ละเอียดกว่านี้ สามารถดูได้ผ่านลิงค์นี้ ได้เลยครับ ขอบคุณครับ

เนื้อหาโดย อินทัช คุณากรธรรม
ตรวจทานและปรับปรุงโดย นววิทย์ พงศ์อนันต์

Data scientist at Krungsri Consumer

แบ่งปันบทความ

กลุ่มเนื้อหา

แท็กยอดนิยม

แจ้งเรื่องที่อยากอ่าน

คุณสามารถแจ้งเรื่องที่อยากอ่านให้เราทราบได้ !
และเราจะนำไปพัฒนาบทความให้มีเนื้อหาที่น่าสนใจมากขึ้น

ไอคอน PDPA

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ “นโยบายคุ้กกี้” และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ “ตั้งค่า”

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่มีความจำเป็น (Strictly Necessary Cookies)
    เปิดใช้งานตลอด

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

  • คุกกี้เพื่อการวิเคราะห์และประเมินผลการใช้งาน (Performance Cookies)

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

  • คุกกี้เพื่อการใช้งานเว็บไซต์ (Functional Cookies)

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

  • คุกกี้เพื่อการโฆษณาไปยังกลุ่มเป้าหมาย (Targeting Cookies)

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

บันทึกการตั้งค่า
This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.