Drag a box to move it; drag a corner or an edge to resize it. Arrow keys nudge the last box you
touched by one pixel. Grid lines are 10 pixels apart.
shared area
÷
area covered by either
=
IoU
00.51
মূল ধারণা।
একটি detector বলে “এই box-এ একটি বিড়াল আছে।” এটির নম্বর দিতে, তার box আসলটির সঙ্গে কতটা
মেলে তার জন্য একটি সংখ্যা দরকার। IoU সেই সংখ্যা: দুটি box যে ক্ষেত্রফল ভাগ করে, ভাগ দুটি মিলে যতটা
ঢাকে।
IoU = shared ÷ (real + predicted − shared)
box দুটি একই হলে এটি 1, আর না ছুঁলে 0। প্রচলিত নিয়ম হলো, IoU 0.5 বা বেশি হলে অনুমানটিকে জিনিসটি খুঁজে
পাওয়া ধরা হয় — object detection পাতা তার শেষ গণনায় এই নিয়মই ব্যবহার করে। ওই পাতার NMS-ও IoU ব্যবহার
করে, দুটি box একই বিড়ালের কি না ঠিক করতে।
union দিয়ে ভাগ কেন?
শুধু সাধারণ অংশ নিলে ফাঁকিকে পুরস্কার দেওয়া হতো: পুরো ছবি জুড়ে একটি box বিড়ালের পুরোটাই ভাগ করে।
যেকোনো box যা কিছু ঢাকে তার সবটা দিয়ে ভাগ করলে, box খুব বড় হলে যতটা শাস্তি পায়, ভুল জায়গায় বা খুব ছোট হলেও
ঠিক ততটাই পায়।
যা করে দেখার মতো:
1. Shifted by a third. একই মাপের দুটি box, একটি তার চওড়ার এক-তৃতীয়াংশ সরানো। এখনও বেশ ভালো
মিল মনে হয়, কিন্তু IoU ঠিক 0.50 — একেবারে সীমায়। arrow key দিয়ে নীল box-টি আরও এক pixel সরান, এটি
নিচে নেমে যায়।
2. Small box, 5 px off, তারপর Big box, 5 px off। একই 5-pixel ভুল 20-pixel box-এ দেয়
0.60 আর 100-pixel box-এ 0.90। বড় জিনিসের জন্য কয়েকটি pixel কিছুই না, ছোটর জন্য অনেক — এ কারণেই ছোট
জিনিসে ভালো score পাওয়া সবচেয়ে কঠিন।
3. Too big, তারপর Too small। দ্বিগুণ চওড়া আর দ্বিগুণ লম্বা একটি box, পুরো বিড়াল তার
ভেতরে, পায় 0.25 — একটি miss। অর্ধেক চওড়া আর অর্ধেক লম্বা একটি box, পুরোটা বিড়ালের ভেতরে, সেটিও পায়
0.25। মাপ কোন দিকে ভুল হলো, IoU তাতে মাথা ঘামায় না।
4. Cover everything. অনুমানে পুরো বিড়ালটি আছে, আর IoU 0.03।
5. কিছু benchmark 0.5 পাস নম্বরকে বেশি উদার মনে করে। COCO, সবচেয়ে বেশি ব্যবহৃতটি, 0.50 থেকে 0.95 পর্যন্ত
প্রতিটি সীমায় detector-কে নম্বর দেয় আর গড় নেয় — তাই ভালো score পেতে box-কে শুধু কাছাকাছি নয়, আঁটসাঁট
হতে হয়।