NMS چند کادرِ دارایِ امتیاز را بهصورت حریصانه انتخاب و کادرهای همپوشانِ کمامتیازتر را حذف میکند. آستانه،کلاس و قاعدهٔ تساوی در نتیجه اثر دارند. محاسبهٔ درستِ IoUبرای دو کادر،بهتنهایی فرایندِ انتخابِ چند کادر را مشخص نمیکند؛ این صفحه تمامِ علتهای حذف را ثبت میکند.
چهار کادرِ ساختگی
Aبا مختصات[۱،۰،۳،۲]و امتیاز۹/۱۰،Bبا[۰،۰،۲،۲]و۴/۵وCبا[۲،۰،۴،۲]و۴/۵درکلاس۱هستند. Dهمان مختصاتِ Aولی امتیاز۷/۱۰و کلاس۲دارد. این امتیازها خروجیِ مدل یا احتمالِ کالیبرهشده نیستند؛ برای تمرین انتخاب شدهاند.
مختصات xyxy،ناحیهها پیوسته و عرض و ارتفاع مثبتاند؛ به طولِ ضلع یک اضافه نمیکنیم. IoUِ AباBوCهرکدام۱/۳و IoUِ BباCصفر است. مرجعِ مستقلِ هندسی برای همین کادرهای صحیح،مجموعهٔ سلولهای واحدِ مشترک و اجتماع را میشمارد.
بالاترین امتیاز را برداریم
ترتیبِ محلیِ ما امتیازِ نزولی و در تساوی،شناسهٔ صعودی است. ابتدا Aانتخاب میشود. با آستانه۳/۱۰، BوCچون IoUبیشتر از آستانه دارند حذف میشوند. دفتر برای هر کاندید،IoU،گروهِ مقایسه و تصمیمِ حذف را نگه میدارد.
این یک الگوریتمِ حریصانه است: پس از انتخابِ A،آن را برای ترکیبِ دیگری از کادرها عوض نمیکنیم. فقط نگهداشتنِ فهرستِ شناسههای نهایی کافی نیست؛ علتِ حذف میگوید تصمیم از امتیاز،هندسه یا مرزِ کلاس آمده است.
کلاس را جدا کنیم یا نکنیم؟
در حالتِ class-aware، کادرِ DباAمقایسهٔ حذف ندارد چون کلاسِ دیگری دارد؛ نتیجه AوDاست. در حالتِ agnostic،مرزِ کلاس کنار میرود وDبا IoUیک زیرِ Aحذف میشود؛ فقط Aمیماند. هر دو اجرا با همان داده و امتیازها واقعاً انجام شدهاند.
این تفاوت به معنیِ درستبودنِ یکی برای همهٔ پروژهها نیست. کلاسها،همپوشانیِ واقعیِ اشیا و قراردادِ خروجی مهماند. NMSدرست،نامِ نادرستِ شیء یا کادرِ اشتباهِ مدل را خودکار اصلاح نمیکند؛ دادهٔ تصویرِ واقعی در این تمرین نداریم.
برابری با آستانه حذف نمیشود
شرطِ کد IoU>thresholdاست. با آستانهٔ دقیق۱/۳، AوBوCدر همین مثال باقی میمانند؛ برابری کافی برای حذف نیست. گردکردنِ IoUِ ۱/۳به۰٫۳۳و سپس مقایسه،میتواند شاهدِ مرزی را عوض کند؛ محاسبهٔ این فایل کسر دقیق است.
در نمونهٔ دو کادرِ یکسان و همامتیاز،شناسهٔ aدر قاعدهٔ خودمان بر zمقدم است. مستنداتِ Torchvision دربارهٔ تساویِ امتیاز،یکسانبودنِ انتخابِ CPUوGPUرا تضمین نمیکند. رفتارِ قطعیِ IDاین تمرین را همسانیِ بیتی با فروشنده معرفی نمیکنیم؛ Torchاجرا نشده است.
بیشترین مجموعِ امتیاز هدفِ NMSنیست
در سه کادرِ کلاس۱، مجموعهٔ BوCبا IoUصفر مجموعِ امتیاز۸/۵دارد،بیشتر از۹/۱۰ِ A. oracleتمام زیرمجموعههای مجاز را میسازد و همین تفاوت را نشان میدهد. NMSهمچنان Aرا نگه میدارد؛ این خطایِ فرمول نیست،هدفِ حریصانه با بهینهسازیِ مجموع فرق دارد.
هر۲۴جایگشتِ ورودی با قاعدهٔ کاملِ امتیاز/IDنتیجهٔ یکسان میدهد. هفت ورودیِ نامعتبر، از کادرِ صفرمساحت یا وارونه تا شناسهٔ تکراری،امتیاز یا آستانهٔ نامتناهی،آستانهٔ منفی و کلاسِ مفقود، رد میشوند. ورودیِ خالی خروجیِ خالی دارد و سقفِ محلی۸کادر است.
IoU هندسهٔ یک جفت و top-k انتخابِ بدونِ این حذفِ هندسی را توضیح میدهند. ادامه در آموزش هوش مصنوعی؛ دقتِ مدل،mAPیا محصولِ تشخیصِ شیءِ اپرا از این کادرها نتیجه نمیشود.
فایل تمرین و منبع
کد کاملِ تمرینِ مستقل و کنترلها؛ Python · ورودی و تمامِ خروجیِ اجرای واقعی؛ JSON
- مستندات اصلی Torchvision۰٫۲۹؛ حذفِ اکیدِ IoUبیشتر ازآستانه و عدم تضمینِ تساویCPU/GPU خوانده شد؛ کتابخانه اجرا نشده است
- مستندات اصلی Torchvision۰٫۲۹؛ عدمِ حذفِ بینِ دستههای متفاوت خوانده شد؛ کدِ مستقلِ کسری و قاعدهٔ تساویIDاصیلاند
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.