transformers

اخیرا instance segmentation پیشرفت هایی فراتر از حوزه object detection داشته است . یکی از روش های معروف در این حوزه Mask R-CNN است که در حوزه Object detection گسترش یافته است .هر چند کارهایی برای توسعه و بهبود روش Mask R-CNN صورت گرفته است اما کارهای کمی به سرعت instance segmentation توجه داشته اند. Yolact اولین روش بلادرنگ (real time ) است که به صورت one stage instance segmentation می باشددرصدد آن هستیم که دقت و سرعت Mask R-CNN را بالا ببریم در حالیکه Mask R-CNN ها بر اساس two stage object detector هستند و ابتدا box proposal را می سازند اما Yolact که یک object detector یک مرحله ای است , بدون مرحله proposal می تواند box را پیش بینی کندالبته اگرچه object detector ها وابسته به pre-defined anchors هستند که حساس به دیتاست و تعداد پارامتر های مختلف است , anchor box های زیاد می توانند باعث عدم تعادل در سمپل های مثبت و منفی بشوند و همچنین هزینه محاسبات بیشتربرای جلوگیری از معایب anchor box ها به anchor box free روی آورده شده است spatial attention module در SAG-Mask به mask branch کمک می کند تا بر روی پیکسل های معنی دار تمرکز کنند و اطلاعات غیر مهم را خنثی کندهم چنین از back bone کاراتری به نام vovnet2 استفاده می کنیم که بر اساس vovnet می باشد و عملکرد و سرعت بهتری به دلیل One-shot Aggregation , نسبت به ResNet و Dense Net داردبه وسیله SAG-Mask و vovnet2 ما center-mask و center-mask-lite را طراحی می کنیمدر این بخش ابتدا به مروری بر FCOS که یک anchor free object detector هست می پردازیم که یک object detector اساسی برای center mask هست می پردازیم سپس در باره این صحبت می کنیم که vovnet2 چگونه دقت و سرعت center mask را افزایش می دهدبدون anchor box , FCOS به صورت مستقیم یک بردار 4 بعدی را بعلاوه لیبلل کلاس ها را در هر لوکیشن فضایی برای هر feature map پیش بینی می کند. FCOS یک مرکزیت تعریف می کند که برای پیش بینی انحراف یک پیکسل نسبت به مرکز anchor box می باشد که این کار باعث می شود عمبکرد تشخیص بهبود یابد هم چنين FCOS محاسبات و حافظه را کاهش می دهد و به خاطر عملکر مناسب , center mask را بر روی FCOS پیاده می کنندSpatial attention Guided Mask :اخیرا متود های attention برای مسائل object detection اعمال شده است زیرا به تمرکز به ویژگی های مهم تمرکز می کنددر واقع channel attention تاکید می کند بر "چه چیز " تمزکز کردنو در حالیکه spatial attention تاکید می کند بر "کجا" تمرکز کردنVovnetv2 backbone:لازم به ذكر است Vovnetv2 یک شبکه بهبود یافته از vovnet است که residual connection هایی و همینطور squeeze and excitation هایی به vovnet اضافه کرده است. Vovnetv2 از نظر هزینه ای و محاسبات بسیار کارآمد است و این به دلیل استفاده از one shot aggregation modules (OSA) استو OSA یک جایگزین برای شبکه های dense block می باشد که فیچر های میانی را تجمیع می کند , هر لایه کانولوشنی به 2 مسیر کانولوشنی لینک داده شده است یک لینک به سمت لایه جلوتر و دیگری ورودی ای است که در واقع خروجی نهایی لایه قبل استتفاوت OSA با Dense Net در این است که خروجی هر لایه کانولوشنی در Dense Net به همه لایه های جلوتر داده می شود اما در OSA تعداد ورودی و خروجی هر لایه کانولوشنی یک عدد ثابت است و برابر 2 استCenter mask lite :برای رسیدن به پروسه real time تلاش بر این هست که center mask پیشنهادی را light weight کنیم برای این کار سایز 3 پارت را کاهش می دهیمbackbone box headmask headدر قسمت backbone ایتدا کانال های FPN را از 256 به 128 تا می رسانیمهم چنین تعداد لایه های کانولوشنی را از 4 به 2 می رسانیمدر قسمت Box به جای VoVNetv2-39/57که شامل 5 OSA می باشد از VoVNetV2-19 که شامل 4 OSA هست استفاده می کنیممعماری های self attention based به خصوص transformer ها به یک مدل انتخابی در پردازش زبان طبیعی تبدیل شده اند . رویکرد غالب به صورت pre train کردن بر روی یک مجموعه متن بزرگ و بعد fine tune کردن بر یک مجموعه داده کوچکتر استباتوجه به کارایی محاسباتی و مقیاس پذیری ترنسفورمر ها امکان آموزش مدل هایی از اندازه بی سابقه با بیش از 100Bپارامتر با مدل ها و مجموعه داده های در حال رشد وجود دارد و هنوز هیچ نشانه ای از عملکرد اشباع نیستبا الهام گرفتن از توانایی موفقیت امیز transformer ها در زمینه NLP ما با استفاده از یک استاندارد ترنسفرمر ها را بر روی تصاویر اعمال می کنیم و با کمترین تغییرات ممکن برای این کار ابتدا تصاویر را به patch هایی تقسیم می کنیم. Patch های تصاویر همانند توکن های یک کلمه در NLP عمل می کنند و ما مدل را بر یک image classification در مسئله supervised آموزش می دهیماگرچه train شدن روی یک دیتاست بزرگ می تواند باعث شود تصویر دچار تغییر شود , اما نتایج نشان می دهد آموزش در مقیاس بزرگ بر سوگیری استقرایی (inductive bias ) برتری داردوقتی pre trained روی دیتاست imageNet-21k یا in-house JFT-300M صورت گیرد انگاه vision transformer (ViT) با بهترین شکل , image recognition را انجام می دهدبیشترین کار مرتبط مربوط به مدل cordonnier هست که patch هایی با سایز 2*2 را از عکس ورودی استخراج می کند و full self attention را در بالا اعمال می کنداین مدل به دلیل استفاده از patch هایی با سایز 2*2 باعث می شود مدل فقط برای تصویر با وضوح کم قابل اجرا باشد در حالی که ما تصاویر با وضوح متوسط را نیز مدیریت می کنیمیکی دیگر از مدل های مرتبط image GPT (iGPT) است که بعد از کاهش رزولوشن تصویر و فضای رنگ , transformer ها را بر پیکسل های تصویر اعمال می کندمدل به صورت بدون نظارت یا unsupervoised به عنوان مدل مولد میتواندآموزش داده شود و نتیجه حاصل برای کلاس بندی که به دقت ماکزیمم 72 درصدی روی fine tune , Image Net , شده حاصل مي گردد Vision transformer (ViT)ترنسفرمر استاندارد ورودی را به صورت یک بعدی دریافت می کند برای هندل کردن تصاویر 2 بعدی تصاویر را به صورت زیر reshape می کنیمترنسفرمر ها از یک latent vector با اندازه ثابت D برای تمام لایه ها استفاده می کنندبنابراین ما پچ ها را FLAT می کنیم و به D بعد MAP می کنیمبرای حفظ اطلاعات positional , position embedding ها به patch embedding اضافه می شودنتیجه دنباله ای از بردار های embedding است که به عنوان ورودی به encoder داده می شودانکودر ترنسفرمر شامل لایه های متناوب multi head self attention و بلاک های MLP استقبل از هر بلاک layer norm و بعد از هر بلاک residual connection اعمال می شودبه طور معمول ما vit را روی دیتاست بزرگ pre train می کنیم و روی مجموعه دیتاست کوچک fine tune می کنیم به همین منظور ماprediction head از قبل آموزش داده شده را حذف می کنیم و یک لایه feed forward , D*K را با مقدار اولیه صفر attach می کنیم که K تعداد کلاس های downstream استاغلب سودمند تر است که fine tune را در رزولوشن بیشتری نسبت به pre train انجام دهیمهنگام بالا بردن وضوح تصاویر اندازه patch را یکسان نگه می داریم که منجر به طول دنباله موثربزرگتری می شود . ViT می تواند طول توالی دلخواه را مدیریت کند .سپس درون یابی 2 بعدی موقعیت embedding از پیش آموزش داده شده را بر اساس مکان ان در تصویر اصلی انجام می دهیمInductive bias :لازم به ذکر است Vision transformer ها دارای بایاس کمتری نسبت به CNN ها هستند . در CNN ها لوکالیتی , ساختار همسایگی دو بعدی در هر لایه در کل مدل اعمال می گردددر ViT تنها لایه MLP به صورت لوکال هستند. در حالیکه لایه های Self attention به صورت گلوبال هستند و ساختار همسایگی 2 بعدی خیلی کم استفاده می شودیکی در ابتدای مدل با کات کردن تصویر به مجموعه patch ها و یکی در زمان fine tune برای تنظیم posittion embedding برای تصویر با رزولوشن متفاوتComparison to state of arts :همانطور که از جدول بالا پیداست , بزرگترین مدل های vit , vit-L/16 و vit-L/14 را با بهترین مدل های CNN مقایسه می کنیماولیم مقایسه با big transformer (BiT) است که یادگیری یا نظارت را توسط large ResNet انجام می دهد دومین مورد مقایسه Noisy Student است که یک large efficient Net است که با استفاده از یادگیری نیمه نظارت شده در image net اموزش دیده استو هم چنین jft-300M با لیبل های ریموو شده.تمامی مدل ها با TpuV3 اموزش دیده اند . در جدول 2 می بینیم که Vit-L16 که pre train شده برJFT-300M از BiT-L بهتر عمل می کند در حالی که از لحاظ محاسباتی به تعداد منابع کمتری هم نیاز دارد .Vit-L/14 عملکرد را به ویژه در مجموعه داده های چالش برانگیز از جمله imageNet , cifar-100و VTAB بهبود می بخشدمدل های ترنسفرمری که بر دیتاست JFT-300M , pre trained شده اند , در همه دیتاست ها بهتر از ResNet عمل کرده اند در حلیکه تعداد منبع محاسباتی کمتری نیز نیاز داشته اندPre training data requirement:مدل های vision transformr زمانی که روی دیتاست JFT-300M , pre train شوند عملکرد خوبی دارند و نسبت به ResNet , inductive bias کمی دارندما 2 دسته آزمایش انجام می دهیم از کوچک به بزرگ ابتدا ViT را روی دیتا ست های image Net و image Net 21k و JFT-300M , pre train می کنیمبرای هبود عملکرد بر دیتاست های کوچک از 3 روش regulariztion استفاده می کنیم1. Weight decacy2. Drop out3. Label smoothingزمانی که روی دیتاست کوچکی مانند image Net فرایند pre train را انجام می دهیم می بینیم که vit-Large عملکرد بدتری نسبت به vit-Base داردبا imageNet-21kعملکرد هر دو تقریبا یکی است و روی JFT-300M مزیت مدل بزرگتر را به وضوح می بینیمدر دیتاست های کوچک مدل های ViT عملکرد بدتری نسبت به ResNet دارندعملکرد مدل های vit مختلف و bit با دیتاست با سایز های از کوچک به بزرگ همانطور که ذکر شد دانستیم که ViT ها برای داده های train با حجم بالا خیلی بهتر از CNN ها عمل می کنندبه عبارتی ViT در upper bound ها به خوبی عمل می کنند در حالی که CNN ها در Lower Bound ها عملکرد مناسب تری دارندکران بالا پیتانسیل دستیابی به عملکرد بالاتر است و کران پایین شبکه ها را قادر می سازد که هنگام اموزش با داده های محدود بهتر عمل کننداختلاف بین ViT و CNN ها می تواند توسط 2 , training setting مختلف در imageNet آشکار گرداولین, تنظیم استاندارد است که مخصوص شبکه های CNN است که زمان training کمتر است و data augmentation شامل موارد ابتدایی مثل size cropping و flipping استکه base performance نام دارددیگری تنظیماتی است که مختص مدل های transfomer based است که training schedule طولانی تری دارد و دارای data augmentation قوی تری است .ما از واژه elite performance برای اشاره به دقت این مدل اشاره می کنیم و از DieiT-S و ResNet-50 به عنوان مثال هایی برای transformer-base و CNN-based استفاده می کنیم. DeiT-S دارای elite performance بالاتری است اما ResNet برای base setting بسیار بهتر عمل می کندمتودی که استاده می کنیم انتقال تدریجی از یک مدل به مدل دیگر است تا بتوانیم ویژگی های ماژول و طرح ها را در این دو شبکه شناسایی کنیمهمانطور که ذکر شد Deit-s معرف ترنسفرمر مدل است و ResNet-50 معرف مدل های کانوولوشنی است اگر چه Deit_s دقت 80 درصدی گزارش کرده است و ResNet دقت 78 درصدی ,اما تغیراتی اساسی در Deit-S نسبت به حالت training استاندار صورت گرفته است مثلا تعداد ایپاک ها در DeiT-S حدودا 3 برابر شده است و data augmentation قوی تری اعمال شده استدو تنظیمات برای بهینه سازی recognition model وجود دارد:اولین Base setting است که توسط convolutional based model ها پذیرفته شده استمدل در 90 ایپاک آموزش می بیند , optimizer از نوع SGD است , learning rate از حدود 0.2برای بچ سایز 512 شروع می شود و به تدریج کاهش می یابد تا به 0.0001 برسد.از تابع cosine خطی اسفاده می شود و هم چنین یک data augmentation متوسط از جمله random size cropping و flipping اعمال می شوددومین راه elite setting است که برای بهبود مدل های transformer مناسب است. Optimizer آن از نوع adam است , learning rate از 0.005 با بچ سایز 512 و Data augmentation قوی ای نسبتا انجام می گیرد از جمله : Random Erasing و Repeated augmentation و stochastic depth که تعداد ایپاک 300 تاستThe transition from DeiT-S to ResNet-50در ادامه به راه هایی انتقال از شبکه Deit-S به ResNet می پردازیم برای جلوگیری از خارج شدن گزارش از حد مجاز به صورت تیتر وار این مراحل انتقال تدریجی را شرح می دهیم1. استفاده از batch Norm به جای layer Normمدل های ترنسفرمر فیچر ها را به صورت layer norm نرمال می کنند اما CNN-based ها مانند ResNetاز Batch Norm استفاده می کنند . layer norm مستقل از سایز بچ هست و برای وظایف خاص مناسب تر استدر حالی که batch norm می تواند با batch size مناسب به عملکرد بهتری برسد2. جایگزین کردن self attention ها با feed forwardبلاک های self attention را حذف کرده و با feed forward جایگزین می کنیم که در این شرایط شبکه convolution خالص می شود3. حذف کردن possition embedding4. استفاده از global average pooling به جای کلاس بندی توکن ها5. استفاده از کانولوشن های 3*36. حذف کردن پچ های embedding بزرگ و جایگزین کردن embedding های گام به گام7. طراحی مدل به شیوه گام به گام (Step-wise design)نتایج حاصل از اعمال تغییرات ذکر شده در دو مدل elite performance و base performance در جدول زیر مشاهده می شود :