SamGIS – چند یادداشت در مورد Segment Anything

“SAM” یک مدل پایه است که هدف آن انجام بخش بندی تصویر “صفر شات” است:
- آن را با مجموعه داده های تصویری بزرگ با مقدار زیادی از ماسک های تقسیم بندی ساخته و آموزش داده شده است
- تیم SAM وظیفه تقسیمبندی «سریع» را پیشنهاد میکند، که در آن هدف، بازگشت یک ماسک تقسیمبندی معتبر با توجه به هر درخواست تقسیمبندی است.
از آنجایی که این مدل باید بخشبندی «شات صفر» را انجام دهد، مدل باید از اعلانهای انعطافپذیر پشتیبانی کند، نیاز به محاسبه ماسکها در زمان واقعی مستهلکشده برای اجازه استفاده تعاملی دارد و باید از ابهام آگاه باشد. این معماری مدل است:
- منبع 1: یک رمزگذار تصویر یک جاسازی تصویر را محاسبه می کند
- منبع 2: یک رمزگذار اعلان سریع اعلان ها را تعبیه می کند
- خروجی: یک رمزگشای سریع ماسک این دو منبع را برای پیشبینی ماسکهای تقسیمبندی ترکیب میکند
از آنجایی که ماسکهای حاشیهنویسی بهطور آنلاین فراوان نیستند، بهویژه با کیفیت بالا، توسعهدهندگان SAM برای توسعه یک «موتور داده» تصمیم گرفتند که هم مدل و هم یادداشتهای مجموعه داده (از مرحله دستی تا نیمه خودکار تا کاملاً خودکار) را توسعه دهند. تصاویر در SA-1B مجموعه ای از کشورها از نظر جغرافیایی و اقتصادی متنوع را در بر می گیرند و ما دریافتیم که SAM در بین گروه های مختلف مردم به طور مشابه عمل می کند.
تکالیف هر چیزی را بخش بندی کنید
وظیفه
در اینجا تیم SAM دستورات را از NLP به بخش بندی ترجمه می کند (انتخاب / عدم انتخاب نقاط، کادر، ماسک، متن فرم آزاد). همانطور که یک مدل زبان باید یک پاسخ منسجم به یک اعلان مبهم ارائه کند، وظیفه تقسیمبندی سریع باید یک ماسک تقسیمبندی معتبر را با توجه به هر درخواستی بازگرداند.
پیش آموزش
تکلیف تقسیمبندی سریع یک الگوریتم پیشآموزشی طبیعی را پیشنهاد میکند که دنبالهای از اعلانها (به عنوان مثال، نقاط، جعبهها، ماسکها) را برای هر نمونه آموزشی شبیهسازی میکند و پیشبینیهای ماسک مدل را با حقیقت زمین مقایسه میکند.
مدل هر چیزی را بخش بندی کنید
رمزگذار تصویر
این الگوریتم از یک مبدل بینایی (ViT) از پیش آموزشدیده MAE («رمزکنندههای خودکار ماسکشده یادگیرندگان بینایی مقیاسپذیر هستند») استفاده میکند که حداقل برای پردازش ورودیهای با وضوح بالا سازگار است.
رمزگذار سریع
SAM از دو مجموعه دستورات پشتیبانی می کند:
- پراکنده (نقاط، کادر، متن)
- متراکم (ماسک)
SAM از طریق کدگذاری های موقعیتی که با جاسازی های آموخته شده برای هر نوع درخواست جمع می شود، دستور رسیدگی به نقاط و کادرها را می دهد. اعلانهای متراکم (یعنی ماسکها) با استفاده از کانولوشن جاسازی میشوند و از نظر عناصر با جاسازی تصویر جمعبندی میشوند.
رسیور ماسک
رمزگشای ماسک به طور کارآمدی جاسازی تصویر، تعبیههای سریع و یک نشانه خروجی را به یک ماسک نگاشت میکند. این طرح از اصلاح بلوک رمزگشای ترانسفورماتور و به دنبال آن یک سر پیش بینی ماسک پویا استفاده می کند. بلوک رمزگشا از توجه سریع و توجه متقابل در دو جهت (جاسازی سریع به تصویر و بالعکس) برای به روز رسانی همه جاسازی ها استفاده می کند. پس از اجرای دو بلوک، رویه از جاسازی تصویر نمونهبرداری میکند و یک MLP توکن خروجی را به یک طبقهبندی خطی پویا نگاشت میکند، که سپس احتمال پیشزمینه ماسک را در هر مکان تصویر محاسبه میکند.
رفع ابهام
با یک خروجی، برای جلوگیری از ادغام ماسک ها در صورت بروز یک درخواست مبهم، مدل می تواند بیش از یک ماسک خروجی را برای یک اعلان پیش بینی کند. 3 ماسک باید به بیشتر موارد رایج بپردازد (ماسک های تو در تو اغلب حداکثر سه عمیق هستند: کل، قسمت و فرعی). در طول تمرین، این روش تنها کمترین ضرر را نسبت به ماسک ها پشت سر می گذارد. برای رتبهبندی ماسکها، مدل یک امتیاز اطمینان (یعنی IoU تخمینی) را برای هر ماسک پیشبینی میکند.
درباره استفاده مجدد از جاسازی تصویر و SamGIS
پس از خواندن این مقاله متوجه شدم که می توانم ذخیره سازی طراحی نرم افزار SamGIS و استفاده مجدد از تعبیه های تصویر را بهبود بخشم.
من این تغییر را در SamGIS نسخه 1.3.0 اجرا کردم. برخی از داده های آزمایشی از نسخه ی نمایشی SamGIS که من استفاده کردم:
- درخواست اول: 5.42 ثانیه
- مدل فست سام نمونه
- تصویر ایجاد شده از نقشه وب (من از OpenStreetMap به عنوان ارائه دهنده کاشی و Mapnik به عنوان لایه نقشه استفاده می کنم)
- جاسازی تصویر ایجاد کرد
- درخواست دوم: 0.41 ثانیه
- از درخواست سوم تا هفتم: ~ 0.34 ثانیه
توجه داشته باشید که انجام یک درخواست بلافاصله پس از دیگری، احتمالاً به دلیل حافظه پنهان در حین بارگیری کاشی ها در سمت باطن، مدت زمان درخواست ها را پایین نگه می دارد. به جای اینکه بیش از 10 دقیقه منتظر بمانید، به نظر می رسد حافظه پنهان را باطل می کند، سپس به صورت متنی (کتابخانه GeoPandas که من به عنوان مشتری کاشی استفاده می کنم) از 0.5 تا 1.5 ثانیه زمان را در طول آزمایش های من برای دانلود کاشی ها اضافه کرد.
Click here to show my test request payload
{
"bbox": {
"ne": {
"lat": 46.236615111857255,
"lng": 9.519996643066408
},
"sw": {
"lat": 46.13405108959001,
"lng": 9.29821014404297
}
},
"prompt": [
{
"id": 146,
"type": "point",
"data": {
"lat": 46.18483299780137,
"lng": 9.418864745562386
},
"label": 1
}
],
"zoom": 13,
"source_type": "OpenStreetMap"
}
درباره Zero-Shot Text to Mask: LISA و SamGIS
SAM میتواند از پیامهای متنی ساده با فرم آزاد نیز استفاده کند. برای استفاده عملی از این ویژگی، نگاه کنید به:
البته می تواند مورد علاقه شما باشد همچنین کار ادغام من LISA با SamGIS و نسخه ی نمایشی آن. من باید به دلیل هزینه آن را متوقف کنم، اما من درخواست استفاده از یک GPU رایگان از HuggingFace را دارم.
اگر پروژه من را دوست دارید، لطفاً موضوع درخواست منبع GPU HuggingFace را لایک کنید یا در مورد آن نظر دهید.