Продолжая тему нейронных сетей, поговорим о компьютерном зрении |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2016-01-30 17:01 Продолжая тему нейронных сетей, поговорим о компьютерном зрении. Есть цель: понять, что изображено на картинке. Если человек с этим справляется без проблем, для компьютера фотография будет представлять собой бессмысленную поебень из никак не связанных друг с другом пикселей. Значит, нужно его научить этому! Так как фотографии уникальны, какой-то универсальный алгоритм нам не подойдет - придется клепать нейронную сеть. Помнишь, в статье про определение языка текста мы изучали кучу примеров на двух языках? Нейросеть сначала обучилась на примерах, а потом сама начала распознавать текст. С фоточками другая проблема. Во-первых, у нас очень мало примеров. Если сравнивать с человеческим мозгом, который учится в течении всей жизни и получает информацию ежесекундно, у компьютера есть какая-то база изображений. Вторая проблема - разбиение картинки на характерные признаки. Не попиксельно же просматривать весь массив данных, нужно как-то формализовать признаки. Переведем картинку в ч/б - потом поймешь, зачем. Когда человек рассматривает предмет, обычно взгляд цепляется за детали, выбивающиеся из общей картины, так давайте и применим тот же принцип. Один из способов: возьмём и наложим на картинку размытие по Гауссу - фотошопом пользуешься? Незначительные детали размоются, оставив яркие пятна на месте экстремумов - тех самых точек, которые нам интересны. Если мы сравним картинки до и после размытия, разница между точками фона будет незначительной, в то время как точка экстремума сгладится довольно сильно. Отметим это и размоем еще сильнее, повторим процедуру в сравнении с прошлым размытием. Если там были не слишком выделяющиеся места, они размоются, оставив нам те, что выделяются сильнее и которые для нас, безусловно, интереснее. Определить их несложно - достаточно при каждом размытии находить разницу между пикселями с одними координатами и запоминать те, где та самая разница выше порогового значения. Теперь возьмем кусок изображения возле такой точки и разобьем на маленькие квадратики - например, 2x2 пикселя. Найдем градиент каждого из них. Да-да, математически тот самый градиент - это вектор, указывающий направление наибольшего возрастания функции, в нашем случае от черного к белому. Другими словами, если у нас два черных квадратика сверху, а снизу два белых, то вектор градиента будет направлен вниз, там белее же. Короче, просчитываем градиенты и записываем в массив данных - дескриптор. Обычно в компьютерном зрении столько объектов, что таких дескрипторов нужны сотни, а то и тысячи - зависит от сложности задачи. Раз у нас есть набор дескрипторов, значит, их можно преобразовать в числа каким-то образом - нужно же как-то сравнить с эталоном. Есть способы сравнения дескрипторов между собой, но это все занимает дохуя времени, в том числе и из-за объемов данных. Поступим проще. Если есть возможность преобразовать в число, значит, можно и нанести на координатную плоскость, разложив по какому-то базису. Например, пусть какой-то дескриптор характеризуется двумя числами (в реальности их бывает гораздо больше). Каждому дескриптору будет соответствовать какая-то точка плоскости. Дескрипторы со всех обработанных нами картинок попадут на эту же плоскость. Оказывается, что дескрипторы у схожих предметов находятся в пределах определенной области - в своем кластере. Окей, тогда давайте с помощью обучающей выборки определим границы этого самого кластера, и каждый новый дескриптор будем наносить на плоскость. Очень упрощенно: если точки оказалась внутри кластера «грифель карандаша» - это, скорее всего, грифель карандаша. Присваиваем дескриптору тип того кластера, в который он попал, ну, а там уже знакомыми методами домножаем типы на их веса, полученные в ходе обучения, и на выходе получаем ответ. Комментарии: |
|