به نام خدا
معیار mAP یا میانگین متوسط دقت، یکی از مهمترین معیارهایی است که برای سنجش دقت مدل های تشخیص شی یا object detection استفاده می شود. سعی دارم در این پست به صورت خیلی خلاصه نکات اصلی آن را توضیح بدهم. قبل از بررسی مفهموم mAP نیاز است تا مفاهیم دیگری را بررسی کنیم.
معیار precision و recall:
مقادیر پیش بینی و واقعی در یک مسئله نسبت به هم ممکن است حالت های زیر را داشته باشد:
معیار precision نشان دهنده ی این است که چه تعداد نمونه هایی که مثبت پیش بینی شده اند، درست پیش بینی شده اند و رابطه ی آن از روش زیر قابل محاسبه است(منظور از حروف مثلا TP همان True Positiveدر جدول بالا است):
معیار recall مشخص می کند که چه تعداد از نمونه هایی که مثبت بوده اند درست پیش بینی شده اند.
برای محاسبه ی mAP از معیارهای بالا استفاده می شود. اما سوالی که این جا پیش می آید در مسئله ی تشخیص شی چه طور می توان مقادیر ماتریس confusion را محاسبه کرد؟ این کار براساس IoU جعبه های پیش بینی شده و جعبه ی اصلی محاسبه می شود.( اطلاعات بیشتر معیار IoU )
برای محاسبه ی mAP سعی داریم آن را با یک مثال توضیح دهیم.
محاسبه ی mAP
فرض کنید می خواهیم برای 7 تصویر زیر mAP را محاسبه کنیم.
در ابتدا مشخص می کنیم که هر جعبه پیش بینی شده TP یا FP است. این تصاویر، جعبه های اصلی یا ground truth را با رنگ سبز و جعبه های پیش بینی شده را با رنگ قرمز نشان می دهند. ابتدا تصویر Image1 را در نظر می گیریم. در این تصویر، 3 جعبه ی A, B, C پیش بینی شده اند. اگر جعبه ی پیش بینی شده با جعبه ی اصلی متناظرش میزان همپوشانی بیشتر از مثلا 30 درصد داشته باشد(این حد آستانه معمولا 50، 75 یا 95 درصد در نظر گرفته می شود.) در دسته ی TP(مثل جعبه یB) و اگر کمتر از 50 درصد باشد(مثل جعبه ی A) یا جعبه اشتباهی پیش بینی شده باشد(مثل جعبه ی C)، FP خواهد بود. برای تک تک تصاویر وضعیت TP , FP جعبه ها را در جدولی مثل جدول1 مشخص می کنیم.
بعد از آن، جدول1 را براساس Confidence(احتمال وجود شی) هر جعبه به صورت نزولی مرتب می کنیم و فراوانی تجمعی TP , FP را مانند جدول2 محاسبه می کنیم. حال می توانیم مقادیر Precision و Recall را طبق رابطه ی 1و2 با استفاده از فراوانی تجمعی TP , FP محاسبه کنیم. برای مثال در سطر سوم مقدار Precision عبارت است از (1+2)/2 که می شود 0.6666 و مقدار Recall نیز 2/15 که 0.1333خواهد بود(مخرج در معیار Recall تعداد تمام ground truth های کل تصاویر است).
بعد از محاسبه ی Precision و Recall، نمودار مربوط به این دو را مطابق شکل3 رسم می کنیم.
برای بدست آوردن AP دو روش استفاده می شود:
روش اول
درون یابی یا interpulate مقادیر متناظر precision در 11 نقطه از recall که معمولا نقاط 0، 0.1، 0.2، 0.3،..0.9و1 در نظر گرفته می شود. شکل4 این 11 نقطه را نمایش می دهد.
در رابطه ی زیر منظور از p با زیروند interp(r) یعنی مقدار precision متناظر Recall در نقطه ی r.
روش دوم
درون یابی برای همه ی نقاط انجام شود. شکلی مثل شکل5 خواهیم داشت.
این نمودار از 4 ناحیه مثل شکل6 تشکیل شده است.
پس به شکل زیر AP را بدست می آوریم.
برای بدست آوردن mAP در واقع میانگین AP هر کلاس را در آن مجموعه داده باید محاسبه کنیم تا این معیار محاسبه شود.
منبع:
نمونه کد محاسبه ی mAP:
https://github.com/sanazkhalili/YOLOv3/blob/master/codes/Calculate_mAP.ipynb