DeepSchool
10.3K subscribers
77 photos
1 video
1 file
432 links
Это канал школы deepschool.ru. Здесь мы будем:
- напоминать вам теорию ML/DL в виде коротких постов,
- задавать вопросы с собеседований,
- рассказывать про полезные фреймворки
- и делиться советами, которые помогут вам в работе.

@deepschool_support
Download Telegram
Как научиться решать end-to-end задачи в CV

Если вы хотите закрыть пробелы в знаниях Computer Vision и освоить весь путь создания DL-проектов: от сбора данных до деплоя веб-сервисов — приходите учиться на программу CV Rocket от нашей команды.

После обучения вы повысите свою ценность на рынке, улучшите процессы в команде и научитесь решать полный цикл CV-задач:
🔹собирать чистые данные
🔹быстрее обучать модели
🔹ускорять нейросети
🔹создавать веб-сервисы
🔹автоматизировать их деплой
🔹настраивать мониторинг приложений
🔹решать задачи распознавания лиц, текстов, генерации и многое другое

Что особенного в нашей программе:
🔸12 спикеров из разных отраслей и компаний
🔸много фидбека и общения со спикерами: на zoom-лекциях, в рамках code review, на семинарах, в чате, на 1-on-1 встречах
🔸сложные задачи: 2 больших end-to-end проекта, которые с гордостью можно добавить в резюме
🔸40 студентов-практиков — у нас сильное комьюнити студентов, которые помогают друг другу и по курсу, и в работе

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

Всем, кто оставит заявку до 12:00 мск 9 августа, мы вышлем промокод на скидку 10,000 руб.
Оставить заявку
13👍5👏31🔥1
🎞 Запись подкаста с Софией Потаповой

София — выпускница ФИВТ МФТИ, работала в беспилотниках Яндекса, а сейчас co-founder стартапа SmallTalk.

На подкасте с Софией мы обсудили:
- задачи и атмосферу в команде беспилотников Яндекса
- минусы и плюсы переезда в Англию
- как София стала co-founder'ом стартапа
- советы для тех, кто хочет запустить свой стартап

Смотрите наше интервью на Youtube и подписывайтесь на наш канал: https://youtu.be/BE-WaqEN884
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥116🤔2👏1🐳1
Как работает камера

Когда мы делаем фотографию 3D объекта, он проецируется на 2D плоскость — сенсор камеры. Понимание этого процесса позволит совершать обратное действие: из 2D фотографий восстанавливать 3D модель объекта.

Это особенно важный навык в задачах AR/VR и беспилотниках. Но также поможет и в задачах, где мы хотим оценить размер объекта. Например, когда надо определить площадь поверхности, загруженность самосвала или расстояние до пешехода.

В этой статье мы рассмотрим:
- геометрию формирования изображения на сенсоре камеры (pinhole модель)
- как рассчитываются координаты точки на сенсоре для точки из реального мира
- как переходить от одной системы координат к другой
- что такое внутренние и внешние параметры камеры и зачем они нужны

Читайте новую статью по ссылке: https://deepschool-pro.notion.site/c1c2f3d5265943b7a228eed71b89c060?pvs=4
🔥428👏6👍4
Атаки на нейросети и как от них защититься

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

В этой статье мы узнаем:
- почему современные нейросети не превосходят человека в CV
- как обмануть нейросеть и заставить ее предсказывать на картинке тигра вместо молотка
- как сделать нейросеть устойчивой к таким попыткам обмана

Читайте новую статью по ссылке: https://deepschool-pro.notion.site/Adversarial-training-98ff4f876b6f437d90830976789e9d68?pvs=4
🔥21👍107
Как решать графовые задачи с помощью нейросетей

Объекты реального мира часто определяются через их связи с другими объектами. Такие объекты элегантно описываются с помощью графов.

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

Читайте нашу новую статью по ссылке:
https://deepschool-pro.notion.site/1665b8940c27431f95a801da2577c072?pvs=4
🔥32👍109👏1
Сегментация плоскости земли

Классическая задача при обработке лидарных данных — определить точки облака, которые относятся к плоскости земли. Она нужна для работы с современными системами беспилотного транспорта, роботами и результатами аэросъемки.

