کادر محصورکننده (Bounding Box): الفبای تشخیص شیء
نویسنده: فاطمه جعفری نوبخت
در دنیای هوش مصنوعی، قبل از اینکه ماشین بتواند جزئیات دقیق یک شیء را ببیند (مانند Segmentation)، ابتدا باید بداند آن شیء “حدوداً” در کجای تصویر قرار دارد.
کادر محصورکننده (Bounding Box) که به اختصار BBox نامیده میشود، مستطیلی است که دور یک شیء کشیده میشود تا موقعیت مکانی آن را در تصویر مشخص کند.
این مفهوم، سنگ بنای تشخیص شیء (Object Detection) در الگوریتمهایی مانند YOLO، SSD و Faster R-CNN است.
۱. ریاضیات پشت پرده: کامپیوتر چگونه مستطیل را میبیند؟
برای ما، کادر محصورکننده یک خط رنگی دور ماشین است. اما برای کامپیوتر، این فقط مجموعهای از ۴ عدد است.
در دنیای پردازش تصویر، مبدأ مختصات (0,0) معمولاً گوشه بالا سمت چپ تصویر است. بر این اساس، سه روش اصلی برای تعریف BBox وجود دارد:
الف) مختصات دو گوشه (Pascal VOC Style)
[x_{min}, y_{min}, x_{max}, y_{max}]
در این روش، مختصات گوشه بالا-چپ و گوشه پایین-راست ذخیره میشود.
ب) گوشه و ابعاد (COCO Style)
[x_{min}, y_{min}, width, height]
مختصات گوشه بالا-چپ به همراه عرض و ارتفاع مستطیل ذخیره میشود. این فرمت در مسابقات معروف COCO استفاده میشود.
ج) مرکز و ابعاد نرمالشده (YOLO Style)
[x_{center}, y_{center}, width, height]
در الگوریتم YOLO، مختصات مرکز مستطیل استفاده میشود. نکته مهم این است که اعداد بین ۰ تا ۱ نرمال میشوند (تقسیم بر عرض و ارتفاع کل تصویر). این کار باعث میشود مدل به ابعاد تصویر وابسته نباشد.Shutterstock
۲. انواع کادر محصورکننده
آیا همیشه یک مستطیل صاف کافی است؟ خیر.
1.2. کادر همتراز با محور (AABB – Axis-Aligned Bounding Box)
رایجترین نوع است. اضلاع مستطیل همیشه موازی با لبههای تصویر (محور X و Y) هستند.
- مزیت: محاسبات بسیار ساده و سریع.
- عیب: برای اشیاء مورب (مثل یک کشتی که کج حرکت میکند یا یک مداد مورب) فضای خالی زیادی از پسزمینه را در بر میگیرد که باعث نویز میشود.
2.2. کادر جهتدار (OBB – Oriented Bounding Box)
این کادر میتواند بچرخد. علاوه بر ۴ پارامتر اصلی، یک پارامتر پنجم به نام زاویه ($\theta$) هم دارد.
- کاربرد حیاتی در GIS: در تصاویر ماهوارهای، کشتیها، پلها و ساختمانها لزوماً در جهت شمال-جنوب نیستند. استفاده از AABB برای کشتیهای متراکم در بندر باعث میشود کادرها روی هم بیفتند، اما OBB آنها را دقیق جدا میکند.
3.2. کادر سهبعدی (3D Bounding Box)
در خودروهای خودران (Lidar)، ما با مکعبمستطیل سروکار داریم. این کادرها دارای عمق ($Z$)، ابعاد سهبعدی ($l, w, h$) و جهتگیری در فضا هستند.
۳. معیار سنجش: IoU (اشتراک بر اجتماع)
چگونه بفهمیم کادری که هوش مصنوعی پیشبینی کرده، درست است؟
ما کادر پیشبینی شده (Prediction) را با کادر واقعی که انسان کشیده است (Ground Truth) مقایسه میکنیم. معیار این مقایسه IoU (Intersection over Union) نام دارد.
IoU = \frac{\text{مساحت اشتراک دو کادر}}{\text{مساحت اجتماع دو کادر}}
- IoU = 1: تطابق کامل (صد درصد دقیق).
- IoU = 0: هیچ اشتراکی ندارند.
- معمولاً اگر IoU بالای 5 باشد، تشخیص را “صحیح” در نظر میگیرند.
۴. چالش بزرگ: حذف کادرهای تکراری (NMS)
وقتی یک الگوریتم مثل YOLO به تصویر نگاه میکند، ممکن است برای “یک ماشین”، صدها کادر مختلف با کمی جابجایی پیشنهاد دهد.
ما باید بهترین کادر را نگه داریم و بقیه را حذف کنیم. این فرآیند Non-Maximum Suppression (NMS) نام دارد:
- کادری که بالاترین امتیاز اطمینان (Confidence Score) را دارد انتخاب کن.
- تمام کادرهای دیگری که با این کادر انتخابی همپوشانی زیادی دارند (IoU بالا دارند) را حذف کن.
- این کار را برای کادرهای باقیمانده تکرار کن.
۵. کاربردها
کادر محصورکننده اولین خروجی معنادار در بسیاری از سیستمهای هوشمند است:
- سنجش از دور (Remote Sensing):
- شمارش تعداد درختان نخل در یک باغ (هر درخت = یک BBox).
- پیدا کردن مخازن نفت در تصاویر ماهوارهای.
- نظارت شهری:
- تشخیص عابران پیاده و خودروها برای مدیریت چراغ راهنمایی.
- دادهآمایی (Data Annotation):
- سریعترین و ارزانترین روش برای تولید داده آموزشی. کشیدن یک BBox دور یک شیء ۵ ثانیه طول میکشد، اما ماسک کردن دقیق آن (Segmentation) ممکن است ۵ دقیقه زمان ببرد.
۶. فرمتهای ذخیرهسازی داده
اگر بخواهید مدل خودتان را آموزش دهید، باید با فایلهای متنی یا JSON که BBoxها را ذخیره میکنند آشنا باشید:
- فرمت Pascal VOC (.xml): قدیمی اما هنوز رایج. ساختار درختی XML دارد.
- فرمت COCO (.json): استاندارد فعلی صنعت. تمام اطلاعات تصویر و کادرها در یک فایل بزرگ JSON ذخیره میشود.
- فرمت YOLO (.txt): سادهترین فرمت. برای هر تصویر یک فایل متنی وجود دارد که هر خط آن یک شیء است:
<class_id> <x_center> <y_center> <width> <height>
7. نتیجهگیری
کادر محصورکننده (Bounding Box) با وجود سادگی، پلی است که پیکسلهای خام را به مفاهیم قابل درک (شیء) تبدیل میکند. اگرچه روشهای جدیدتر مانند Instance Segmentation دقیقتر هستند، اما BBox به دلیل سرعت بالا و هزینه پایین پردازشی، همچنان پادشاه تشخیص شیء در کاربردهای بلادرنگ (Real-time) باقی مانده است.
