Архитектура нейронной сети RetinaNet

Данная статья посвящается объяснению устройства архитектуры нейронной сети RetinaNet. Обзор был проведён мною в ходе выполнения дипломной работы, а так как для его написания потребовалось обращаться исключительно к англоязычным источникам и собрать найденную информацию воедино, я решил, что полученный материал поможет кому-то сократить время на поиск нужной информации и упростить понимание устройства нейросетей для задачи Object Detection.

Введение


Архитектура свёрточной нейронной сети (СНС) RetinaNet состоит из 4 основных частей, каждая из которых имеет своё назначение:

a) Backbone – основная (базовая) сеть, служащая для извлечения признаков из поступающего на вход изображения. Данная часть сети является вариативной и в её основу могут входить классификационные нейросети, такие как ResNet, VGG, EfficientNet и другие;

b) Feature Pyramid Net (FPN) – свёрточная нейронная сеть, построенная в виде пирамиды, служащая для объединения достоинств карт признаков нижних и верхних уровней сети, первые имеют высокое разрешение, но низкую семантическую, обобщающую способность; вторые — наоборот;

c) Classification Subnet – подсеть, извлекающая из FPN информацию о классах объектов, решая задачу классификации;

d) Regression Subnet – подсеть, извлекающая из FPN информацию о координатах объектов на изображении, решая задачу регрессии.

На рис. 1 изображена архитектура RetinaNet c ResNet нейросетью в качестве backbone.


Рисунок 1 – Архитектура RetinaNet с backbone-сетью ResNet

Разберём подробно каждую из частей RetinaNet, представленных на рис. 1.

Backbone часть сети RetinaNet


Учитывая, что часть архитектуры RetinaNet, которая принимает на вход изображение и выделяет важные признаки, является вариативной и извлеченная из этой части информация будет обрабатываться на следующих этапах, то важно выбрать подходящую backbone-сеть для лучших результатов.

Недавние исследования по оптимизации СНС позволили разработать классификационные модели, которые опередили все ранее разработанные архитектуры с лучшими показателями точности на датасете ImageNet при улучшении эффективности в 10 раз. Данные сети получили название EfficientNet-B(0-7). Показатели семейства новых сетей представлены на рис. 2.


Рисунок 2 – График зависимости наибольшего показателя точности от количества весов сети для различных архитектур

Пирамида признаков


Feature Pyramid Network состоит из трёх основных частей: восходящий путь (bottom-up pathway), нисходящий путь (top-down pathway) и боковые соединения (lateral connections).
Восходящий путь представляет собой некую иерархическую «пирамиду» – последовательность свёрточных слоёв с уменьшающейся размерностью, в нашем случае – backbone сеть. Верхние слои сверточной сети имеют большее семантическое значение, но меньшее разрешение, а нижние наоборот (рис. 3). Bottom-up pathway имеет уязвимость при извлечении признаков – потеря важной информации об объекте, например из-за зашумления небольшого, но значимого, объекта фоном, так как к концу сети информация сильно сжата и обобщена.


Рисунок 3 – Особенности карт признаков на разных уровнях нейросети

Нисходящий путь также представляет собой «пирамиду». Карты признаков верхнего слоя этой пирамиды имеют размер карт признаков верхнего слоя bottom-up пирамиды и увеличиваются вдвое методом ближайшего соседа (рис. 4) по направлению вниз.


Рисунок 4 – Увеличение разрешения изображения методом ближайшего соседа

Таким образом в top-down сети каждая карта признаков вышележащего слоя увеличивается до размеров карты нижележащего. Помимо этого, в FPN присутствуют боковые соединения, это означает, что карты признаков соответствующих слоёв bottom-up и top-down пирамид поэлементно складываются, причём карты из bottom-up проходят свёртку 1*1. Этот процесс схематично представлен на рис. 5.


Рисунок 5 – Устройство пирамиды признаков

Боковые соединения решают проблему затухания важных сигналов в процессе прохода по слоям, совмещая семантически важную информацию, полученную к концу первой пирамиды и более детальную информацию, полученную в ней ранее.

Далее, каждый из полученных слоёв в top-down пирамиде обрабатывается двумя подсетями.

Подсети классификации и регреcсии