В статье мы рассмотрим:
- мотивацию решения задачи
- два классических алгоритма ее решения: CSF и Patchwork
- практические советы по применению этих алгоритмов

Читайте нашу новую статью по ссылке: https://deepschool-pro.notion.site/3a979f729da540a984fa6e9e534cc4ec?pvs=4
👍23🔥97❤‍🔥1
​​Как определить, что клиент сделал хорошую фотографию лица?

Великое правило анализа данных "мусор на входе - мусор на выходе" работает во всех областях. Чтобы улучшить работу моделей, можно отбросить некачественные семплы на обучении и не пропускать их при инференсе. Сегодня мы рассмотрим как это можно делать в задаче распознавания лиц.

В новой статье мы расскажем:
- зачем определять качество фотографии
- какие нюансы возникают в задаче face recognition
- и как их разрешить

Читайте нашу статью по ссылке: https://deepschool-pro.notion.site/Face-Image-Quality-Assessment-b66ddfddcd8d4263a7a2318f1c2d0b48?pvs=4
👍27🔥119
Новый формат “Заметки DeepSchool”

Интересный факт: у Ксюши ушло 8 часов на создание картинок к статье про ViT :) А всего подготовка материала заняла более 30 часов.

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

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

Если вам понравятся такие посты, ставьте реакции) По ним мы поймем, как вам такой формат, и какие темы можно развернуть подробнее в виде большой статьи.

В первой заметке расскажем про линтеры👇
👍6616🔥8
Зачем использовать линтер?

Как правильно назвать класс: MyClass или my_class? Думаем большинству очевидно, что правильней первый вариант. Но почему? Потому что в питоне так принято :)

Классы мы называем в CamelCase, функции и переменные в snake_case 🐍, а константы при помощи CAP_CASE.

Такое единообразие (консистентность) помогает при разработке: если вы увидели что-то в CAP_CASE, вы дважды подумаете, прежде чем изменить значение этой переменной.

В python3 нам повезло, что все пишут практически одинаково и здесь огромная заслуга PEP8 — документа с соглашениями о том, как надо писать код на python.

А в чем, собственно, проблема?

Представьте, что ваш коллега создал Merge Request, в котором совсем не соблюден codestyle: неверно названы переменные, нет отступов, избыточно длинные строки кода, и много чего еще — хотелось бы вам тратить время на замечания об этом? Конечно нет, ведь MR-ы созданы не для того, чтобы спорить о синтаксисе.

Можно создать текстовый документ, где были бы описаны все синтаксические правила для команды, с которыми необходимо периодически сверяться. Но даже так вы не защищены от ошибок. Ведь код пишут люди (пока что), которые могут упустить какое-то из правил. Не говоря уже о том, что это просто муторно и скучно. Вот было бы автоматизированное решение…

Это решение и есть линтеры. Линтер — программа, которая проверяет наш код на соответствие правилам. Не только тем из них, что упомянуты выше, но и более сложным. Например, не слишком ли много локальных переменных в функции? А методов в классе? Кстати, такие проверки связаны с кошельком Миллера и реализованы, например, в wemake

А теперь представьте, что вам пришлось бы считать количество переменных во время MR

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

Для питона есть разные линтеры, которые различаются правилами, строгостью и типами проверок. Начать свое знакомство с ними можно, например, с этой статьи.

Кстати, на нашей программе Computer Vision Rocket, мы уделяем много внимания качеству кода: рассказываем как писать тесты, использовать линтер и автоматизировать эти проверки в gitlab CI. А еще мы внимательно ревьюим код студентов. Запишитесь на консультацию, мы ответим на любые ваши вопросы, покажем, как проходит обучение и code-review :)
👍4313🔥7🥰1
Гессиан

Наверняка вы слышали про “методы второго порядка” — когда используют вторые производные функции потерь для более быстрого поиска оптимума. Важный элемент этих методов — гессиан. Он и является второй производной по параметрам модели.

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

Если подзабыли теорию, не страшно, мы напомним ее в нашей новой статье, а также:
- напомним о методе Ньютона
- объясним как работает Sophia — свежий оптимизатор, использующий методы второго порядка
- и покажем на примерах преимущество этих методов

