شبکه ی SSD

یكي از مسائل مهم در زمينه ي پردازش تصوير، مسئله ي تشخيص اشيا حاضر در تصوير است. بدين منظور ساختار هاي زيادي طراحي و آزموده شده اند. شايد ساده ترين ساختاري كه براي اين كار به ذهن برسد، در نظر گرفتن بخش هاي كوچك از تصوير و انجام دادن عمل كلاس بندي روي هر بخش است. اين روش يك ضعف واضح دارد: براي اشيا ي بزرگ يا كوچك عمل كلاس بندي با دقت لازم انجام نميشود. پس روش ديگري كه ممكن است به ذهن برسد در نظر گرفتن پنجره هايي با سايز هاي متفاوت است كه روي تصوير حركت كرده و عمل كلاس بندي روي ناحيه ي حاضر در پنجره انجام شود. مشكلي كه اين روش ايجاد مي كند اول تعداد بسيار زياد عمليات هاي لازم براي كلاس بندي است و دوم نكه در نهايت همه ي اشيا در مكان هاي مشخصي تشخيص داده مي شوند و ناحيه ي دقيق هر شي حاضر در تصوير بدست نمي آيد. براي حل اين دو مشكل ايده هاي متفاوتي به كار گرفته شده است. به طور مثال ايراد اول كه تعداد زياد عمليات ها مي باشد را در نظر بگيريد. با تمركز بيشتر روي ايده ي پنجره هايي كه روي اشيا حركت مي كنند، مفهوم كانولوشن به ذهن خطور مي كند. همانطور كه مي دانيم شبكه هاي كانولوشني جزو رايج ترين ساختار ها براي كلاس بندي اشيا است. اين شبكه ها با توليد نقشه هاي ويژگي براي تصاوير با استفاده از عمل كانولوشن، ويژگي هاي متناظر با هر تصوير را بدست آورده و به دسته بندي اشيا مي پردازند. حال چه مي شود اگر بتوان از همين نقشه هاي ويژگي، هم براي تشخيص ناحيه ي حضور اشيا و هم براي كلاس بندي آنها استفاده كرد؟ به نظر مي رسد كه با اين كار مي توان تعداد عمليات هاي لازم را بسيار كاهش داد. ايراد ديگري كه گفته شد پيدا كردن ناحيه ي دقيق حضور شي است. ناحيه ي حضور هر شي را مي توان با ٤ مختصات براي مركز و طول و عرض مستطيل در بر گيرنده ي شي عنوان كرد. پس مسئله ي مورد بحث، مسئله ي پيدا كردن ٤ عدد مي باشد. يكي از راه حل هايي كه به ذهن مي رسد عنوان اين مسئله به عنوان يك مسئله ي رگرسيون است. با اين مقدمه به سراغ معرفي شبكه ي SSD مي رويم. نام كامل اين شبكه Detector Multibox Shot Single مي باشد. اين شبكه با بهره گيري از ايده هاي عنوان شده و چند ايده ي ديگر توانست به سرعت و دقت قابل قبولي در تشخيص اشيا ي حاضر در تصوير دست بيابد.ايده ي كلي اين شبكه اين است كه تصوير را به نواحي مربعي كوچك قطاع بندي كنيم و به مركزيت هر مربع تعدادي پنجره ي مستطيلي با ابعاد مختلف در نظر بگيريم و كلاس بندي را انجام دهيم. نكته اي كه در مقدمه هم گفته شد اين است كه بهتر است عمل قطاع بندي را به جاي تصوير اصلي روي نقشه هاي ويژگي اي كه از عمل كانولوشن حاصل مي شوند لحاظ كنيم تا حجم محاسبات كاهش يابد. پس اول بايد يك شبكه ي از قبل آموزش داده شده را مورد نظر قرار داد. اين شبكه از 16-VGG براي اين امر بهره گرفته است. سپس لايه هاي تخت شده ي آخر شبكه ي از قبل آموزش داده شده را حذف مي كنيم. براي اينكه بتوان دقت شبكه را براي اشيا با سايز هاي مختلف افزايش داد، به انتهاي شبكه چندين لايه ي كانولوشني ديگر با ابعاد مختلف و قاعدتا كوچك شونده قرار مي دهيم. سپس تعدادي از اين نقشه هاي ويژگي را در نظر ميگيريم. اين كار باعث مي شود تا ابعاد و نسبت هاي مختلف براي تصوير داده شده را بررسي كنيم. سپس نقشه ها را قطاع بندي كرده و مستطيل هايي با ابعاد مختلف به مركزيت هر قطاع را ايجاد مي كنيم. براي هر مستطيل، هم مكان و كادر شي هم دسته ي شي را پيش بيني مي كنيم. در زمان آموزش اول مستطيل هاي مناسب را به اشيا موجود نسبت مي دهيم. براي اين كار از معيار تشابه ژاكارد بهره ميگيريم. اگر معيار تشابه ژاكارد بين كادر واقعي شي و مستطيل مورد بحث بيشتر از ٥.٠ بود، آن مستطيل را به عنوان مستطيل حاوي شي در نظر ميگيريم. سپس مقدار تابع خطا را ضريبي از جمع نسبتي از خطا براي مكان وكادر شي و دسته ي شي تعريف مي كنيم.حال مي توان با روش هاي مرسوم براي آموزش شبكه هاي عصبي و بهره گيري از Propagation Back سعي كرد تا خطاي شبكه را كاهش داد. براي تابع خطاي توصيف كننده ي خطاي مكان يابي از خطاي loss L1 Smoth و براي تابع توصيف كننده ي خطاي دسته بندي از loss Softmax بهره مي گيريم. با اين تعابير مدل مي تواند آموزش ببيند تا پيش بيني از كلاس شي و مكان آن را بدست آورد. براي اينكه بتوان پيش بيني بهتري داشت، اين مدل هم از نقشه هاي ويژگي لايه هاي نزديك تر به ورودي و هم از نقشه هاي ويژگي مربوط به لايه هاي دور تر از ورودي بهره ميگيرد. نكته اي كه در اين ميان بايد مورد توجه قرار گيرد، ابعاد مختلف نقشه هاي ويژگي است. براي اينكه بتوان روي هر نقشه پيش بيني انجام داد، بايد ابعاد مستطيل هاي مورد بررسي روي هر نقشه را در نهايت با ابعاد تصوير ورودي هم نسبت سازي كرد. با اين كار اگر نياز باشد تا شبكه روي داده هاي جديد با ويژگي هاي ابعادي 6 خاص به كار گرفته شود هم مي توان به سادگي ابعاد جديدي براي مستطيل هاي مورد بحث تعريف كرد و نيازي به تغيير ساختاري در شبكه نمي باشد. نكته ي ديگر، طبق روشي كه براي تعريف مستطيل هاي شامل داده و مستطيل هاي خالي از داده تعريف كرديم، تعداد داده هاي منفي، كه همان مستطيل هاي خالي از داده هستند، خيلي بيشتر از داده هاي مثبت است و ممكن است مدل تمايل پيدا كند كه همه ي مستطيل ها را خالي پيش بيني كند تا دقتش بالا برود. براي رسيدگي به اين مسئله، از همه ي داده هاي منفي براي آموزش استفاده نميشود، بلكه فقط آنهايي كه علارقم خالي بودن، طبق پيش بيني مدل به احتمال زياد حاوي شي اي متعلق به دسته هاي تعريف شده هستند را در نظر ميگيريم. به عبارتي آنهايي را انتخاب مي كنيم كه بيشتر از مابقي مدل را به اشتباه انداخته اند. در نهايت داده هاي منفي و مثبت مورد استفاده داراي نسبت ٣ به ١ خواهند بود. براي اينكه جامعيت مدل بالا رود در هنگام آموزش عكس ها به طور رندوم:  به طور كامل استفاده شده اند.  قسمت هايي از آن مورد استفاده قرار گرفته است.  قسمت هايي مورد استفاده قرار گرفته اند كه طبق معيار شباهت ژاكارد حد اقل ١.٠ ،٣.٠، ٥.٠، ٩.٠ با كادر اشيا شباهت داشتند. نسخه ي 16-VGG مورد استفاده براي اين شبكه، نسخه ي تغيير يافته ي حاوي متد atros مي باشد كه سرعت شبكه را بدون كاهش دقت بالا مي برد.