BIG BAD DATA – Telegram
BIG BAD DATA
140 subscribers
69 photos
1 video
9 files
31 links
Сложно о простом и просто о сложном 😎🥸
👀Меня можно найти тут: @Areson251
Download Telegram
Хочу поделиться первыми результатами разработки диплома)

Исходное изображение 1280х497 Яндекс карты
Сравниваемое изображение
400х300 Гугл карты
Масштаб карты на фотках одинаковый - 1 км
1 фото результат: «тепловая карта» с шагом в 101 пиксель, время работы - 2.4 сек.
2 фото результат: «тепловая карта» с шагом в 21 пиксель, время работы - 28.2 сек.

#about_ml
👍6
Я попыталась решить пробник в ШАД😅😅😅

Ну… я решила первую задачу😂
А ещё правильно думала в направлении 5 задачи🤣
Лан, посмотрю завтра разбор и буду на шаг ближе к цели😎

Вариант оставлю ниже, вдруг кому тоже будет интересно попробовать себя👇👇👇

#info
Что-то я совсем пропала😅

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

1. Решение, о котором я уже говорила - обучение нейронки на датасете из 800 картинок. Изучая подробнее, я заметила, что в аннотации обучающей выборки находятся не только координаты снимка относительно карты местности, но и угол поворота к ней.
Для меня это решение совсем не подходит. Как я уже говорила, никто не будет обучать БПЛА на определённую местность. Единственный плюс этого решения: выборка содержит фотографии в различные промежутки времени и различные погодные условия, что было бы полезно учитывать в ходе работы алгоритма.

2. Использование простейшей сверточной сети PyTorch без обучения. Использовалось свойство ядер сверточных сетей: если паттерн входного изображения совпадает с ядром, свертка с ним дает максимальный результат. В качестве ядер использовались сами входные изображения.
Этот метод решает проблему с обучением предыдущего метода. Но в противовес появляется другая: тк не учитывается поворот угла изображения, приходится перебирать все 360 ориентаций. Из-за чего может гораздо сильно возрасти время обработки.

3. Последнее решение, на мой взгляд, самое привлекательное - использование афинно инвариантного A-SIFT (масштабно-инвариантная трансформация признаков). Само решение - это поиск ближайшего соседа по метрике отношения количества сопоставленных ключевых точек к общему их числу.
Как я поняла, эта штука даже учитывает масштаб. Честно говоря, плохо разобралась в этом решении, но именно его я хочу пробовать первым:)

#about_ml
👍1
Доброй ночи, дорогие подписчики!

Наболевшая тема - ну нет в нашем институте требований на диплом для научной деятельности, только разработка😩
Конечно, в управлении всё бурно обсуждается в продвижении науки среди молодых студентов. И как всегда, когда будет готово разделение дипломов на разработку и науку, я не попаду в этот поток счастливчиков😂

Не беда - работаем с тем, что есть) Приходится писать спецификацию требований (спасибо, что не заставили писать календарный план🥲). Но тем не менее, мне нужно придумать интерфейс для работы с моими (далеко не моими🤡) алгоритмами. Захотелось поделиться с вами прототипами) Прикладываю ниже👇

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

#phil_thoughts
👍2
1. Главное окно
2. Предварительная обработка изображений
3. Визуализация результатов

#about_ml
👍2
Помните, я выкладывала пост про решения задачи ориентирования б/а?)

У меня из головы все никак не выпадает второй метод. Уж сильно он меня поразил своей нетрадиционностью😁
Поэтому, я расскажу Вам о нем подробнее)))