Читайте нашу статью, чтобы лучше разобраться в методах второго порядка: https://deepschool-pro.notion.site/a4b4e52621b447e5beb33de13986a469?pvs=4
🔥46👍1211🤩4
Yet another формат публикаций

В новом обновлении телеграм появился функционал “бустов” — голосов, которые премиум-пользователи могут отдавать каналам.

Чем больше голосов, тем больше возможностей у канала. Например, 1-ый уровень дает возможность публиковать “стори”.

Если вам нравится наш контент, поддержите канал своим голосом — будем вам благодарны)

PS функционал работает только в последней версии приложения.
14🤝13🐳5
Еще 2 преимущества автотестов

“Да ладно, в следующий раз напишу тесты, вроде все работает” — каждый ловил себя на такой мысли. Бывает, мы успокаиваем себя тем, что проект маленький, шанс его уронить невелик, и можно не переживать. Но такая вероятность есть всегда, и с ростом проекта она только увеличивается.

В реальных проектах могут быть тысячи строк с десятками классов, которые взаимодействуют друг с другом. И представьте, что ваша текущая задача требует модифицировать всего пару строк в классе. Ноо… От этого класса зависят ещё три. А от этих трёх еще по три… И в итоге ваши 2 строчки могут уронить всю систему. Как избежать этого?

Можно потратить пару дней на то, чтобы придумать и проверить все сценарии, при которых проект может упасть или отработать некорректно — но это точно будут не самые интересные пару дней. Скорее всего вы как разработчик предпочли бы писать код и катить новые фичи, а не изучать легаси-куски системы.

... вот опять бы была кнопка, на которую жмешь и проверяешь: все ли корректно работает.

Автотесты — та самая кнопка.

В одном посте тему автотестов не обхватить, но мы добавим аргументов "за" тесты, чтобы замотивировать вас в них разобраться.

С очевидными плюсами тестов многие уже знакомы и согласны: тесты снижают вероятность появления нелепых багов (например, при рефакторинге) и экономят время на проверки. В этом же посте мы поделимся еще парой не самых очевидных преимуществ.

Тесты — это документация

Ведь на какие вопросы обычно отвечает документация:
- как выглядят базовые сценарии работы приложения?
- что делает функция? — в идеале с примерами
- как собрать инстанс класса?
- на какие куски кода я повлияю, если изменю вот этот метод?
- хочу красивую страничку с поясняющими картинками и ссылками на ютуб, чтобы как для тупых

Если ответственно подойти к процессу тестирования, то все пункты кроме последнего можно удовлетворить. Причем зачастую тесты в реальных проектах — единственная документация и в них полезно заглядывать, когда вы с знакомитесь с проектом.

Тесты контролируют сложность кода

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

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


P.S. не надо ждать момента, когда проект разросся и его стало тяжело править, пишите тесты со старта! Иначе рискуете уйти в крайность "уже слишком поздно, это невозможно тестировать...".

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

Если вы хотите научиться писать тесты, приходите на нашу программу CVRocket. На ней мы учим приводить в порядок эксперименты, ускорять модели, оборачивать их в веб-сервис, настраивать ci/cd — и все это при поддержке опытных инженеров.

#заметки @deep_school
18👍8🔥6
​​Как работает камера. Калибровка

В первой части статьи мы рассказали, как 3D объекты проецируются на 2D плоскость фотографии. А также описали математическую модель камеры и ее параметры.

Зная параметры камеры, можно восстановить 3D сцену или ее характеристики: высоту здания, расстояние до пешехода, загруженность самосвала.

Но мы не рассказали, как определить параметры своей камеры. И мы рассматривали простую pinhole модель, а в реальной жизни у камер есть линзы, которые искажают изображения (вспомните fisheye эффект) — и их тоже надо как-то исправлять.

О том как восстанавливать параметры камеры (калибровать ее) и нивелировать искажения (дисторсию), мы и рассказали в нашей новой статье.

Из нее вы узнаете:
- как выглядит математическая модель калибровки и дисторсии
- советы по сбору датасета для калибровки
- какие есть методы калибровки
- и подробный разбор одного из методов

Кажется, это самая длинная наша статья, сохраняйте ее, чтобы не потерять в тот момент, когда вы столкнетесь с этой задачей :)

