برخی از شبکه های عصبی کانولوشنال مانند نسخه های جدیدتر YOLO از لنگرها (Anchors)برای مکان یابی استفاده می کنند. بنابراین قبل از شروع آموزش شبکه،لازم است بر اساس داده هایی که در دسترس داریم نوع لنگرها را انتخاب کنیم. لنگر ها بر اساس سایز اشیاء موجود در دیتاست مانند یک مقدار ثابت برای مدل تعیین می شوند. این کادر ها براساس اندازه و نسبت طول و عرض اشیاء مورد نیاز برای شناسایی در دیتاست آموزش تعیین می شوند.
انتخاب لنگر های خوب مهم است زیرا YOLO به صورت مستقیم کادر های محدود کننده را انتخاب نمی کند، بلکه این امر طریقه جابجایی کادرهای لنگر انجام میگیرد. طبیعی است که شبکه عصبی جابجایی های کوچک را بهتر (با دقت بیشتر) پیش بینی کند. بنابراین انتخاب کادر های لنگر مناسب باعث زحمت کمتر توسط شبکه عصبی و دقت بیشتر برای نتیجه های تولید شده توسط مدل می شود. الگوریتم شناسایی اتوماتیک لنگرها اولین بار در YOLOv5 معرفی شد و بدون تغییر در YOLOv7 استفاده شد در ادامه به این بررسی این الگوریتم می پردازیم.
قبل از آموزش الگوریتم بررسی می کند تا متوجه شود که لنگر ها چگونه بر اشیاء موجود در دیتا ست منطبق می شود. اگر انطباق به درستی صورت نگیرد الگوریتم دوباره لنگر ها را محاسبه میکند، و مدل دوباره با لنگر های جدید و مناسب دوباره آموزش می بیند.
میتوان این الگوریتم را در چهار قدم بررسی کرد:
قدم اول: دستیابی به سایز کادر محدود کننده مناسب از طریق داده های آموزش
قدم دوم: انتخاب معیاری برای بررسی انطباق لنگرها
قدم سوم: انجام خوشه بندی(clustering) برای دستیابی به حدس اولیه برای لنگر ها
قدم چهارم: تکامل لنگرها برای بهبود انطباق آنها
قدم اول: دستیابی به سایز کادر محدود کننده مناسب از طریق داده های آموزش
چیزی که نیاز است طول و عرض تمامی کادر های محدود کننده برای تمامی تصاویر آموزش است.این طول و عرض باید بر اساس پیکسل های تصویری که تغییر اندازه داده شده محاسبه شود.اندازه ورودی پیش فرض تصویر برای مدل YOLOv5 و YOLOv7 مقدار 640640 x پیکسل است،که به این معنا است که تصاویری بزرگتر از سایز 640 مانند (تصویر1) با حفظ نسبت طول به عرض باید به این اندازه منتقل شوند.
(تصویر1)
قدم دوم:انتخاب معیاری برای بررسی انطباق لنگرها
در ادامه نیاز به معیاری برای مقایسه دسته های کادرهای لنگر و بررسی اینکه کدام یک از کادرها انطباق بهتری دارند، داریم. این معیار باید مرتبط با تابع زیان به خصوص پارامتر زیان کادر(box loss) باشد.اگر کادر های محدود کننده بر اساس این معیار انتخاب شوند آموزش مدل با مقدار زیان کمتری آغاز می شود.
در ادامه به بررسی معیار استفاده شده در YOLO برای پیدا کردن اتوماتیک لنگر ها می پردازیم:
آستانه(threshold) به عنوان یک ابر پارامتر تعیین می شود(با نام anchor_t ،که با مقدار پیش فرض 4 نعیین شده است،و گاهی از طریق 1 بر anchor_t تعریف می شود که مقدار 0.25 است) .این آستانه به این معنا است که اگر کادر لنگر از چهار برابر کادر محدود کننده لیبل(کادر صحیح موجود در دیتا ست آموزش) بزرگتر و یا کوچک تر نباشد ما آن را به عنوان کادر لنگر مناسب در نظر میگیریم.
هدف ما آن است که هر کادر محدود کننده لیبل تا حد امکان کادر لنگری نزدیک به خود داشته باشد،و مقدار این نزدیکی از طریق آستانه تنظیم میشود.
انطباق مناسب بر اساس میانگین انجام می شود به این معنا که برخی از کادر های محدود کننده(احتمالاً موارد پرت) ممکن است فاصله زیادی با هر یک از لنگر ها داشته باشند.برای درک بهتری از این پروسه پیشنهاد میشود که (تصویر 2) را بررسی شود.
(تصویر2)
قدم سوم :انجام خوشه بندی(clustering) برای دستیابی به حدس اولیه برای لنگر ها
در الگوریتم YOLOv2،کادرهای لنگر به وسیله خوشه بندی k میانگین (k-means Clustering) محاسبه می شود.معیار فاصله معمول برای خوشه بندی k میانگین فاصله اقلیدسی (Euclidean Distance) است،اما با این معیار هرچه که اندازه کادر بزرگتر باشد مقدار خطای بیشتری را تولید می کند و مقدار جریمه وابستگی زیادی به اندازه کادر می شود، بنابراین نویسندگان این مقاله از معیار IoU مخفف عبارت Intersection over Union که به آن اندیس ژاکار ( Jaccard index ) نیز گفته میشود به عنوان معیار استفاده کردند.که این معیار ارتباط نزدیک تری با تابع زیان الگوریتم YOLOدارد.
انجام خوشه بندی k میانگین روش مناسبی است،و به نتایج بسیار بهتری نسبت به انتخاب دستی کادر های لنگر منجر می شود.با این وجود نویسندگان نسخههای جدیدتر الگوریتم YOLOتصمیم بر این گرفتند که از این هم جلوتر بروند و از نتایج انجام خوشه بندی k میانگین به عنوان حدس اولیه برای کادر های محدود کننده استفاده کردند و در ادامه از الگوریتمی مبتنی بر تکامل که در قدم چهارم بررسی می شود برای پیدا کرد بهترین دسته کادر های لنگر بر اساس معیار انتخاب شده در قدم دوم استفاده می شود.
الگوریتم های YOLOv5 وYOLOv7 در حالت پیش فرض از 9 کادر لنگر استفاده می کنند بنابراین تعداد خوشه ها نیز در این حالت باید برابر 9 تنظیم شود.به این خوشه بندی بر اساس تعداد پیکسل های عرض و طول کادر های محدود کننده لیبل در داده های آموزش انجام می شود (تصویر3) .
(تصویر3)
قدم چهارم: تکامل لنگرها برای بهبود انطباق آنها
الگوریتم های تکاملی از طبیعت الهام گرفته اند و زیبایی آن ها در سادگی آنها است. در این الگوریتم کادر های لنگر پس از مرحله خوشه بندی k میانگین، با تغییر تصادفی به میزان کم در طول و عرض برخی از کادر های لنگر فرآیندجهش پیدا کردن (mutate) انجام میود، سپس معیار انطباق(fitness) بررسی میشود.اگر لنگر های جهش پیدا کرده شده بهتر باشند ،جهش بعدی بر رویه این دسته از لنگر ها انجام می گیرد و در غیر این صورت از لنگر های قبلی استفاده میشود(تصویر4).
(تصویر4)
در الگوریتم های YOLOv5 و YOLOv7 تکامل با 1000 تکرار در حالت پیشفرض انجام میشود و باعث بهبود لنگر های اولیه می شود.