Второй метод подразумевает использование простейших свёрточных нейронных сетей без обучения. CNN частично устойчивы к различным искажениям на фотографиях, таких как смещение, поворот, изменение масштаба, ракурса и прочее. Свёрточные нейронные сети объединяют три архитектурных идеи, для обеспечения инвариантности к изменению масштаба, повороту сдвигу и пространственным искажениям:
• локальные рецепторные поля (обеспечивают локальную двумерную связность нейронов);
• общие синаптические коэффициенты (обеспечивают детектирование некоторых черт в любом месте изображения и уменьшают общее число весовых коэффициентов);
• иерархическая организация с пространственными подвыборками.
В данном решении предлагается использовать свойство сверточных блоков реагировать на определенные паттерны входного изображения (если паттерн входного изображения совпадает с ядром, то свертка дает максимальный результат). Вместо того, чтобы заниматься обучением нейронной сети на огромном количестве данных, можно взять простейшую свёрточную сеть из одного слоя, и в качестве ядер весов брать предварительно обработанные снимки из обучающей выборки.
Таким образом, сеть содержит всего один сверточный слой, состоящий их количества ядер проверяемых снимков. На вход единственному слою подается подложка, а на выходе получаются двумерные массивы активаций (по количеству равные числу исходных ядер). После вычисления максимум, который соответствует положению центра изображения на входной карте местности.
Этот метод имеет существенный плюс – полное отсутствие обучения, что значительно упрощает рассматривание условия для постоянно изменяемой местности. Тем не менее, предложенный алгоритм совсем не учитывает ориентацию фотографий относительно подложки, так что приходится перебирать все 360 вариантов расположения карты местности, что сильно увеличивает время работы программы.

Скорее всего, данное решение подойдет для обработки большого количества пакетных данных для разных подложек. Предполагается, что выбранное итоговое решение будет работать на real time камере БПЛА. Следовательно, алгоритм всегда будет иметь большое количество снимков, взятых из видеопотока. Однако, второй метод будет не эффективен из-за долгих вычислений поворота подложки к каждому снимку.

#about_ml
👍2
Доброй ночи, товарищи!
Под конец семестра нам дали, на мой взгляд, очень интересную обзорную лабу. Я хочу подробнее изучить темы, которые были в ней даны, и, соответственно, поделиться с Вами 😁

Одной из этих тем была теория решения изобретательских задач, созданная советским инженером Генрихом Альтшуллером. Суть этой теории заключается в формулировке самой задачи таким образом, чтобы в ней отсутствовали все бесмыссленные и неэффективные методы, но при этом смысл задачи оставался тем же. Основные постулаты:
* Техника, её объекты развиваются в целом закономерно.
* Закономерности развития техники познаваемы и могут быть использованы для поиска новых технических решений.
* Процесс поиска нового решения можно описать в виде последовательности интеллектуальных, мыслительных действий.
Важным элементом ТРИЗ являются противоречия: при улучшении одного парамметра, ухудшается другой. Такими противоречиями могут быть:
1) Административные - когда ты не можешь что-то сделать, потому что не знаешь или не умеешь. Самое легкое для устранения противоречие (изучить больше литературы).
2) Технические - либо ты делаешь шумоизоляцию в машине и она становится тяжелее, либо ты ездишь на, условно, легкой машине, но с шумом.
3) Физические - большинство инженеров в своих разработках упираются в ограничения законами физики.

#about_ml
👍1
Не смотря на то, что ТРИЗ имеет противоречия, тем не менее, именно они помогают решать ее задачи методом их устранения. Следовательно, теория отмечает, что любые изобретательские задачи не являются чем-то "элитным", "доступным только гениям". Наоборот, она показывает, что процесс изобретения может быть систематизирован.

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

#about_ml
👍1
Фууух, наконец-то эта адовая неделя подходит к концу...😪 Сдала все зачеты, теперь можно начинать писать посты😄

- Какие модели представления знаний Вы знаете? - такой вопрос получила я на одном из зачетов.
- Лингвистические переменные! - первое, что пришло мне в голову. О них сейчас и пойдет речь.

Если дело касается каких-то точных числовых данных, то тут все просто: рост измеряется в сантиметрах, следовательно можно точно сказать, когда человек выше 160 см или ниже 170 см. Но как понять, в какой момент человек становится высоким или низким? Где та самая граница, когда человек еще считается среднего роста, а, прибавив 1 мм, он уже станет высоким?
Именно для описания таких нечетких правил американский математик Лотфи Заде ввел понятие Лингвистической переменной.
В отличии от простых переменных, которые принимают числовые значения и их выражения, лингвистические переменные принимают слова и предложения. Тем самым становится проще оперировать понятиями "высоко" и "низко", "быстро" и "медленно", "много" и "мало".
Встает следующий вопрос, как тогда оценивать эти лингвистические переменные? Как они относятся друг к другу?

