Здравейте всички! Актуализирах този блог с ново съдържание и нови снимки. Моля, посетете: http://www.shuffleai.blog/blog/Understanding_Mask_R-CNN_Basic_Architecture.html . И добре дошли в нашия блог: http://shuffleai.blog .

По-долу е оригиналът.

Mask RCNN е новото ниво на изкуството по отношение на сегментирането на екземпляри. Има строги документи, лесни за разбиране уроци с добро качество на кодове с отворен код за ваша справка. Тук искам да споделя малко просто разбиране за това, за да ви дам първи поглед.

Mask RCNN е дълбока невронна мрежа, насочена към решаване на проблема със сегментирането на екземпляри в машинното обучение или компютърното зрение. С други думи, може да разделя различни обекти в изображение или видео. Вие му давате изображение, то ви дава обекта, ограничаващ полета, класове и маски.

Има два етапа на маската RCNN. Първо, той генерира предложения за регионите, където може да има обект въз основа на входното изображение. Второ, той предвижда класа на обекта, прецизира ограничителната кутия и генерира маска на ниво пиксел на обекта въз основа на предложението от първия етап. И двата етапа са свързани с гръбначната структура.

Какво е гръбнак? Backbone е дълбока невронна мрежа в стил FPN. Състои се от път отдолу нагоре, път отгоре надолу и странични връзки. Пътят отдолу нагоре може да бъде всеки ConvNet, обикновено ResNet или VGG, който извлича функции от необработени изображения. Пътеката отгоре-надолу генерира пирамидална карта на функции, която е подобна по размер на пътя отдолу-нагоре. Страничните връзки са операции на навиване и добавяне между две съответстващи нива на двата пътя. FPN превъзхожда други единични ConvNets главно поради причината, че поддържа силни семантични характеристики при различни мащаби на разделителна способност.

Сега нека да разгледаме първия етап. Лека невронна мрежа, наречена RPN, сканира всички FPN пътища отгоре до долу (наричани по-нататък карта на характеристики) и предлага региони, които могат да съдържат обекти. Въпреки че сканирането на картата на функциите е ефективен начин, имаме нужда от метод за обвързване на функции с местоположението на необработеното им изображение. Ето ги и котвите. Анкерите са набор от кутии с предварително дефинирани местоположения и мащаби спрямо изображенията. Класовете на основната истина (само двоичният файл на обекта или фона, класифициран на този етап) и ограничаващите полета се присвояват на отделни котви според някаква стойност на IoU. Тъй като котвите с различни мащаби се свързват с различни нива на картата на характеристиките, RPN използва тези котви, за да разбере къде от картата на характеристиките „трябва“ да получи обект и какъв е размерът на неговата ограничителна кутия. Тук можем да се съгласим, че свиването, намаляването и увеличаването на семплирането ще запазят функциите да останат на същите относителни местоположения като обектите в оригиналното изображение и няма да ги объркат.

На втория етап друга невронна мрежа взема предложени региони от първия етап и ги присвоява на няколко специфични области на ниво карта на характеристиките, сканира тези области и генерира класове обекти (многокатегорични класифицирани), ограничаващи полета и маски. Процедурата изглежда подобна на RPN. Разликите са, че без помощта на котви, етап-2 използва трик, наречен ROIAlign, за да локализира съответните области на картата на характеристиките и има клон, генериращ маски за всеки обект на ниво пиксел.

Най-вдъхновяващите неща, които открих за Mask RCNN, е, че всъщност можем да принудим различни слоеве в невронната мрежа да научат функции с различни мащаби, точно като котвите и ROIAlign, вместо да третираме слоевете като черна кутия.

Ако се интересувате от повече подробности за изпълнението на Mask RCNN, моля, прочетете връзките, дадени в тази статия. Оставете коментари по-долу, ако имате въпроси.