Melika Sadeghi
Melika Sadeghi
خواندن ۱۲ دقیقه·۳ سال پیش

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 پارت را کاهش می دهیم

  1. backbone
  2. box head
  3. mask 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 decacy

2. Drop out

3. Label smoothing

زمانی که روی دیتاست کوچکی مانند image Net فرایند pre train را انجام می دهیم می بینیم که vit-Large عملکرد بدتری نسبت به vit-Base دارد

با imageNet-21kعملکرد هر دو تقریبا یکی است و روی JFT-300M مزیت مدل بزرگتر را به وضوح می بینیم

در دیتاست های کوچک مدل های ViT عملکرد بدتری نسبت به ResNet دارند

عملکرد مدل های vit  مختلف و bit  با دیتاست با سایز های از کوچک به بزرگ
عملکرد مدل های 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 embedding

4. استفاده از global average pooling به جای کلاس بندی توکن ها

5. استفاده از کانولوشن های 3*3

6. حذف کردن پچ های embedding بزرگ و جایگزین کردن embedding های گام به گام

7. طراحی مدل به شیوه گام به گام (Step-wise design)

نتایج حاصل از اعمال تغییرات ذکر شده در دو مدل elite performance و base performance در جدول زیر مشاهده می شود :


هاآموزش
شاید از این پست‌ها خوشتان بیاید