رفتن به محتوای اصلی
بازگشت به وبلاگ

داده و اتصال فنی

تفاوت half-pixel و align-corners در تغییر اندازهٔ تصویر

مختصات و چهار وزنِ bilinear را برای دو قرارداد کنترل کنید؛۴۰ خروجیِ غیرصفحه‌ای و۳۲ حالتِ صفحهٔ تحلیلی با Fraction همراه‌اند.

دو ابزار با نامِ bilinear و اندازهٔ خروجیِ یکسان، ممکن است از نقطه‌هایِ متفاوتی در ورودی نمونه بگیرند. قراردادِ تبدیلِ مختصات، پیش از چهار وزنِ درون‌یابی مطرح است. در این تمرینِ دقیق، half_pixel و align_corners را رویِ شبکهٔ اصیلِ غیرصفحه‌ای و یک صفحهٔ تحلیلی مقایسه می‌کنیم؛ هیچ مدلِ افزایشِ وضوح اجرا نمی‌شود.

مختصاتِ خروجی از کجا به ورودی می‌روند؟

در هر محور، اندازهٔ ورودی n و خروجی m است و i اندیسِ صفرمبنایِ خروجی. half_pixel نقطهٔ(i+۰٫۵)×n/m−۰٫۵ را می‌دهد. align_corners از i×(n−۱)/(m−۱) استفاده می‌کند؛ به همین دلیل دو سرِ محورِ خروجی به دو سرِ ورودی می‌رسند.

در پوششِ ما، مختصاتِ خارج از محدوده به لبه clamp می‌شوند. هر دو محورِ ورودی و خروجی حداقل ۲ اند؛ حالتِ خروجیِ تک‌خانه را رد می‌کنیم تا تقسیمِ m−۱ بی‌تعریف نشود. این انتخابِ محدود را رفتارِ کاملِ همهٔ حالت‌هایِ ONNX نمی‌نامیم.

چهار خانه و چهار وزنِ معلوم

شبکهٔ اصیلِ ورودی[[۰، ۹، ۱]، [۶، ۲، ۸]، [۳، ۷، ۴]] است و خروجی ۴×۵ می‌خواهیم. برای هر مختصاتِ ورودیِ clamp شده، دو سطر و دو ستونِ اطراف و فاصله‌هایِ کسریِ dx و dy را می‌گیریم. وزن‌ها(۱−dy)(۱−dx)، (۱−dy)dx، dy(۱−dx) و dy×dx هستند و جمعشان ۱ است.

در خانهٔ خروجیِ(۱، ۱)، half_pixel به مختصاتِ سطر ۵/۸ و ستون ۲/۵ می‌رسد. وزن‌هایِ چهار گوشه ۹/۴۰، ۳/۲۰، ۳/۸ و ۱/۴ اند و پاسخ ۴۱/۱۰ می‌شود. در align_corners همان خانه مختصاتِ سطر ۲/۳ و ستون ۱/۲ و پاسخ ۲۵/۶ دارد؛ این تفاوت با گردکردنِ اندازهٔ فایل توضیح داده نمی‌شود.

یک صفحه، مرجعِ روشن‌تری می‌دهد

شبکهٔ ۲×۲ ِ[[۰، ۱۰]، [۲۰، ۳۰]] از صفحهٔ f(x,y)=۱۰ x+۲۰ y می‌آید. خروجیِ ۴×۴ را با همان تابعِ تحلیلی در مختصاتِ clamp شده کنترل می‌کنیم. برای خانهٔ(۱، ۱)، half_pixel مقدار ۷٫۵ و align_corners مقدار ۱۰ می‌دهد. هر دو با نقطهٔ نمونهٔ خودشان سازگارند؛ یکسان‌بودنِ نامِ linear آن نقطه را یکسان نکرده است.

آزمایشhalf_pixelalign_corners
شبکهٔ غیرصفحه‌ای، خانهٔ ۱، ۱۴۱/۱۰۲۵/۶
صفحهٔ تحلیلی، خانهٔ ۱، ۱۱۵/۲۱۰

تمام خروجی را با روشِ دیگری کنترل کنیم

هر ۲۰ خانهٔ شبکهٔ غیرصفحه‌ای برای هر دو mode، در مجموع ۴۰ خروجی، با مرجعِ مستقل برابرند. مرجع ابتدا در هر سطر و سپس در هر ستون درون‌یابیِ یک‌بعدی می‌کند؛ از حلقهٔ چهار وزنِ اصلی استفاده نمی‌کند. JSON مختصات، گوشه‌ها، تمام وزن‌ها و مقدارِ هر خانه را دارد.

صفحهٔ تحلیلی نیز ۱۶ خانه برای هر mode و در مجموع ۳۲ حالت دارد. حفظِ شبکه در اندازهٔ اصلی و ثابت‌ماندنِ همهٔ خانه‌ها برای ورودیِ ثابت ۷ جدا بررسی شده‌اند. محاسبه با Fraction است؛ عکسِ واقعی، پروفایلِ رنگ یا تفاوتِ rounding کتابخانه‌ها واردِ این آزمایش نشده است.

دامنهٔ اجرا را از تعریفِ مرجع جدا کنیم

هفت حالتِ نامعتبر، از محورِ تک‌خانه و bool تا آرایهٔ پله‌ای، بی‌نهایت، mode ناشناخته و بودجهٔ اندازه رد می‌شوند. ورودی حداکثر ۶×۶ و خروجی حداکثر ۸×۸ است. عددها متناهی و قدرشان حداکثر ۱۰۰ است. کد، antialias برای کاهشِ اندازه ندارد؛ نتیجه را توصیهٔ کیفیتِ downsampling نمی‌نامیم.

ONNX اینجا منبعِ فرمولِ مختصات است، نه runtime اجراشده. Pillow، OpenCV یامدلِ SuperResolution نیز اجرا نشده‌اند. خروجیِ تصویر برای وب اندازه و خوانایی و broadcasting سازگاریِ شکل را روشن می‌کنند؛ این صفحه محلِ نمونه‌گیری را می‌سنجد. ادامه در مبانی هوش مصنوعی؛ بزرگ‌شدنِ شبکه، بازیابیِ جزئیاتِ ازدست‌رفته را ثابت نمی‌کند.

فایل تمرین و منبع

کد کاملِ تمرینِ مستقل و کنترل‌ها؛ Python · ورودی و تمامِ خروجیِ اجرای واقعی؛ JSON

منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثال‌ها و فایل‌های این راهنما آموزشی و ساختهٔ تحریریه‌اند.

برای این نیاز، کدام خدمت مناسب‌تر است؟

تماس و منشی، چت سایت و تحلیل مکالمه سه مسیر متفاوت‌اند. ابتدا خدمت متناسب نیازتان را انتخاب کنید.

انتخاب میان سه خدمتراهنمای شروع با تیم اپرا

برآورد هزینه