#about_ml
👍1
Для этого существуют их функции принадлежности. Условно, три функции описываются от переменной X: "не Х", "более-менее Х" и "очень Х" (страшные математические формулы приводить не буду, чтобы не напугать Вас, но покажу график) и затем, подставляются какие-то числовые данные, от которого зависит само нечеткое понятие.

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

#about_ml
👍1
Поздравляю всех с наступившем 2023 годом!!!🎉🎄
А я все так же продолжаю готовиться к маге😌

Расскажу немного про самые простейшие модели мл. Представьте, что у вас есть множество объектов, а вы хотели бы каждому объекту сопоставить какое-то значение. К примеру, у вас есть набор операций по банковской карте, а вы бы хотели, понять, какие из этих операций сделали мошенники. Если вы разделите все операции на два класса и нулём обозначите законные действия, а единицей мошеннические, то у вас получится простейшая задача классификации. Таким образом, задачи классификации можно сформулировать как поиск отображения из множества объектов в множество возможных таргетов. Возможных отображений может быть много, но мы можем упростить себе задачу и договориться, что хотим искать решение только в каком-то заранее заданном параметризированном семействе функций — линейным функциям вида y = w1x1+...+wdxd+w0 где y – целевая переменная (таргет), (x1, ... , xd)– вектор, соответствующий объекту выборки (вектор признаков), а w1, ..., wd, w0– параметры модели. Теперь задача стала проще, мы ищем не какое-то абстрактное отображение, а конкретный вектор.
К примеру, при D = 1 у наших объектов есть ровно один численный признак, по которому они отличаются. Теперь наша линейная модель будет выглядеть совсем просто: y = w1x1 + w0. Давайте вспомним про пример с поиском мошеннических транзакций по картам. Допустим, нам известна ровно одна численная переменная — объём транзакции. Для бинарной классификации транзакций на законные и потенциально мошеннические мы будем искать так называемое разделяющее правило: там, где значение функции положительно, мы будем предсказывать один класс, где отрицательно – другой. В нашем примере простейшим правилом будет какое-то пороговое значение объёма транзакций, после которого есть смысл пометить транзакцию как подозрительную (см. рис).

#about_ml
🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
👍2
Юхуу, мою статью одобрили на печать!🎉

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

#info
👍4
чекнешь статью?
Anonymous Poll
100%
да
0%
в другой раз)))
2023-K-342-2-01_23.pdf
4.5 MB
Так, что-то совсем я заотдыхалась🤪
Законные каникулы проведены шикарно!

Как и обещала, кидаю сборник со статьей) Может быть, кто-то найдет для себя другие интересные статьи и познает все вопросы вселенной😌

#about_ml
Я уверена, что все когда-нибудь слышали о таких методах мышления как ДЕДУКЦИЯ и ИНДУКЦИЯ💭
Захотелось немного поговорить об этом.

Дедукция - рассуждение от общего к частному (вспоминаем круги Эйлера, в большой круг полностью входит маленький круг). Пример:
1 ссылка. Все люди смертны
2 ссылка. Сократ - человек
Вывод. Сократ - смертен
На этом методе основана вся математика, потому что дедукция - абсолютно истинное рассуждение, которое ни в коем случае не допускает ошибок.
Раз этот способ так хорош, зачем тогда существует индукция? Затем, что первый метод имеет большой недостаток - отсутствие новой информации. Все умозаключения являются следствием из уже имеющихся.
К примеру, фермер каждый день на рассвете кормил цыпленка в течение нескольких месяцев. В один день цыпленок просыпается и делает вывод по дедукции (раз фермер кормил его каждый рассвет на протяжении всех прошлых дней => покормит сегодня). К его сожалению, в этот день фермер решил поесть суп на завтрак.

Индукция - рассуждение от частного к общему. Пример:
1 ссылка. Таня и Петя сдают экзамены
2 ссылка. Таня и Петя студенты
Вывод. Все студенты сдают экзамены
Кажется, что метод индукции делает поспешные выводы. В этом и заключается его недостаток - теории могут быть недостоверными, их нужно проверять. Один из интересных философских примеров такой: все люди до нас были смертны => мы и люди в будущем смертны. Но! Это индукционное высказывание, которое может быть ложным.
Однако, у этого метода есть преимущество перед первым - можно найти новую информацию. Я сразу вспомнила мутацию, необходимый генетический процесс для появления новых полезных признаков организмов.

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

#phil_thoughts
👏1