Читайте по ссылке: https://deepschool-pro.notion.site/e434d0f2fe144734a7577d5540debbd3?pvs=4
🔥358👍8👏2
Собрали все наши статьи на одной notion-странице

В комментариях спросили, есть ли ссылка на все труды нашей команды — сделали!

Пишите нам чаще свои предложения или вопросы — мы все читаем :)
🔥12825❤‍🔥15👍8🙏4
​​История YOLO. Часть 3

Недавно мы рассмотрели первую и вторую версии YOLO, популярной архитектуры для детекции. Сегодня мы продолжим знакомство с историей этого семейства и поговорим о YOLOv3. Эта модель долгое время применялась на практике и успела породить множество ответвлений, которыми пользуются до сих пор.

В статье мы расскажем:
- как изменилась архитектура в сравнении с предыдущими версиями
- какие результаты показала модель в сравнении с другими архитектурами
- как авторы решили проблему с пропуском маленьких объектов
- и какие трюки позволили поднять качество

Читайте новую статью по ссылке: https://deepschool-pro.notion.site/YOLO-history-Part-3-4a17c56760a34067ae52fa42a8b5a489?pvs=4
🔥2413👍12❤‍🔥2
Рубрика «Вопрос с собеседования» 💼

На собеседованиях часто просят найти ошибки в коде обучения нейросети. Давайте потренируемся.

На картинке кусок кода, в котором есть несколько ошибок. Посмотреть в тексте можно тут.

Пишите найденные ошибки и идеи, как можно улучшить код в комментариях 👇

🍕 За правильные ответы отправим авторам большие пиццы 😄
- одну за первый ответ, который соберет все спрятанные нами ошибки
- вторую за самый полный ответ, который выберет наша команда
(доставка по РФ :)

Завтра в 16:00 по мск подведем итоги и выложим правильные ответы 🙂
🔥38👍138🍾2
Ответ на вопрос с собеседования 💼

❶ 17 строка: не поставили параметр shuffle в True. Train loader нужно шафлить

❷ 14 и 20: использовали Softmax + CrossEntropyLoss. Так делать не нужно, ведь CrossEntropyLoss уже содержит в себе Softmax. Поэтому мы убираем Softmax из сетки. Можно почитать наш пост про лоссы, чтобы точно со всем разобраться 🙂

❸ 32-35: не использовали torch.no_grad, а значит, отслеживали градиенты, что нам нужно только при обучении

❹ 32-35: не перевели модель в eval() режим при подсчете метрик, поэтому неправильно посчитался BatchNorm1d. Кстати, у нас есть об этом пост, а еще большой пост про виды нормализаций

❺ 15 и 25-30: модель лежит на gpu, а датасет на cpu. Лучше всегда выносить параметр device, чтобы модель и данные всегда лежали на одном устройстве

❻ 35 строчка: забыли сделать detach().cpu(). Из-за этого потечет память

Также в комментариях заметили, что переменные epoch и features не определены, а epoch затирает себя в цикле — это было не по плану, но вы молодцы 🙂

Никто не написал ответ, который содержит в себе все наши пункты, поэтому первый победитель был выбран по меньшему числу упущенных пунктов. А также мы не смогли выбрать одного призера зрительских симпатий внутри команды, поэтому дарим 3️⃣ пиццы!

Итак, наши победители, к которым отправляются пиццы:
🍕 @KalabiYauu — первый ответ со всего одним упущенным пунктом
🍕 @zen0no — приз зрительских симпатий, который совпал с нашим мнением и мнением подписчиков (судя по количеству реакций)
🍕 @Xallt — приз зрительских симпатий от нашей команды
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4621👏9👍3🤝2😁1
🎞 Своя Игра от DeepSchool

Мы повеселились и поиграли в “Свою Игру” с вопросами на ML/DL-темы!

Гости первой игры — спикеры наших курсов 3DCV и CVRocket:
- Андрей Шадриков, Head of R&D Verigram
- Оля Гребенькова, PhD student LMU of Munich, ex Samsung
- Дима Чудаков, CV Researcher Expasoft

И наш прекрасный ведущий Давид Свитов — хэдлайнер курса 3DCV, PhD, исследователь в Samsung AI Center

Ребята отвечали на вопросы по темам:
① Детекторы
② Классический ML
③ Глаз, мозг, зрение
④ Личности
⑤ 3D Computer Vision

