Алгоритм распознавания образов обучающийся с одного раза (One-Shot learning) |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-06-18 13:37 Введение
Я хочу представить вам результат своих экспериментов с алгоритмами распознавания образов с обучением с первого раза (так называемый One-Shot Learning). В результате экспериментов выработались определённые подходы к структуризации изображения и в итоге они воплотились в несколько взаимосвязанных алгоритмов и тестовое приложение на Android, которым можно проверить качество и работоспособность алгоритмов. Моя цель была создать алгоритм с понятным принципом работы который может найти абстрактные зависимости в картинке с первого раза (обучиться) и показать приемлемое качество распознавания (поиска подобных абстрактных зависимостей) на последующих циклах распознавания. При этом логика принятия решения должна быть прозрачной, поддающейся анализу, ближе к линейному алгоритму. На условной шкале где на одном конце мозг а на другом станок с ЧПУ он гораздо ближе к станку чем нейросети. Почему не нейросети?
На данный момент нейросети царствуют в задачах распознавания, в частности CNN является своего рода стандартом для распознавания образов. Однако, на мой взгляд, их применение не безгранично и нужно искать другие подходы. Приведу несколько причин против нейросетей:
Как это устроено
Основная идея такая: изображение- образец должно быть структурировано, т.е. информация в нем должна быть уменьшена до необходимого минимума, но так чтобы не терялся смысл. Например художники рисуют скетчи – всего в несколько точных линий художник может изобразить лицо человека или какой то предмет и зрителю будет понятно что изображено. Фотография содержит матрицу N*M пикселей каждый пиксель содержит сколько то бит информации о цвете, а если представить это все в виде параметров линий то объем информации резко уменьшается и обработка такой информации гораздо проще. Примерно тоже самое должен делать алгоритм. Он должен выделить главные детали в кадре – то что несет в себе основную информацию и отбросить все лишнее. Алгоритм находит структуру векторов по границам объектов в образце и такую же структуру в распознаваемом изображении. Для того чтобы получить вектора изображение проходит несколько стадий обработки:
В анализируемом алгоритме происходит тоже самое. Далее полученные массивы векторов сравниваются:
Таким образом маленькие детальки входят в общую картину и происходит лавинообразное распознавание образа. Общая схема работы алгоритмов: Обучение в несколько этапов
Не смотря на то что алгоритм может эффективно работать с одного образца, имеется возможность повышать точность распознавания, анализируя несколько образцов. Это не реализовано в демо-версии, поэтому я просто расскажу про такую возможность, это очень просто. Принцип обучения на нескольких образцах заключается в отбрасывании лишних векторов. Лишние – это те которые не вошли во взаимно найденный кластер векторов. Например на образце может быть тень, которая распознается как граница, а на следующем образце ее может не быть. Таким образом если вектор входим в состав кластера котрый найден в сохраненном образце и в анализируемом то он получает +1 балл, а если нет то ничего не получит. Спустя несколкьо обучений вектора которые набрали мало баллов удаляются из сохраненного образца и более не используются для анализа. Также можно сделать визуальный редактор который просто позволит убрать ненужные вектора с кадра после первого обучения. Для чего может применяться
Честно говоря я все усилия сконцентрировал на самом алгоритме. Хотя т.к. я работаю с среде бизнес решений и автоматизации производства то одно применение я вижу – распознавание продукции на складах и производственных линиях – тут как раз нет больших датасетов – то образец надо показать 1 раз после чего распознавать. Как привязка штрих кодов только без штрих кодов. Ну а вообще применение такое же как и у любого другого алгоритма распознавания. Применение обусловлено возможностями и ограничениями алгоритма. Работа тестового приложения
Приложение работает с матрицей 100*100 пикселей, преобразует картинку к монохромной матрице такого размера. Алгоритму не важно под каким углом находится образец и его размеры в некоторых пределах тоже. Слева показывается результат выделения значимых областей текущего изображения и совпадающие векторы в нем (зеленым цветом), а справа показываются структуры векторов найденная и наиболее подходящая из сохраненных и красным цветом выделены похожие вектора на сохраненной структуре. Таким образом красным и зеленым цветом подсвечены структуры векторов которые алгоритм считает похожими. Можно сохранить несколько образцов. И показывая новое изображение алгоритм найдет наиболее подходящее из них и покажет похожие части. Источник: habr.com Комментарии: |
|