Третей частью архитектуры RetinaNet являются две подсети: классификационная и регрессионная (рис. 6). Каждая из этих подсетей образует на выходе ответ о классе объекта и его расположении на изображении. Рассмотрим принцип работы каждой из них.


Рисунок 6 – Подсети RetinaNet

Разница в принципах работы рассматриваемых блоков (подсетей) не отличается до последнего слоя. Каждый из них состоит из 4 слоёв свёрточных сетей. В слое формируются 256 карт признаков. На пятом слое количество карт признаков изменяется: регрессионная подсеть имеет 4*A карт признаков, классификационная – K*A карт признаков, где A – количество якорных рамок (подробное описание якорных рамок в следующем подразделе), K – количество классов объектов.

В последнем, шестом, слое каждая карта признаков преобразуется в набор векторов. Регрессионная модель на выходе имеет для каждой якорной рамки вектор из 4 значений, указывающих смещение целевой рамки (англ. ground-truth box) относительно якорной. Классификационная модель имеет на выходе для каждой якорной рамки one-hot вектор длиной K, в котором индекс со значением 1 соответствует номеру класса, который нейросеть присвоила объекту.

Якорные рамки


В прошлом разделе был использован термин якорных рамок. Якорная рамка (англ. anchor box) – гиперпараметр нейросетей-детекторов, заранее определенный ограничивающий прямоугольник, относительно которого работает сеть.

Допустим, сеть имеет на выходе карту признаков размером 3*3. В RetinaNet каждая из ячеек имеет 9 якорных рамок, каждая из которых имеет разный размер и соотношение сторон (рис. 7). Во время обучения каждой целевой рамке подбираются в соответствие якорные рамки. Если их показатель IoU имеет значение от 0.5, то якорная рамка назначается целевой, если значение меньше 0.4, то она считается фоном, в других случаях якорная рамка будет проигнорирована для обучения. Классификационная сеть обучается относительно выполненного назначения (класс объекта или фон), регрессионная сеть обучается относительно координат якорной рамки (важно отметить, что ошибка вычисляется относительно якорной, но не целевой рамки).


Рисунок 7 – Якорные рамки для одной ячейки карты признаков с размером 3*3

Функции потерь


Потери RetinaNet являются составными, их составляют два значения: ошибка регрессии, или локализации (ниже обозначено как Lloc), и ошибка классификации (ниже обозначено как Lcls). Общая функция потерь может быть записана как:

$L=\lambda Lloc+Lcls\mathrm{\ \ \ \ \ \ }$


Где λ является гиперпараметром, который контролирует баланс между двумя потерями.

Рассмотрим подробнее вычисление каждой из потерь.
Как было описано ранее, каждой целевой рамке назначается якорная. Обозначим эти пары как (Ai,Gi)i=1,...N, где А представляет якорь, G – целевую рамку, а N количество сопоставленных пар.

Для каждого якоря регрессионная сеть предсказывает 4 числа, которые можно обозначить как Pi=(Pix,Piy,Piw,Pih). Первые две пары означают предсказанную разницу между координатами центров якорной Ai и целевой рамки Gi, а последние две – предсказанную разницу между их шириной и высотой. Соответственно, для каждой целевой рамки вычисляется Ti, как разница между якорной и целевой рамкой:

$Lloc=\sum j\in\left\{x,y,w,h\right\}smoothL\mathrm{1}\left(Pij-Tij\right)\mathrm{\ }$


Где smoothL1(х) определяется формулой ниже:



Потери задачи классификации в сети RetinaNet вычисляются с помощью функции Focal loss.

$Lcls=-i=1Kαiyilog(pi)(1-pi)\gamma$



где К – количество классов, уi – целевое значение класса, р – вероятность предсказания i-го класса, γ – параметр фокуса, α – коэффициент смещения. Данная функция является усовершенствованной функцией кросс-энтропии. Отличие заключается в добавлении параметра γ∈(0,+∞), который решает проблему несбалансированности классов. Во время обучения, большая часть объектов, обрабатываемых классификатором, является фоном, который является отдельным классом. Поэтому может возникнуть проблема, когда нейросеть обучится определять фон лучше, чем другие объекты. Добавление нового параметра решило данную проблему, уменьшив значение ошибки для легко классифицируемых объектов. Графики функций focal и cross entropy представлены на рис.8.


