Открыть список
Как стать автором
Обновить
3
Карма
0
Рейтинг

Пользователь

Нейронные сети на Javascript

А чем она отличная, если не секрет?

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

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


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

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


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


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

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


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

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


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

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

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

Это как раз и есть это)

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


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

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


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


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


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

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


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

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

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

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

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

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

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

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

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

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


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

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


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

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

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


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

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

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


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

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

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

Так расскажите об этих концепциях. Пока что в этих комментариях вы сделали 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, который внезапно — часть мозга


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

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


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

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

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

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


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


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


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


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

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


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

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

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

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


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

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


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

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


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


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

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

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

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


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

Я — ответил


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

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

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

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

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

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

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

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


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

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

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

Как обобщает? Инвариантность к масштабу? Повороту? Шум? Афинные искажения? А если яркость изменить на цветном изображении?

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

Схема против нейросети

Это тысячу раз уже проверено и мной в том числе. Хотите — проведите эксперимент сами — так у вас куча вопросов отпадет.

А я пробовал, и как-то не очень это работает. Более того, люди тоже не используют такую очевидную "модификацию". Можете почитать сборник более-менее современных трюков для обучения CNN https://arxiv.org/pdf/1812.01187.pdf часть ResNet-C. Первый слой мало того что оставляют обучаемым, так еще и декомпозируют. Не буду зарекаться что работы в которой люди используют оператор собеля как инициализацию не существует. Но абсолютно во всех известных мне работах по CNN (а читал я их довольно много) первый слой делают обучаемым. Могу подкинуть другие статьи, в том числе сверх оптимизированные MobileNetv3, какой-нить рилтаймовый YOLOv4, и т.д.


И еще раз — первый слой сам по себе не проблема по части скорости/сложности обучения.


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


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

Информация

В рейтинге
6,050-й
Зарегистрирован
Активность