Насколько я понимаю, в этом году первый раз в аудитории вместе с нами будет находиться только комиссия. Даже немного обидно, хотелось выступать перед толпой гостей, однокурсников и преподавателей. Штош, наверное так даже меньше будут трястись руки и дрожать голос)))
🔥6
Как же хорошо, когда вопросы для подготовки к экзамену совпадают с темами постов в канале😁😁
Завершим трек постов про типы обучения сетей самым, на мой взгляд, интересным методом - обучение с подкреплением.
Для начала введем основные термины:
🔹Environment (среда) - инициализированные условия, в которых "находится" наша нейроночка и которые могут повлиять на ее работу (соответственно, сеть тоже может повлиять на свое окружение);
🔹Action (действие) - изменение среды под влиянием нейронной сети;
🔹State (состояние) - состояние среды в каждый момент времени;
🔹Reward (награда) - величина, которую получает нейронка от ее среды после взаимодействия с ней. Награда оценивает "правильность" действия;
🔹Agent (агент) - наша нейронная сеть, которая в установленной среде выполняет какие-то действия за определенную награду.
В общем, Reinforcement Learning (обучение с подкреплением) - метод обучения, при котором нейронка, находясь в обусловленном окружении, не знает что конкретно ей нужно делать, но при этом она может изменить состояние своей среды и получить ответ в характере горячо/холодно.
Классический пример для этой задачи - игра в пинг понг. Агенту отбивает мячик, за что он получает награду +1. Если же он промахивается, в этом случае награда будет -1 😢.
Есть несколько алгоритмов обучения с подкреплением:
🔸State-Action-Reward-State-Action (SARSA) - алгоритм, в основе которого лежит определенная стратегия выбора действий нейронной сети. К примеру, заранее определенная вероятность положительной наибольшей награды для каждого действия.
🔸Q-Learning - здесь изначально все действия считаются оптимальными. Алгоритм оптимизирует свои веса за счет максимизации оценки Q (упрощено: награда в перспективе). В таком подходе алгоритм будет более самостоятельным.
🔸Deep Q-Networks - использует нейронные сети для поиска оптимального значения в исследуемой среде. Выбор действия основывается на опыте положительных действий подключенной нейронки.
Сейчас RL довольно стремительно развивается в индустрии. Однако, этому препятствует достаточно много сложностей. Одна из проблем для большинства задач - постоянное изменение состояния среды вне зависимости от действий нейроночки. Например, изменение расположения машин, пешеходов и других объектов на дороге для обучающегося беспилотного транспорта.
Но смотреть на падающих роботов boston dynamics все равно смешно
#about_ml
Завершим трек постов про типы обучения сетей самым, на мой взгляд, интересным методом - обучение с подкреплением.
Для начала введем основные термины:
🔹Environment (среда) - инициализированные условия, в которых "находится" наша нейроночка и которые могут повлиять на ее работу (соответственно, сеть тоже может повлиять на свое окружение);
🔹Action (действие) - изменение среды под влиянием нейронной сети;
🔹State (состояние) - состояние среды в каждый момент времени;
🔹Reward (награда) - величина, которую получает нейронка от ее среды после взаимодействия с ней. Награда оценивает "правильность" действия;
🔹Agent (агент) - наша нейронная сеть, которая в установленной среде выполняет какие-то действия за определенную награду.
В общем, Reinforcement Learning (обучение с подкреплением) - метод обучения, при котором нейронка, находясь в обусловленном окружении, не знает что конкретно ей нужно делать, но при этом она может изменить состояние своей среды и получить ответ в характере горячо/холодно.
Классический пример для этой задачи - игра в пинг понг. Агенту отбивает мячик, за что он получает награду +1. Если же он промахивается, в этом случае награда будет -1 😢.
Есть несколько алгоритмов обучения с подкреплением:
🔸State-Action-Reward-State-Action (SARSA) - алгоритм, в основе которого лежит определенная стратегия выбора действий нейронной сети. К примеру, заранее определенная вероятность положительной наибольшей награды для каждого действия.
🔸Q-Learning - здесь изначально все действия считаются оптимальными. Алгоритм оптимизирует свои веса за счет максимизации оценки Q (упрощено: награда в перспективе). В таком подходе алгоритм будет более самостоятельным.
🔸Deep Q-Networks - использует нейронные сети для поиска оптимального значения в исследуемой среде. Выбор действия основывается на опыте положительных действий подключенной нейронки.
Сейчас RL довольно стремительно развивается в индустрии. Однако, этому препятствует достаточно много сложностей. Одна из проблем для большинства задач - постоянное изменение состояния среды вне зависимости от действий нейроночки. Например, изменение расположения машин, пешеходов и других объектов на дороге для обучающегося беспилотного транспорта.
Но смотреть на падающих роботов boston dynamics все равно смешно
#about_ml
👍2
Фуууххх, жестко отдыхала две недели, что аж забыла про канал😅😅 Тем не менее, я готова рассказать об итоговых результатов своего диплома!
Напоминаю, что тема работы звучит так: "Разработка и исследование метода грубого позиционирования БПЛА". На нашей кафедре уже проводились исследования и разработка точного метода позиционирования. Однако, для корректной и быстрой работы этого алгоритма необходимо на вход подавать маленькие окрестности территорий, размеры которых существенно отличаются от размеров изначальных карт местности. Было предложено разработать метод грубого позиционирования, на выходе которого получаются несколько вариантов наиболее вероятных окрестностей, где в текущий момент находится беспилотник.
⁉️Целью моей работы являются поиск и анализ наиболее популярных методов позиционирования и разработка метода, основанного на использовании одного из исследуемых алгоритмов. Также, были поставлены следующие задачи:
❓анализ существующих алгоритмов;
❓разработка алгоритмов предварительной обработки входных данных;
❓постановка условий эксперимента;
❓разработка алгоритмов проведения экспериментов;
❓разработка алгоритмов для визуализации и анализа результатов.
Объектами для сравнительного анализа были выбраны такие алгоритмы как: обучение нейронной сети, взаимная корреляция изображений, алгоритм масштабно-инвариантной трансформации признаков SIFT и афинный аналог SIFT (A-SIFT). Каждый из этих методов имеет свои недостатки: требуется обучение, чувствителен к преобразованиям изображений, либо затрачивает много времени на обработку больших изображений. Было принято решение протестировать и доработать алгоритмы корреляции и sift.
Разработанный метод представляет собой совокупность модулей, включающей в себя модуль предварительной обработки изображений, модуль сравнения изображений (он же модуль эксперимента) и модуль анализа результатов (отображение).
Первой из основных функций была реализована «предварительная обработка входных данных». Функция отвечает за обработку входных данных и бортовых датчиках. Из алгоритмов реализованы:
⭕️ вырез меньшего изображения из большего;
⭕️ поворот изображения на угол θ.
#about_ml
Напоминаю, что тема работы звучит так: "Разработка и исследование метода грубого позиционирования БПЛА". На нашей кафедре уже проводились исследования и разработка точного метода позиционирования. Однако, для корректной и быстрой работы этого алгоритма необходимо на вход подавать маленькие окрестности территорий, размеры которых существенно отличаются от размеров изначальных карт местности. Было предложено разработать метод грубого позиционирования, на выходе которого получаются несколько вариантов наиболее вероятных окрестностей, где в текущий момент находится беспилотник.
⁉️Целью моей работы являются поиск и анализ наиболее популярных методов позиционирования и разработка метода, основанного на использовании одного из исследуемых алгоритмов. Также, были поставлены следующие задачи:
❓анализ существующих алгоритмов;
❓разработка алгоритмов предварительной обработки входных данных;
❓постановка условий эксперимента;
❓разработка алгоритмов проведения экспериментов;
❓разработка алгоритмов для визуализации и анализа результатов.
Объектами для сравнительного анализа были выбраны такие алгоритмы как: обучение нейронной сети, взаимная корреляция изображений, алгоритм масштабно-инвариантной трансформации признаков SIFT и афинный аналог SIFT (A-SIFT). Каждый из этих методов имеет свои недостатки: требуется обучение, чувствителен к преобразованиям изображений, либо затрачивает много времени на обработку больших изображений. Было принято решение протестировать и доработать алгоритмы корреляции и sift.
Разработанный метод представляет собой совокупность модулей, включающей в себя модуль предварительной обработки изображений, модуль сравнения изображений (он же модуль эксперимента) и модуль анализа результатов (отображение).
Первой из основных функций была реализована «предварительная обработка входных данных». Функция отвечает за обработку входных данных и бортовых датчиках. Из алгоритмов реализованы:
⭕️ вырез меньшего изображения из большего;
⭕️ поворот изображения на угол θ.
#about_ml
👍1
Затем, было поставлено 3 эксперимента на зависимость вероятности предсказывания правильных координат от угла поворота изображений, поступающих с камеры б/а. Общие условия эксперимента были поставлены следующим образом: задается максимальный угол поворота изображений-шаблонов. Затем, начиная с 0 градусов на каждом значении угла поворота вырезается случайным образом заданное количество шаблонов. Все шаблоны обрабатываются алгоритмом позиционирования, на выходе которого получается черно-белое изображение, где белый пиксель – наиболее вероятное место расположения, а черный – менее вероятное. На каждом полученном аналоге тепловой карты соответствующем своему шаблону находятся экстремумы. По входному пороговому количеству экстремумов принято решение, что если «правильные» координаты шаблона попадают в список полученных экстремумов, то метод определил их корректно. В результате эксперимента строится график зависимости количества правильно предсказанных координат от угла поворота входных изображений.
1️⃣В первом эксперименте тестировался алгоритм взаимной корреляции изображений. Приведу пример на фото ниже тепловой карты для одного изображения шаблона и красными точками отмечены найденные пики тепловой карты. На результирующем графике можно заметить, что вероятность правильного предсказания координат резко падает уже при повороте на 3 градуса. Как и ожидалось, метод корреляции не дал хороших результатов в поставленных условиях.
2️⃣Во втором эксперименте тестировался алгоритм сравнения характеристик распределения векторов. Карта местности дробится на более маленькие изображения-оригиналы с определенным шагом наложения. Затем, каждый оригинал сравнивается с шаблоном и на полученных характерных точках сифта и афинного сифта строятся вектора. Пример работы для одной итерации также представлен на фото ниже (как и все последующие в принципе).
Затем вычисляется коэффициент вариации для каждой итерации алгоритма. Была выдвинута гипотеза, что по его значению можно судить о месторасположении на карте. Представлены тепловые карты мат. ожидания, среднего квадратического отклонения и коэффициента вариации по длинам и углам отклонения от нормали векторов для обоих алгоритмов.
По полученным результатам видно, что данный алгоритм дает вероятность предсказания не более 50%. Результаты значительно лучше метода корреляции, однако все равно недостаточно хороши для использования.
3️⃣И последним экспериментом тестировался метод анализа параллельных отрезков. Эксперимент проводился аналогично второму, однако вместо коэффициента вариации использовалось количество параллельных отрезков между двумя изображениями. Ниже приведены две итерации для одного и того же шаблона. Зеленым цветом подсвечиваются вектора, которые были учтены в качестве выбранной метрики, а красным те-, которые не вошли в ее число. Также, были подобраны наиболее оптимальные значения размера оригинального изображения и шага наложения срезов. Оригинал и шаблоны должны иметь одинаковые размеры, а шаг наложения должен быть в пределах одной четверти изображения шаблона.
По результирующим графикам видно, что от 5 градусов поворота метод дает вероятность предсказания порядка 40-60%, что уже является приемлемыми показаниями относительно других методов.
Хочу еще уточнить: чтобы эксперимент не был примитивным, карта местности вырезана из Yandex карт, а все изображения-шаблоны вырезались из Google карт. Хотя в алгоритмах обрабатываются черно-белые изображения, их пиксели все равно не будут идентичны друг другу.
✅Итоговый метод основан на сравнении параллельных отрезков, в основе которого лежит алгоритм A-SIFT. Разработанный метод позволит погасить погрешность бортовых датчиков при нормализации поворота изображений и даст удовлетворительные результаты при позиционировании беспилотного летательного аппарата на местности. В перспективе разработки метода планируется:
❗️улучшать показания предсказания алгоритма;
❗️протестировать алгоритм на искаженных фотографиях;
❗️разработать алгоритм корректировки масштаба и перспективы изображений-шаблонов;
❗️и протестировать на реальных данных.
1️⃣В первом эксперименте тестировался алгоритм взаимной корреляции изображений. Приведу пример на фото ниже тепловой карты для одного изображения шаблона и красными точками отмечены найденные пики тепловой карты. На результирующем графике можно заметить, что вероятность правильного предсказания координат резко падает уже при повороте на 3 градуса. Как и ожидалось, метод корреляции не дал хороших результатов в поставленных условиях.
2️⃣Во втором эксперименте тестировался алгоритм сравнения характеристик распределения векторов. Карта местности дробится на более маленькие изображения-оригиналы с определенным шагом наложения. Затем, каждый оригинал сравнивается с шаблоном и на полученных характерных точках сифта и афинного сифта строятся вектора. Пример работы для одной итерации также представлен на фото ниже (как и все последующие в принципе).
Затем вычисляется коэффициент вариации для каждой итерации алгоритма. Была выдвинута гипотеза, что по его значению можно судить о месторасположении на карте. Представлены тепловые карты мат. ожидания, среднего квадратического отклонения и коэффициента вариации по длинам и углам отклонения от нормали векторов для обоих алгоритмов.
По полученным результатам видно, что данный алгоритм дает вероятность предсказания не более 50%. Результаты значительно лучше метода корреляции, однако все равно недостаточно хороши для использования.
3️⃣И последним экспериментом тестировался метод анализа параллельных отрезков. Эксперимент проводился аналогично второму, однако вместо коэффициента вариации использовалось количество параллельных отрезков между двумя изображениями. Ниже приведены две итерации для одного и того же шаблона. Зеленым цветом подсвечиваются вектора, которые были учтены в качестве выбранной метрики, а красным те-, которые не вошли в ее число. Также, были подобраны наиболее оптимальные значения размера оригинального изображения и шага наложения срезов. Оригинал и шаблоны должны иметь одинаковые размеры, а шаг наложения должен быть в пределах одной четверти изображения шаблона.
По результирующим графикам видно, что от 5 градусов поворота метод дает вероятность предсказания порядка 40-60%, что уже является приемлемыми показаниями относительно других методов.
Хочу еще уточнить: чтобы эксперимент не был примитивным, карта местности вырезана из Yandex карт, а все изображения-шаблоны вырезались из Google карт. Хотя в алгоритмах обрабатываются черно-белые изображения, их пиксели все равно не будут идентичны друг другу.
✅Итоговый метод основан на сравнении параллельных отрезков, в основе которого лежит алгоритм A-SIFT. Разработанный метод позволит погасить погрешность бортовых датчиков при нормализации поворота изображений и даст удовлетворительные результаты при позиционировании беспилотного летательного аппарата на местности. В перспективе разработки метода планируется:
❗️улучшать показания предсказания алгоритма;
❗️протестировать алгоритм на искаженных фотографиях;
❗️разработать алгоритм корректировки масштаба и перспективы изображений-шаблонов;
❗️и протестировать на реальных данных.
👍2
Сижу в электричке и пишу пост🚊
Во всей этой суматохе с экзаменами совсем забыла рассказать о том, что сегодня я отправляюсь на летнюю школу по искусственному интеллекту от AIRI, которая будет проходить в Иннополисе!
Ждите постов о мероприятиях, лекциях и практиках)
Надеюсь, будет интересно 🧐
#dvizh
Во всей этой суматохе с экзаменами совсем забыла рассказать о том, что сегодня я отправляюсь на летнюю школу по искусственному интеллекту от AIRI, которая будет проходить в Иннополисе!
Ждите постов о мероприятиях, лекциях и практиках)
Надеюсь, будет интересно 🧐
#dvizh
👍6🔥1
На самом деле, я очень предвкушаю это мероприятие именно из-за его месторасположения. Никогда не была в Иннополисе, но очень интересно😄
Говорят, что это городок для программистов.
Ну, посмотрим, что там да как)
#dvizh
Говорят, что это городок для программистов.
Ну, посмотрим, что там да как)
#dvizh
🔥3❤1
Закончился уже второй день школы, я немного въезжаю в курс дела🤔
Каждый день здесь проходят лекции и семинары на 3 основных направления:
🖊 RL (reinforcement learning - обучение с подкреплением)
🖊 CV (computer vision - компьютерное зрение)
🖊 Робототехника
Пока что идет очень сильный упор в теорию RL. Уровень гораздо выше моего, но это и к лучшему😉
Также, сегодня нас распределили на проекты. Всего было 33 темы на 80 персон. Я состою в команде из 4 человек, которые будут работать над задачей «Сегментация и трекинг объектов на изображениях по языковым запросам». Если по простому - нужно будет выделить контуры объектов, о которых говорится в заданном тексте))
Звучит вроде просто, т. к. сегодня нам дали много материала на тему сегментации. Однако, как показывает опыт, на практике все становится совсем иначе…
Буду постепенно вводить в курс дела, рассказывать решение текущих задачек и собранных инсайтов😄
#dvizh
Каждый день здесь проходят лекции и семинары на 3 основных направления:
🖊 RL (reinforcement learning - обучение с подкреплением)
🖊 CV (computer vision - компьютерное зрение)
🖊 Робототехника
Пока что идет очень сильный упор в теорию RL. Уровень гораздо выше моего, но это и к лучшему😉
Также, сегодня нас распределили на проекты. Всего было 33 темы на 80 персон. Я состою в команде из 4 человек, которые будут работать над задачей «Сегментация и трекинг объектов на изображениях по языковым запросам». Если по простому - нужно будет выделить контуры объектов, о которых говорится в заданном тексте))
Звучит вроде просто, т. к. сегодня нам дали много материала на тему сегментации. Однако, как показывает опыт, на практике все становится совсем иначе…
Буду постепенно вводить в курс дела, рассказывать решение текущих задачек и собранных инсайтов😄
#dvizh
👍3❤2
Лежу дома в кровати и вспоминаю, как в бешеном ритме пронеслась летняя школа от AIRI💚🤍
Я настолько погрузилась в лекции, семинары, проекты, что совсем забыла про канал😅
Тем не менее, я очень вдохновилась обстановкой, ребятами, идеями и поэтому накопила кучу тем для постов.
Уже завтра более подробно расскажу про проект нашей команды, который занял 2 место!!🥈🎉
#dvizh
Я настолько погрузилась в лекции, семинары, проекты, что совсем забыла про канал😅
Тем не менее, я очень вдохновилась обстановкой, ребятами, идеями и поэтому накопила кучу тем для постов.
Уже завтра более подробно расскажу про проект нашей команды, который занял 2 место!!🥈🎉
#dvizh
👍9
И так, сегментация и трекинг объектов по языковым запросам.
⁉️Начнем с того, что такое сегментация объектов? Это соотнесение группы пикселей к определенному классу. В отличие от детекции объектов, которая выделяет их в прямоугольник, сегментация закрашивает площадь внутри контура объекта.
Получается следующая задача: на входе пользователь делает текстовый запрос - это может быть целая фраза (прим. «найди мне на картинке серого кота в шляпе») или просто одно слово (прим. «кот»); на выходе моделька выдает маску сегментированного объекта. Важное замечание! Мы работали с кастомным датасетом, который был собран с камеры робота, катающегося по кампусу МФТИ. На фотографиях видны различные столы, шкафы, пластмассовые овощи, игрушки. Было множество объектов, которые трудно встретить в популярных подборках.
❓Что решила сделать наша команда? - Провести бенчмаркинг (сравнение) различных моделей и их связок. Для анализа были выбраны предобученные модели LSeg, OWL-ViT + SAM и GroundingDino + SAM.
🔹 LSeg работает сам по себе. Но к сожалению, на наших кастомных данных он выдавал метрики порядка 0.003😬
🔹 OWL-ViT + SAM работали уже лучше. OWL-ViT выдавал bounding boxes по текстовому запросу, а SAM уже находил сам объект внутри него. Экспериментально было выявлено, что по длинному описанию в запросе метрики получаются выше, чем по запросу в виде одного слова класса объекта.
🔹 GroundingDino + SAM победители по количественным результатам в нашей подборке)) Связка работает аналогично предыдущей, однако ее метрики получились выше почти в два раза!
❗️Кроме того, Зоя (член команды) предложила интересную идею: попробовать тюнить текстовые запросы. За эту часть проекта я не шарю совсем😓 Поэтому я надеюсь, что Зоя читает этот пост и подробно пояснит в комментариях че по чем😂😂
*мне тоже интересно еще раз почитать и разобраться с этой идеей👀*
Штош, мы так и заняли 2 место среди 33 защищенных проектов🎉🎉🎉
Если кому-то интересно посмотреть картинки, то я прикрепляю к посту презенташку с выступления
#about_ml
⁉️Начнем с того, что такое сегментация объектов? Это соотнесение группы пикселей к определенному классу. В отличие от детекции объектов, которая выделяет их в прямоугольник, сегментация закрашивает площадь внутри контура объекта.
Получается следующая задача: на входе пользователь делает текстовый запрос - это может быть целая фраза (прим. «найди мне на картинке серого кота в шляпе») или просто одно слово (прим. «кот»); на выходе моделька выдает маску сегментированного объекта. Важное замечание! Мы работали с кастомным датасетом, который был собран с камеры робота, катающегося по кампусу МФТИ. На фотографиях видны различные столы, шкафы, пластмассовые овощи, игрушки. Было множество объектов, которые трудно встретить в популярных подборках.
❓Что решила сделать наша команда? - Провести бенчмаркинг (сравнение) различных моделей и их связок. Для анализа были выбраны предобученные модели LSeg, OWL-ViT + SAM и GroundingDino + SAM.
🔹 LSeg работает сам по себе. Но к сожалению, на наших кастомных данных он выдавал метрики порядка 0.003😬
🔹 OWL-ViT + SAM работали уже лучше. OWL-ViT выдавал bounding boxes по текстовому запросу, а SAM уже находил сам объект внутри него. Экспериментально было выявлено, что по длинному описанию в запросе метрики получаются выше, чем по запросу в виде одного слова класса объекта.
🔹 GroundingDino + SAM победители по количественным результатам в нашей подборке)) Связка работает аналогично предыдущей, однако ее метрики получились выше почти в два раза!
❗️Кроме того, Зоя (член команды) предложила интересную идею: попробовать тюнить текстовые запросы. За эту часть проекта я не шарю совсем😓 Поэтому я надеюсь, что Зоя читает этот пост и подробно пояснит в комментариях че по чем😂😂
*мне тоже интересно еще раз почитать и разобраться с этой идеей👀*
Штош, мы так и заняли 2 место среди 33 защищенных проектов🎉🎉🎉
Если кому-то интересно посмотреть картинки, то я прикрепляю к посту презенташку с выступления
#about_ml
🔥6
Ура, я получила добро на демонстрирование нашего репозитория☺️
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
https://github.com/Areson251/open_vocabulary_benchmark
Кому интересно позапускать и поиграть самому - добро пожаловать🤗
Хочу, чтобы большинство людей посмотрело, потому что я действительно горжусь тем, как он выглядит))
И да, не упущу возможности поклянчить звездочки на репу👀
#about_ml
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
https://github.com/Areson251/open_vocabulary_benchmark
Кому интересно позапускать и поиграть самому - добро пожаловать🤗
Хочу, чтобы большинство людей посмотрело, потому что я действительно горжусь тем, как он выглядит))
И да, не упущу возможности поклянчить звездочки на репу👀
#about_ml
GitHub
GitHub - Areson251/open_vocabulary_benchmark
Contribute to Areson251/open_vocabulary_benchmark development by creating an account on GitHub.
🔥5