Проверьте себя, смогли бы вы ответить на все вопросы? :)

Смотрите первый выпуск по ссылке: https://youtu.be/Bc80mQMRULc!

Это пилотный выпуск шоу, поэтому будем очень рады обратной связи в виде реакций и комментариев! 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥58👍167😁5❤‍🔥2🍾2
​​Имитационное обучение

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

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

В новой статье мы поговорим об имитационном обучении, а также узнаем:
- как передать навыки людей роботам
- чем отличается имитационное обучение от обучения с учителем
- подходы к имитационному обучению и как они работают

Читайте нашу новую статью по ссылке: https://deepschool-pro.notion.site/6ad66bb2ef494cafab421409dbc2b91c?pvs=4
🔥22👍106❤‍🔥1
​​Шамиль Мамедов

Ранее мы рассказывали, как создаем наши посты:
- над материалами работает целая команда инженеров и ресерчеров
- мы ревьюим посты друг друга
- а в конце редактор правит текст, чтобы его было легче читать

Также мы познакомили вас с частью нашей команды: Ксюша, Саша, Марк и Илья.

А в этот раз о себе расскажет Шамиль:

"Я делал магистерскую по Automation and Control Engineering. Control Engineering — это что-то типа Reinforcement Learning, но работает 😅
Кроме шуток, так я познакомился с робототехникой и захотел заниматься исследованиями в данной области. В России это можно делать в Университете Иннополис. Там я и занимался ресерчем, а еще вел занятия по робототехнике для студентов. Мы работали с шагающими роботами и роборуками.

Мои друзья в Иннополисе занимались DL и CV, и я тоже начал интересоваться этой движухой.
После трех лет работы в университете я выбирал между PhD и началом новой карьеры в ML. В итоге выбрал PhD. Cначала получил несколько отказов, а потом пришел хороший оффер из Бельгии. Я решил поехать посмотреть, как там пытаются двигать робототехнику вперед. Параллельно с PhD я решил углубить свои знания по ML, взял курсы на Coursera по ML и DL от Andrew Ng и прошел ML от Тинькофф. После этого решил внедрять больше ML в свою работу.

Моя научная работа связана с обучением роботов манипулировать деформируемыми объектами (например, складывать рубашку или сгибать кабель в нужную форму). Методы, с помощью которых я пытаюсь решить эту задачу, схожи с model-based RL. Для моделирования деформируемых объектов я использую комбинацию машинного обучения и механики. Применение только машинного обучения требует много данных, а собирать реальные данные очень затратно. Комбинация ML и физики делает модели более sample efficient, так как законы физики служат в качестве inductive bias. Еще одно требование к моделям — время инференса, ведь мы хотим очень быстрые модели для их использования внутри оптимизаторов.

Почти все статьи, которые я написал в DeepSchool, так или иначе связаны с моим исследованием.

В свободное время я занимаюсь спортом (недавно решил пробежать марафон и уже пару месяцев готовлюсь к нему), готовлю и иногда путешествую по Европе."

У Шамиля есть свой блог: там можно больше узнать о Шамиле и посмотреть его публикации 🔥

В комментариях можно пообщаться с Шамилем и задать интересующие вопросы 🙂

Посты, над которыми Шамиль работал в нашем канале:
- Нейронные дифференциальные уравнения
- Базовые методы аугментации временных рядов
- Как решать графовые задачи с помощью нейросетей
- Гессиан
- Иммитационное обучение
- Обучение скрытых динамических моделей по частичным наблюдениям
35🔥26👍11❤‍🔥4👏3
Few-shot learning

Во время работы часто не хватает данных для обучения модели. А бывают ситуации, когда размеченных примеров совсем мало, например, менее 10 штук.

Чтобы решить эту проблему и учить модели на нескольких примерах, придумали целый класс методов: few-shot learning.

В новой статье вы познакомитесь с этим подходом, а также узнаете:
- чем отличаются meta-learning, metric-learning и non-episode learning
- как устроены эти методы
- и как представить имеющиеся данные во время обучения

Читайте статью по ссылке: https://deepschool-pro.notion.site/Few-shot-learning-0235073c4fef402daca77513232d058a?pvs=4
30👍18🔥9