Рисунок 8 – Графики focal и cross entropy функций

Спасибо за прочтение данной статьи!


Список источников:

  1. Tan M., Le Q. V. EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks. 2019. URL: arxiv.org/abs/1905.11946
  2. Zeng N. RetinaNet Explained and Demystified [Электронный ресурс]. 2018 URL: blog.zenggyu.com/en/post/2018-12-05/retinanet-explained-and-demystified
  3. Review: RetinaNet — Focal Loss (Object Detection) [Электронный ресурс]. 2019 URL: towardsdatascience.com/review-retinanet-focal-loss-object-detection-38fba6afabe4
  4. Tsung-Yi Lin Focal Loss for Dense Object Detection. 2017. URL: arxiv.org/abs/1708.02002
  5. The intuition behind RetinaNet [Электронный ресурс]. 2018 URL: medium.com/@14prakash/the-intuition-behind-retinanet-eb636755607d
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 50

    0
    Пирамида признаков, якорные рамки…
    Что-то мы топчемся по кругу.
    Как обобщает? Инвариантность к масштабу? Повороту? Шум? Афинные искажения? А если яркость изменить на цветном изображении?
    Если какой то прогресс в данных направлениях?
    с лучшими показателями точности на датасете ImageNet при улучшении эффективности в 10 раз

    Эффективность как измеряете?
      +3
      Вопросов много, но ни одного касательно архитектуры RetinaNet я не увидел.

      Под эффективностью подразумевается отношение показателя точности к количеству параметров(весов) нейронной сети.
        0
        Вопросов много, но ни одного касательно архитектуры RetinaNet я не увидел.

        А вот это печально. И это я еще не придираюсь)
        Под эффективностью подразумевается отношение показателя точности к количеству параметров(весов) нейронной сети.

        Если вашу сеть загрузим в Теслу — сядете на пассажирское кресло? Без водителя? В режиме автопилота?
          0
          В Тесле фундаментально такой же подход, один похожий backbone + разные декодеры/выходы под разные задачи.
            0
            Вопрос прикладного применения сети.
            Куда ее?
              0

              В первом же абзаце


              для задачи Object Detection.

              В тесле это может быть обнаружение автомобилей, пешеходов и т.д. Впрочем, я не удивлюсь если у них там решение которое использует несколько камер одновременно даже для детекта

                0
                Bottom-up pathway имеет уязвимость при извлечении признаков – потеря важной информации об объекте, например из-за зашумления небольшого, но значимого, объекта фоном, так как к концу сети информация сильно сжата и обобщена.

                Будем рвать фразы из контекста?)

                Рассказать почему такая уязвимость?
                  0
                  расскажите конечно
                    0
                    Будем рвать фразы из контекста?)

                    Так, у вас был комментарий https://habr.com/ru/post/510560/#comment_21837260


                    Вопрос прикладного применения сети.
                    Куда ее?

                    Я — ответил


                    Рассказать почему такая уязвимость?

                    Скорее всего я в курсе, но раскройте мысль, а то сложно вести с вами дискуссию без конкретики.

                      0
                      Я — ответил

                      Я как бы понимаю, что для Object Detection)
                      Скорее всего я в курсе

                      Это касается все сети.

                      Автор сделал жесткий dropout ТОПовых сетей для ImageNet. Убрал кучу нужных ветвей и слоев и говорит об эффективности на порядок.
                      Эти «ненужные ветви и слои» создают аналоги ансамблей, которые дают устойчивость к искажениям в том или ином измерении.
                      В итоге — малейший шум и RetinaNet является бесполезным механизмом.
                      Я с таким успехом могу брать конкретный искомый образ и делать свертку по изображению без слоев. Искать его по max отклику (утрирую конечно).

                        0
                        Это касается все сети.

                        Вот тут не понял что хотите сказать.


                        Автор сделал жесткий dropout

                        Кажется путаете дропаут с прунингом, и то я не уверен. Это вы к тому, что автор использовал EfficientNet в качестве бэкбона?


                        Эти «ненужные ветви и слои» создают аналоги ансамблей, которые дают устойчивость к искажениям в том или ином измерении.
                        В итоге — малейший шум и RetinaNet является бесполезным механизмом.
                        Я с таким успехом могу брать конкретный искомый образ и делать свертку по изображению без слоев. Искать его по max отклику (утрирую конечно).

                        Это очень серьезное заявление. А есть пруфы? В смысле ваши эксперименты и сравнения с версией автора. С метриками и/или визуальными примерами. Желательно с исходниками, т.к. есть версия что вы не очень хорошо разбираетесь в современном DL и могли просто что-то не правильно натренировать. Без обид.


                        С таким же успехом можно сказать что автор сделал все правильно, т.к. лишние слои это прямой путь к оверфиту, который в том числе выражается к меньшей устойчивостью к шуму и т.д.


                        EfficientNet (если вы про него, конечно) не самая простая вещь в тренировке, но за последние месяцы она стала весьма популярна в соревнованиях на kaggle, что говорит о том, что архитектруа вполне себе рабочая.

                          0
                          Я предлагаю услышать меня)
                          Вы заигрались с CNN и перцептронами. Со всем уважением к kaggle.
                          Ваши «эффективные сети» приводят к банальностям типа этой.
                          Потому что вы недооцениваете сложность задач.

                            0

                            Без обид, но вам следует подтянуть теорию и набить руку на реальных задачах. На нейронках, или на чем-то еще, неважно. Потому что вы не совсем понимаете специфику Computer Vision как такового.


                            Потому что он не решается полностью. Совсем. Можно только постепенно покрывать все большее и большее число случаев. Такие "смешные" фейлы были и будут на любых методах — паттерн матчинге, AAM, SURF+SVM, каскадах Хаара и т.д. Просто нейронки сейчас качественно лучше чем все остальное на основных задачах.


                            Можете мне не верить, без проблем, просто попробуйте сделать алгоритм детектирования объектов, который решает ту же задачу что и тесловский. И тогда придет понимание почему это не так просто, и почему обучаемые методы предпочтительней (спойлер: потому что подбирать руками эвристики под все случаи нереально).


                            Если что, у меня основная экспертиза именно в классическом "без нейроночном" CV.


                            Ваши «эффективные сети» приводят к банальностям типа этой.

                            EfficientNet достаточно свежая сетка, к слову маловероятно что в тесле на тот момент была именно она.


                            И да, на мои вопросы вы так и не ответили. Не про то что вы имели под "dropout" (вы же понимаете что это такое?). Не про то, откуда вы взяли что "лишние ветви" помогают в этом конкретном случае. Так не интересно, ей богу.

                              0
                              Потому что вы не совсем понимаете специфику Computer Vision как такового.

                              Я бы не стал так заявлять на вашем месте.
                              Специфика и проблемы CV не изменились за полвека. Если я не совсем правильно употребил термин — вы же меня все равно поняли.
                              Вы, как и другие спецы «со степенями», любите кидаться терминами, понятиями, но вы не хотите слышать простые концепции.
                              Можете мне не верить, без проблем, просто попробуйте сделать алгоритм детектирования объектов, который решает ту же задачу что и тесловский. И тогда придет понимание почему это не так просто

                              Я верю вам. И повторяю — вы недооцениваете сложность задач. Задачи классификации, обобщения итп делает наш мозг, а не глаз («аналогом» которого является «пирамида CNN»). Мозг это не dense и не CNN. Это «машина» грандиозной мощности и эффективности.
                              И да, на мои вопросы вы так и не ответили.

                              Ответил. Просто это был не тот ответ, который вы ожидали.
                                0
                                Вы, как и другие спецы «со степенями», любите кидаться терминами, понятиями, но вы не хотите слышать простые концепции.

                                Так расскажите об этих концепциях. Пока что в этих комментариях вы сделали 2 вещи:
                                1) Спросили работает ли RetinaNet с повернутыми/отмасштабированными объектами, возможно имея ввиду что из-за природы свертки они не будут работать на поворотах не на 90 градусов и не будут работать на масштабах не кратным 2. На что вам ответили что все работает, и привели название механизма которым это достигается.
                                2) Заявили что автор зря "сделал жесткий dropout", толком не объяснив что вы имеете ввиду, и не предоставив адекватных объяснений или доказательств.


                                И еще раз, у меня особых степеней нет.


                                Я верю вам. И повторяю — вы недооцениваете сложность задач. Задачи классификации, обобщения итп делает наш мозг, а не глаз («аналогом» которого является «пирамида CNN»). Мозг это не dense и не CNN. Это «машина» грандиозной мощности и эффективности.

                                Все смешалось в кучу. Серьезно, почитайте хоть что-нибудь по теории перед тем как делать такие заявления.
                                Алгоритмы компьютерного зрения не обязаны повторять работу мозга или глаза, чтобы решать поставленную задачу. Вы же не возмущаетесь что самолеты не машут крыльями в полете?
                                И да, мозг не совершенен, он тоже делает ошибки.
                                Дальше, да, можно сказать что CNN/нейронки в чем-то вдохновлялись биологией, но откровенно говоря весь современный прогресс в DL не имеет отношения к биологии, и это совершенно нормально.


                                Задачи классификации, обобщения итп делает наш мозг, а не глаз («аналогом» которого является «пирамида CNN»).

                                Почитайте https://en.wikipedia.org/wiki/Convolutional_neural_network#History CNN не имеет отношения к глазу. Она вдохновлялась visual cortex, который внезапно — часть мозга


                                Ответил. Просто это был не тот ответ, который вы ожидали.

                                Нет, не ответили. Можно я вас процитирую?


                                Интересный способ технической беседы.
                                Вместо конкретных цифр говорить общими фразами)

                                Конкретных ответов вы не дали.

                                  0
                                  Дал. Вот он.
                                  «Заигрались вы» )
                                    +1

                                    Вас не смущает что вы требуете конкретных ответов на свои вопросы (коммент про внедрение внизу) а сами не можете конкретно ответить когда спрашивают вас?


                                    Давайте попробуем тогда по одному вопросу за раз — что такое в вашем понимании dropout?

                                      0
                                      Вас не смущает что вы требуете конкретных ответов на свои вопросы (коммент про внедрение внизу) а сами не можете конкретно ответить когда спрашивают вас?

                                      А я их как бы и не получил. Я отвечаю ровно в той же манере что и вы)
                                      Давайте попробуем тогда по одному вопросу за раз — что такое в вашем понимании dropout?

                                      Я сразу понял, что вы пытаетесь меня уличить в дилетантизме, но почему то не хотите «читать между строк» моих.
                                      Я писал про dropout
                                      Убрал кучу нужных ветвей и слоев и говорит об эффективности на порядок.
                                      Эти «ненужные ветви и слои» создают аналоги ансамблей, которые дают устойчивость к искажениям в том или ином измерении.

                                      Не тратьте свое и мое время. Я отвечу на большинство «заумных вопросов» простыми словами, как и нужно делать профессионалу. И даже опишу более сложные концепции.

                                      Одну из которых я пытаюсь тут донести, но вы «ковыряетесь в прошлом».
                                      Без обид)
                                        0
                                        Я отвечу на большинство «заумных вопросов» простыми словами, как и нужно делать профессионалу. И даже опишу более сложные концепции.

                                        Профессионалы как бы должны понимать как работают те вещи, о которых они говорят.


                                        Я сразу понял, что вы пытаетесь меня уличить в дилетантизме, но почему то не хотите «читать между строк» моих.
                                        Я писал про dropout
                                        Убрал кучу нужных ветвей и слоев и говорит об эффективности на порядок.
                                        Эти «ненужные ветви и слои» создают аналоги ансамблей, которые дают устойчивость к искажениям в том или ином измерении.

                                        Но, "ненужные ветви и слои" это совсем не одно и то же что и ансамбль. Это фичи на которые, в некоторых случаях будут приводить к оверфиту, т.к. они могут быть использованы для запоминания отдельных примеров. Как понять что "ненужные слои" действительно не нужны? Проверить метрики на тестовой выборке. У авторов efficientnet метрики хорошие.


                                        Согласны с тем что ваше утверждение про "dropout" не верно? Если нет, то почему?

                                          –1
                                          Но, «ненужные ветви и слои» это совсем не одно и то же что и ансамбль.

                                          Это как раз и есть это)
                                          У авторов efficientnet метрики хорошие.

                                          Опять процитирую публикацию. Не буду копаться глубже, но моя интуиция подсказывает, что там косяков очень много.
                                          Bottom-up pathway имеет уязвимость при извлечении признаков – потеря важной информации об объекте, например из-за зашумления небольшого, но значимого, объекта фоном, так как к концу сети информация сильно сжата и обобщена.

                                          По метрикам беспилотные авто более безопасны, но пока за рулем люди.
                                          Согласны с тем что ваше утверждение про «dropout» не верно? Если нет, то почему?

                                          Я предлагаю не скатываться в софистику и, если нет адекватных доводов, прекратить дискуссию.
                                            +1
                                            Это как раз и есть это)

                                            Нет. К ансамблю ближе пачка индивидуальных моделей которые дают свои решения. Итоговое решение усредняется. Таким образом, даже если одна модель в ансамбле переобучилась, остальные могут перевесить это решение.
                                            Слой именно что извлекает некоторый признак, и сеть вольна его как и полностью игнорировать, так и полностью принимать свое решение исходя из значения признака. И вот тут слишком большая сеть может найти признаки которые характерны для одного примера, и слишком сильно на них ориентироваться при принятии решения. Так мы можем получить переобучение, и на метриках это заметно. Баланс между размером/числом слоев сложно найти, и авторы EfficientNet как раз сделали большой шаг в решении это задачи.


                                            Опять процитирую публикацию. Не буду копаться глубже, но моя интуиция подсказывает, что там косяков очень много.

                                            Вы прицепились к одному абзацу, но кажется так и не поняли в чем фишка. В задаче классификации (для которой и проектировался EfficientNet) локальная информация не нужна, т.к. важно понять что в принципе происходит на картинке.
                                            Но локальная информация нужна для задач связанных с локализацией (обнаружением объектов). Поэтому поверх EfficientNet, который эффективно собирает все более и более глобальные признаки, вешают FPN, которая комбинирует признаки с разных уровней (там чуть сложнее, но суть именно что такая).


                                            Собственно об этом вся статья в комментариях которой мы флудим.


                                            Идеальное ли это решение? Наверняка нет, но оно работает, и люди это применяют для решения реальных задач, что авторы самой RetinaNet, что уважаемый pdima. Через пару лет наверняка придумают что-то еще


                                            По метрикам беспилотные авто более безопасны, но пока за рулем люди.

                                            Вот это и есть софистика.


                                            Я вас убедил? Если нет, объясните почему.

                                              –1
                                              К ансамблю ближе пачка индивидуальных моделей которые дают свои решения. Итоговое решение усредняется.

                                              Вы, очевидно не понимаете суть ИНС. Будь то CNN или dense,

                                              Это формула. Аналоговая функция. И не важно какого размера подсеть (целая или ветка) — это ансамбль или такая же формула.
                                              CNN это тот же перцептрон без relu — просто окно едет — можно представить многими ветками/ансамблями/формулами.
                                              Пулинг — это изменение масштаба. В основном /2.
                                              SIFT это тот же CNN, только обобщенные ядра для многих классов (для всего ImageNet). Поэтому ядра CNN, обученные под задачу, конечно эффективнее чем SIFT. Ровно как и ядра обученные на кошках плохо будут работать с OCR.

                                              Но задачи CV все равно решаются одни и те же полвека: инварианты к масштабу, повороту и другие аффины, яркость итп.
                                              Будь то модулями или слоями.

                                              ИНС это аналоговая функция.

                                              Качественный скачок мы совершили, когда мы перешли от аналоговых вычислителей к цифровым.
                                              И пока вы это не поймете — наша дискуссия бессмысленна.
                                                0

                                                Каша. Нет, серьезно, пройдите какой-нить курс, почитайте книжку, или что-нибудь в таком духе.


                                                Это формула. Аналоговая функция. И не важно какого размера подсеть (целая или ветка) — это ансамбль или такая же формула.

                                                Это вообще не противоречит тому, что я сказал. Перечитайте пожалуйста мой комментарий. Он про то, что ансамбль отчасти позволяет боротся с оверфитом, в то время как увеличение модели, как правило, к оверфиту приводит. И поэтому ваше высказывание про efficientnet не совсем соответствует истине.


                                                В CNN вполне себе есть relu, и оч. много. Почитайте любую работу по CNN.
                                                Пулинг уменьшает масштаб, это правда, но все чуть сложнее.
                                                SIFT можно интерпретировать как CNN, но это очень условно. Сеть обученная на ImageNet является куда более мощным (в смысле абстрактности извлекаемых признаков) экстрактором фич, чем SIFT.
                                                ImageNet сетки хорошо обобщаются на другие задачи, даже без обучения, почитайте про трансфер лернинг, например. Причем речь идет о том, что сеть обученная на кошечках дает признаки пригодные для сегментации живых клеток. Да, они хуже чем специализированные сети, но лучше чем условные SIFT.


                                                Но задачи CV все равно решаются одни и те же полвека: инварианты к масштабу, повороту и другие аффины, яркость итп.

                                                Совсем нет, но об этом чуть позже


                                                Качественный скачок мы совершили, когда мы перешли от аналоговых вычислителей к цифровым.

                                                С радостью подискутирую на эту тему, но давайте двигаться маленькими шагами


                                                Согласны с тем что ваше утверждение про "dropout" не верно? Если нет, то почему?

                                                Так согласны или нет? То что ансамбль это ф-ия вообще ничего не меняет.

                                          0
                                          Не тратьте свое и мое время. Я отвечу на большинство «заумных вопросов» простыми словами, как и нужно делать профессионалу. И даже опишу более сложные концепции.


                                          Пока единственный ответ который я увидел был «Заигрались вы». А хотелось бы узнать что в оригинальной публикации по retinanet такого выбросили авторы:
                                          Автор сделал жесткий dropout ТОПовых сетей для ImageNet. Убрал кучу нужных ветвей и слоев и говорит об эффективности на порядок.
                            +1
                            Извините, но какой-то бардак в голове. Откуда мысль про жесткий dropout (прунинг наверное)? Желательно цитатой с оригинального пейпера по retinanet.
                        +1
                        Не знаю зачем Вы спорите с данным товарищем, один взгляд на хабровские публикации + стиль письма тут и становится очевидно, что это очередной представитель от псевдонауки. Только в данном случае новый подвид — раньше в основном были физики да математики, а сейчас уже вон в deep learning потянулись. Всем чекбоксам удовлетворяет — понимание и знание области (DL) на базовом уровне, отсюда лезет каша из терминов и настойчивое желание доказать, что на самом деле всё якобы проще; пассивно-агрессивный стиль письма, где между строк читается «все п… ы, а я Д'Артаньян», причем без каких-либо намеков на какую-то реальную компетенцию; полное игнорирование вопросов, нулевая конкретика, постоянные отсылки к невнятным статьям, которые товарищ сам же и накатал.
                        0
                        именно retinanet? Неплохая архитектура для любых задач detection (нахождения объектов). Очень простая архитектура, с ней просто работать и затачивать под задачи, хотя с времени публикации появились и более сильные решения. Лично я последний раз использовал для определения пневмонии на рентгеновских снимках: arxiv.org/pdf/2005.13899.pdf
                          0
                          Хотелось бы увидеть ссылку на сайт с коммерчески успешным продуктом, использующим retinanet. А так же кейсы успешных внедрений.
                            0
                              0
                              Это продукт?
                              0
                              Retinanet там внутри либо нет уже делали реализации, Retinanet используют но такие подробности уже под NDA
                    0
                    Как обобщает? Инвариантность к масштабу? Повороту? Шум? Афинные искажения? А если яркость изменить на цветном изображении?

                    Какой-нить таблички, с сравнением точности с другими сетями, действительно не хватает. Остальные вопросы решаются аугментацией, которая ортогональна архитектуре сети. Можно только придраться к инвариантности к масштабу, но на практике аугментации хватает.

                      0
                      CNN дают инвариантность только по сдвигу, и то не любому (после пулинга будет инвариантность только по шагу последнего слоя например), все остальное достигается грубой силой — увеличение сети и датасета, включая аугментации как раз по перечисленным изменениям. В результате работает. Мозг так же не всегда инвариантен к таким изменениям, читать по вертикали чибо перевернув текст не так удобно например.
                        0
                        Мозг так же не всегда инвариантен к таким изменениям, читать по вертикали чибо перевернув текст не так удобно например.

                        Допустим на на 180, а на 20 повернем?

                        Афинные искажения при просмотре под углом отличным от 90? Сколько тут?
                        Просмотр на расстоянии, при котором объект масштабирован с коэф. отличном от 2?
                        Какой процент шума может допускать?
                          +1
                          Мозг натренировался на огромном датасете, с чем не встечался то и плохо распознает (произношение других народов например, перевернутый текст), с реснетами такая же история.
                            0
                            Интересный способ технической беседы.
                            Вместо конкретных цифр говорить общими фразами)
                              0
                              Я возможно не правильно понял вопросы, они о ретинанет либо о мозге? Во время тренировки обычно картинки случайно преобразовываются (как раз случайные аффинные преобразование, случайные преобразования цветных каналов, шум итд), так что очень существенного падения метрик при сравнимых изменениях тестовых картинок (например поворотах на 20 град, 1.5х масштаб, умеренном шуме) не должно быть.

                              Возможно специально подобрать шум (изменения) который будет сильно влиять на результат, но я не думаю что вопрос был про adverserial атаки.
                              0

                              Не знаю, у меня перевернутый текст неплохо распознается (мозгом, конечно) — хоть на 90, хоть на 180. Другое дело, когда натыкаешься в перевернутом тексте на непривычное слово, с которым как раз до этого не встречался (перевернул телефон и прочел Ваш комментарий, возникла проблема только со словом "реснетами").

                              0

                              Если добавите ауги на нужный градус — вполне. Повороты реально не проблема, к ним можно подготовится, хоть 10 градусов, хоть 110. Та же фигня с масштабом — добавьте ауги на нужный скейл и все будет плюс-минус хорошо.

                                0
                                добавьте ауги на нужный скейл и все будет плюс-минус хорошо.

                                А они тут есть?)
                                  0
                                  Ауги не в архитектуре сети а в подготовке данных при тренировке. Независимо от архитектуры.
                                    0

                                    Ауги это часть которая ортогональна топологии сети, об этом не пишут в статьях. Разумеется практически все картиночные сетки для прода учат с использованием аугментаций (под конкретную задачу), вне зависимости от архитектуры.

                                      0
                                      Боюсь эта задача слишком конкретная.
                                      Так мы умели и сюрфами и сифтами)
                                        +1

                                        Вопрос же был про то, как работает сетка с поворотами, правильно? При чем тут surf/sift? Можете получить точность RetinaNet на дескрипторах? Круто, можете показать пример?
                                        Или даже просто расскажите как решали бы эту задачу на сифтах. Вот есть у нас 100 классов объектов, надо делать их обнаружение на фотках. Какое решение вы бы предложили?


                                        К слову, SIFT не то чтобы прямо инвариантен к повороту https://www.quora.com/Computer-Vision-Is-SIFT-really-rotational-invariant

                                          0
                                          Мы тут говорим не обо мне.
                                          Если хотите опровергнуть мои слова — показывайте результаты.
                                          К слову, SIFT не то чтобы прямо инвариантен к повороту

                                          А никто не говорил про инварианты SIFT. Я имел ввиду что делалось много «карт» с разными ракурсами. Потом результат объединялся.
                                          Это и есть ансамбль, про который я говорил выше.
                                            0

                                            Т.е. вы не можете рассказать как решить задачу детекции используя дескрипторы?

                                              0
                                              А никто не говорил про инварианты SIFT. Я имел ввиду что делалось много «карт» с разными ракурсами. Потом результат объединялся.
                                              Это и есть ансамбль, про который я говорил выше.

                                              Мне каждую фразу свою дублировать или вы потрудитесь прочитать сами?
                                                0

                                                Не, это был просто вопрос. Про сифты я ниже ответил.

                                              0

                                              Ну и я не понимаю к чему вообще тогда был весь разговор про сифты.
                                              Поясните, что ли. Если хотели сказать что RetinaNet ничем не лучше сифтов, то это неправда, RetinaNet показывает лучшие результаты.

                                                0
                                                Ответил выше.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое