ယခင်က ကျွန်တော်တို့ handling လုပ်ခဲ့တဲ့ image classification models တွေဟာ ပုံတစ်ပုံကိုယူပြီး categorical ရလဒ်တစ်ခုထုတ်ပေးခဲ့ပါတယ်၊ ဥပမာ MNIST ပြဿနာမှာ 'number' class တစ်ခုလိုပါပဲ။ သို့သော် အများဆုံးအခြေအနေတွေမှာ ပုံတစ်ပုံမှာ object တွေရှိတယ်ဆိုတာကိုသိရုံမကဘဲ၊ အဲ့ဒီ object တွေရှိတဲ့တိကျတဲ့နေရာကိုသိချင်ပါတယ်။ ဒါဟာ object detection ရဲ့အဓိကရည်ရွယ်ချက်ပဲဖြစ်ပါတယ်။
ပုံကို YOLO v2 web site မှရယူထားသည်။
ပုံတစ်ပုံမှာ ကြောင်တစ်ကောင်ကိုရှာဖွေချင်တယ်လို့ယူဆရင်၊ object detection အတွက် naive approach တစ်ခုက အောက်ပါအတိုင်းဖြစ်နိုင်ပါတယ်-
- ပုံကို tiles အများကြီးအဖြစ်ခွဲခြားပါ။
- တစ်ခုချင်းစီ tile တွေမှာ image classification ကို run လုပ်ပါ။
- activation အဆင့်မြင့်တဲ့ tiles တွေကို object ရှိတယ်လို့ယူဆနိုင်ပါတယ်။
ပုံကို Exercise Notebook မှရယူထားသည်
သို့သော် ဒီနည်းလမ်းက အလွန်မကျွမ်းကျင်တဲ့နည်းလမ်းဖြစ်ပြီး၊ object's bounding box ကိုတိကျစွာသတ်မှတ်နိုင်ခြင်းမရှိပါဘူး။ ပိုမိုတိကျတဲ့နေရာကိုသတ်မှတ်ဖို့ regression တစ်ခု run လုပ်ဖို့လိုအပ်ပြီး၊ bounding box တွေရဲ့ coordinates ကို predict လုပ်ဖို့အတွက် dataset အထူးလိုအပ်ပါတယ်။
ဒီ blog post မှာ shapes တွေကို detect လုပ်တဲ့အကြောင်းအရာကို gentle introduction အနေနဲ့ဖော်ပြထားပါတယ်။
ဒီ task အတွက် dataset အမျိုးမျိုးတွေကိုတွေ့နိုင်ပါတယ်-
- PASCAL VOC - 20 classes
- COCO - Common Objects in Context. 80 classes, bounding boxes နှင့် segmentation masks
Image classification အတွက် algorithm ရဲ့ performance ကိုတိုင်းတာရလွယ်ကူသလို၊ object detection အတွက် class ရဲ့တိကျမှုနှင့် bounding box ရဲ့တိကျမှုကိုတိုင်းတာဖို့လိုအပ်ပါတယ်။ Bounding box ရဲ့တိကျမှုကိုတိုင်းတာဖို့ Intersection over Union (IoU) ကိုသုံးပါတယ်၊ ဒါဟာ box နှစ်ခု (သို့မဟုတ် arbitrary areas နှစ်ခု) overlap ဖြစ်ပုံကိုတိုင်းတာပေးပါတယ်။
ပုံကို IoU အကြောင်း blog post မှရယူထားသည်
အကြောင်းအရာကရိုးရှင်းပါတယ် - figures နှစ်ခုရဲ့ intersection area ကို union area နဲ့စားခွဲပါတယ်။ identical areas နှစ်ခုအတွက် IoU က 1 ဖြစ်ပြီး၊ completely disjointed areas အတွက် 0 ဖြစ်ပါတယ်။ အခြားအခြေအနေတွေမှာ 0 မှ 1 အတွင်း variation ဖြစ်ပါတယ်။ IoU တန်ဖိုးတစ်ခုထက်ကြီးတဲ့ bounding boxes တွေကိုသာ typically consider လုပ်ပါတယ်။
Class
- Precision-Recall curve ကို threshold value (0 မှ 1) အပေါ်မူတည်ပြီး accuracy ကိုပြသပါ။
- Threshold အပေါ်မူတည်ပြီး ပုံထဲမှာ detect လုပ်နိုင်တဲ့ object အရေအတွက်ကွဲပြားမှု၊ precision နှင့် recall values ကွဲပြားမှုရှိပါမယ်။
- Curve ကအောက်ပါအတိုင်းဖြစ်ပါမယ်-
ပုံကို NeuroWorkshop မှရယူထားသည်
Class
IoU တန်ဖိုးတစ်ခုထက်ကြီးတဲ့ detections တွေကိုသာ consider လုပ်ပါမယ်။ ဥပမာ PASCAL VOC dataset မှာ typically
ပုံကို NeuroWorkshop မှရယူထားသည်
Object Detection အတွက်အဓိက metric ကို Mean Average Precision (mAP) လို့ခေါ်ပါတယ်။ ဒါဟာ Average Precision ရဲ့တန်ဖိုးဖြစ်ပြီး၊ object classes အားလုံးအတွက် average လုပ်ထားတာဖြစ်ပါတယ်၊ တစ်ခါတစ်ရံ
Object detection algorithms တွေကို broad classes နှစ်ခုအဖြစ်ခွဲခြားနိုင်ပါတယ်-
- Region Proposal Networks (R-CNN, Fast R-CNN, Faster R-CNN). အဓိကအကြောင်းအရာက Regions of Interests (ROI) တွေကို generate လုပ်ပြီး CNN ကို run လုပ်တာဖြစ်ပါတယ်၊ maximum activation ရှာဖွေဖို့။ Naive approach နဲ့တူပေမယ့် ROIs တွေကိုပိုမိုကျွမ်းကျင်စွာ generate လုပ်ပါတယ်။ ဒီနည်းလမ်းရဲ့အဓိက drawback က အလွန်နှေးကွေးတယ်၊ image အပေါ် CNN classifier ကို passes အများကြီး run လုပ်ရလို့။
- One-pass (YOLO, SSD, RetinaNet) methods. ဒီ architectures တွေမှာ network ကို classes နှင့် ROIs ကိုတစ်ခါတည်း predict လုပ်ဖို့ design လုပ်ထားပါတယ်။
R-CNN က Selective Search ကိုသုံးပြီး ROI regions တွေကို hierarchical structure အဖြစ် generate လုပ်ပါတယ်၊ အဲ့ဒီ regions တွေကို CNN feature extractors နှင့် SVM-classifiers တွေက object class ကိုသတ်မှတ်ဖို့၊ linear regression က bounding box coordinates ကိုသတ်မှတ်ဖို့သုံးပါတယ်။ Official Paper
ပုံကို van de Sande et al. ICCV’11 မှရယူထားသည်
ပုံကို ဒီ blog မှရယူထားသည်
ဒီနည်းလမ်းက R-CNN နဲ့တူပေမယ့် regions တွေကို convolution layers apply လုပ်ပြီးမှသတ်မှတ်ပါတယ်။
ပုံကို Official Paper, arXiv, 2015 မှရယူထားသည်။
ဒီနည်းလမ်းရဲ့အဓိကအကြောင်းအရာက neural network ကိုသုံးပြီး ROIs ကို predict လုပ်တာဖြစ်ပါတယ် - Region Proposal Network လို့ခေါ်ပါတယ်။ Paper, 2016
ပုံကို Official Paper မှရယူထားသည်။
ဒီ algorithm က Faster R-CNN ထက်ပိုမိုမြန်ဆန်ပါတယ်။ အဓိကအကြောင်းအရာက-
- ResNet-101 ကိုသုံးပြီး features တွေကို extract လုပ်ပါ။
- Features တွေကို Position-Sensitive Score Map မှာ process လုပ်ပါ။
$C$ classes ထဲက object တစ်ခုစီကို$k\times k$ regions တွေခွဲပြီး၊ object parts တွေကို predict လုပ်ဖို့ training လုပ်ပါတယ်။ -
$k\times k$ regions ထဲက part တစ်ခုစီအတွက် networks အားလုံးက object classes အတွက် vote လုပ်ပြီး၊ maximum vote ရတဲ့ object class ကိုရွေးချယ်ပါတယ်။
ပုံကို Official Paper မှရယူထားသည်။
YOLO က realtime one-pass algorithm ဖြစ်ပါတယ်။ အဓိကအကြောင်းအရာက-
- ပုံကို
$S\times S$ regions တွေခွဲပါ။ - Region တစ်ခုစီအတွက် CNN က
$n$ possible objects, bounding box coordinates နှင့် confidence=probability * IoU ကို predict လုပ်ပါတယ်။
ပုံကို Official Paper မှရယူထားသည်။
- RetinaNet: Official Paper
- SSD (Single Shot Detector): Official Paper
အောက်ပါ notebook မှာ သင့်ရဲ့လေ့လာမှုကိုဆက်လက်လုပ်ဆောင်ပါ-
ဒီသင်ခန်းစာမှာ object detection ကိုအမျိုးမျိုးသောနည်းလမ်းများဖြင့် accomplish လုပ်နိုင်ပုံကို whirlwind tour အနေနဲ့လေ့လာခဲ့ပါတယ်။
YOLO အကြောင်းအရာများနှင့် notebooks တွေကိုဖတ်ရှုပြီး ကိုယ်တိုင်စမ်းသပ်ကြည့်ပါ-
- YOLO ကိုဖော်ပြထားတဲ့ blog post
- Official Site
- Yolo: Keras Implementation, Step-by-Step Notebook
- Yolo v2: Keras Implementation, Step-by-Step Notebook
- Object Detection by Nikhil Sardana
- Object Detection Algorithms တွေကိုနှိုင်းယှဉ်ထားတဲ့ blog post
- Deep Learning Algorithms for Object Detection ကို Review လုပ်ထားတဲ့ blog post
- Basic Object Detection Algorithms အကြောင်း Step-by-Step Introduction
- Python မှာ Faster R-CNN ကို Object Detection အတွက် Implementation လုပ်ပုံ











