Video Object Detection คืออะไร?
ระดับ: วิจัยหรือใครอยากลองทำก็ลองได้
คาดว่าหลายคนคงจะพอรู้จัก Object Detection กันมาบ้างแล้ว หากไม่ทราบก็ขอชี้เป้าไปยัง blog ของอ.ปืน เนคเทค [1] (เราเป็นนักวิจัยก็ต้องอ้างอิงแหล่งข้อมูลให้เป็นด้วย :) ) ที่เขียนแนะนำหัวข้อนี้สำหรับข้อมูลด้านรูปภาพ ในที่นี้จะเรียกแบบรูปภาพให้ต่างกันว่า Image Object Detection
บางทีผู้อ่านอาจจะเคยเห็นคนทำ Image Object Detection เช่น Faster-RCNN หรือ YOLO ได้ output เป็น video ก็ขอให้พิจารณาว่า bounding box รอบวัตถุมันกระพริบบ่อยมั้ย ถ้าบ่อยก็คือเป็นแค่รันทีละเฟรมแล้วเอาผลลัพธ์มารวมกันเป็นวิดิโอใหม่ ไม่ได้ใช้ข้อมูลหรือโมเดลข้อมูลความสัมพันธ์ระหว่างเฟรมใดๆ ในที่นี้จะกล่าวถึงงานวิจัย Video Object Detection ที่สามารถ Detect วัตถุแบบลื่นๆเน้นๆไม่กระพริบ โมเดลความสัมพันธ์ระหว่างเฟรม และได้ผลลัพธ์เป็น list ของ bounding boxes สำหรับแต่ละวัตถุโดยเฉพาะ (instance-level recognition) ที่เรียกว่า tubelets ทีเดียว
Video Object Detection เป็นส่วนหนึ่งของ ImageNet
งานด้าน Image Object Detection และ Classification จะมี benchmark ที่ไม่ว่าใครก็รู้จักหากสนใจงานด้านนี้อยู่คือ ILSVRC หากเรียกแบบคนทั่วไปก็คือ ImageNet Large Scale Visual Recognition Challenge [2] นั่นเอง มี paper IJCV ด้วย แบบ ArXiV เป็น preprint https://arxiv.org/pdf/1409.0575.pdf
จริงๆแล้ว ImageNet ไม่ได้มี Challenge แค่ทำ Image Classification อย่างเดียว อย่างแบบที่ใช้ pre-trained model พวก AlexNet, VGG, ResNet กันตาม software framework ทั่วไป ILSVRC ยังมีอีกหลาย tasks และอันหนึ่งที่น่าสนใจคือ Object Detection from Video ที่เริ่มต้นในปี 2015 มีวิดิโอแนะนำ task ใน workshop ที่ https://www.youtube.com/watch?v=ueN7q1ea4sI
ใน Task นี้ dataset มี video เป็น clip เล็กๆยาวประมาณ 1-2 วินาทีที่ความเร็ว 30 fps resolution 640 x 358 จนถึง 1280 x 720 แล้วแต่วิดิโอ ทั้ง dataset มีวัตถุ 30 คลาสที่เป็นสับเซตของ ILSVRC 200 basic-level categories จาก ILSVRC Image Object Detection (คนมักจะรู้จักและใช้ MS COCO มากกว่า เพราะมี challenge เรื่องการรู้จำตามบริบทอยู่ด้วย) ทุกๆเฟรมจะมี annotation เป็น xml มี trackid, name (สามารถแปลงกลับเป็น Object Class ได้), bndbox คือ bounding box, มี occluded คือ object โดนบังหรือเปล่า
ระบบ Video Object Detection จะต้องสามารถรับ input เป็นวิดิโอ แล้ว output เป็น tubelets ออกมาได้ tubelets คือ bounding box (xmin, ymin, xmax, ymax) คู่อันดับตัวเลขพิกเซลที่แทนพื้นที่สี่เหลี่ยมในแต่ละเฟรม จากเฟรมแรกไปจนถึงเฟรมสุดท้ายที่มี Object อยู่ และถ้า Object หายไปแล้วกลับมาใหม่ ก็ต้องรู้และ detect ได้ ทั้งนี้ต้องบอกได้ด้วยว่าแต่ละ tubelet มี Object จากคลาสอะไรเช่น เครื่องบิน รถ หรือ หมีแพนด้า เป็นต้น
การวัดผลมีสองแบบคือ per-frame IoU กับ tubelet IoU ซึ่งตัว IoU (Intersection over Union) นี้เอามาจาก Image Object Detection คือถ้านับพื้นที่สี่เหลี่ยมเมื่อนำ output มาวัดกับ groundtruth ที่ Object อยู่จริงๆ อัตราส่วนของค่า Intersection ของพื้นที่กับค่า Union ของพื้นที่ หากมากกว่าค่า threshold เช่น 0.5 ก็จะนับว่า detect object ได้ในเฟรมนั้น ค่า threshold มีหลายอย่าง benchmark ของ Image Object Detection อย่าง PASCAL VOC [6] มีใช้ตั้งแต่ 0.3, 0.5, 0.7, 0.9 และยังมีแบบเฉลี่ย 0.5:0.95 อีก per-frame IoU คือวัดแบบ Image Object Detection ทีละเฟรม ส่วน tubelet IoU จะวัดแบบทีละ Object ไปจนถึงเฟรมสุดท้ายแล้ววัด #detected frames/#union frames กับ threshold ของ Object นั้นๆ ตอนปี 2015 ใช้ 0.5
ปัจจุบันนี้มี dataset สำหรับ Video Object Detection อื่นอีกเช่น Youtube-BB [3, 4] จาก Google Research ในปี 2017
ทำไมต้อง Video Object Detection?
จากสไลด์นำเสนอที่ workshop ILSVRC 2015 ชุดข้อมูลนี้มีแรงบันดาลใจสามอย่าง
- พลังของชุดข้อมูล benchmark พอมีคนมาทำเยอะๆ งานวิจัยที่สำคัญก็สามารถก้าวหน้าอย่างก้าวกระโดด
- งานวิจัยด้านวิดิโอนั้นสำคัญเพราะมีข้อแตกต่างจากข้อมูลภาพนิ่งหลายอย่าง
- ในปี 2015 ยังไม่มีชุดข้อมูลแบบนี้มากนัก นอกจาก YouTube-Object ในตอนนั้น
ความแตกต่างของรูปภาพและวิดิโอ
ข้อมูลวิดิโอมีสิ่งที่แตกต่างจากข้อมูลภาพนิ่งหลายอย่าง อย่างแรกชุดข้อมูลภาพนิ่งมักจะค่อนข้าง stabilized คือไม่มีรูปวืดๆจาก motion blur เช่น
ดังนั้นถ้าใช้ detector เช่น Faster-RCNN ก็มีโอกาสที่น่าจะวืดในกรณีนี้ไปเลย
อีกอย่างหนึ่งคือข้อมูลวิดิโอมีการหมุนของวัตถุทำให้มีการเปลี่ยนมุมมองมาก
ดังนั้นถ้าเป็นมุมและแสงเงาที่ไม่เคยเห็นมาก่อนในชุดข้อมูลภาพ พวก detector ก็จะวืดอีกเช่นกัน จริงๆถ้าคิดในแนวทฤษฎี พวกงานด้าน Deep Learning ก็มักจะโดน Adversarial Attack อยู่แล้ว จากการเปลี่ยนข้อมูลเล็กน้อยให้ตัวโมเดลทำนายเป็นอีกอย่างแต่คนยังเห็นได้ปกติอยู่ อันนี้ก็น่าจะเป็นสิ่งที่พบเห็นได้ทั่วไปจากธรรมชาติของข้อมูลวิดิโอที่ยังไม่ทันจะมี Adversary มาปลอมแปลงข้อมูลเลย
Video data are probably natural adversaries for CNNs.
ตอนต่อไปจะพูดถึงเทคนิคงานวิจัยในปัจจุบันเริ่มต้นจาก Seq-NMS และต่อด้วย Tubelet Proposal Networks แน่นอน trivial baseline มักจะเป็นเทรนและรัน Faster-RCNN ทีละเฟรมนะฮะ
References
[1] โลกหมุนไป งานวิจัยก็หมุนตาม https://medium.com/@sanparithmarukatat/%E0%B9%82%E0%B8%A5%E0%B8%81%E0%B8%AB%E0%B8%A1%E0%B8%B8%E0%B8%99%E0%B9%84%E0%B8%9B-%E0%B8%87%E0%B8%B2%E0%B8%99%E0%B8%A7%E0%B8%B4%E0%B8%88%E0%B8%B1%E0%B8%A2%E0%B8%81%E0%B9%87%E0%B8%AB%E0%B8%A1%E0%B8%B8%E0%B8%99%E0%B8%95%E0%B8%B2%E0%B8%A1-46ae76d4e195
[2] Russakovsky, Olga, et al. “Imagenet large scale visual recognition challenge.” International journal of computer vision115.3 (2015): 211–252.
[3] https://research.google.com/youtube-bb/
[4] https://github.com/mbuckler/youtube-bb
[5] Xiao, Fanyi, and Yong Jae Lee. “Video object detection with an aligned spatial-temporal memory.” Proceedings of the European Conference on Computer Vision (ECCV). 2018.
[6] Everingham, Mark, et al. “The pascal visual object classes (voc) challenge.” International journal of computer vision 88.2 (2010): 303–338.