Искусственные Нейронные Сети являются мощными инструментами для решения многих задач и широко применяются различными организациями. С некоторыми допущениями применение Искусственных Нейронных Сетей можно сгруппировать следующим образом: Регрессия / Аппроксимация  Классификация / Кластеризация Компьютерное зрение (Computer Vision) seq2seq (Последовательность в последовательность) Обработка естественного языка (Narural Language Process) Данная статья является обзорно-ознакомительной, посвящена примерам из группы задач "Компьютерное зрение (Computer Vision)". Сначала напомним, что довольно часто Искусственные Нейронные Сети решают штатные задачи регрессии и классификации. Это важно потому, что решение задач Computer Vision является самым непосредственным следствием решения задач регрессии и классификации. В базовой задаче линейной регрессии имеется множество точек и нужно провести по ним прямую линию, максимально соответствующую данному множеству точек.   Математически это выражается в том, что средняя сумма квадратов отклонений должна быть минимальной.   Таким образом Искусственная Нейронная Сеть довольно стабильно решает задачу оптимизации, перебирает варианты и находит нужные параметры для формулы. Со временем количество объектов растет, количество параметров растет, то есть система координат переходит из двухмерной в многомерную, но базовый принцип остается тот же. На практике такая линейная регрессия может применяться для прогнозирования дальнейшего движения, для определения произошедшего изменения параметров и так далее. В задаче бинарной классификации (в случае линейно-разделимого множества) имеется множество объектов, отнесенных к двум классам. Необходимо провести прямую линию так, чтобы разделить классы - полностью или с минимальной ошибкой.   Существует множество методов, имеющих свои достоинства и недостатки. Так или иначе, в конечном итоге прямая определяется.   После определения параметров линии разделения любой новый объект будет относиться к существующему классу, и это применяется довольно широко.   В случае бинарной классификации стало распространенным применять термин "Логистическая регрессия". Можно сказать, что логистическая регрессия является расширением или продолжением линейной регрессии. Если задать метки класса как "0"/"1", расположить точки в обычной системе координат и представить задачу как регрессию, то при проведении прямой линии сумма квадратов отклонений (грамотно называть это уже функцией потерь) будет значительна, а если проводить не прямую линию, а логистическую функцию, то значении функции потерь будет существенно меньше. Считается, что график логистической функции или логистической регресии похож на букву "S", поэтому для удобства восприятия и запоминания ее называют "Сигмоида".   На графика можно увидеть, что чем большее значение имеет параметр логистической функции (z), то тем ближе значение функции к 1, а чем меньше параметр, тем ближе значение функции к нулю. Параметр логистической функции (z) считается как сумма произведений заданных координат и коэффициентов, подбираемой Нейронной Сетью. С одной стороны, формально можно считать, что если параметр z больше 0, то объект относится к классу "1", а если меньше нуля, то к классу "0". Но по конкретной задаче бывает сильно лучше трактовать так, что значение логистической функции означает вероятность отнесения объекта к классу "1", то есть вероятность события составляет 97%, или 83%, или 17%. Это тоже отнесение к одному из двух классов, то есть та же бинарная классификация, но несколько в иной трактовке. Таким образом Нейронная Сеть снова решает оптимизационную задачу, подбирая веса таким образом, чтобы значение функции потерь было минимальным. Не совсем очевидно, откуда появилось слово "логистическая" и что в данном случае оно означает, ведь никакой "логики" и тем более "логистики" здесь не наблюдается. Коротко говоря, существует математическая теорема, обуславливающая взаимный переход между трактовкой классификации и трактовкой вероятности, и в ходе доказательства применяются логарифмы. Можно сказать, что корректно было бы применять слово "логарифмическая", но исторически так уже сложилось и все к этому давно привыкли. Расширяя бинарную классификацию до многоклассовой, доходим до функции SoftMax. Можно сказать, что это та же логистическая функция, только для нескольких классов. Логистическая функция для двух классов имеет такой вид: А логистическая функция для нескольких классов (SoftMax) имеет такой вид:   В определенной трактовке, Softmax преобразует значения в относительные вероятности, которые легче понимать и сравнивать. То есть так как все значения находятся между 0 и 1 и при этом сумма значений равна 1, то мы можем трактовать значения как вероятности.   Так мы сравниваем вероятность 90% с вероятностью 5%, 2% и 1%, и в итоге делаем вывод, к какому из нескольких классов относится объект. Ну а Нейронная Сеть, в свою очередь, решает ту же оптимизационную задачу, подбирая коэффициенты таким образом, чтобы значение функции потерь (по простому, отклонения) было бы минимальным.   Для ясности отметим, что если классов всего 2, то вторая формула превращается в первую, то есть разночтений не наблюдается - при бинарной классификации обе формулы идентичны.   Разделение объектов на несколько классов применяется уже очень широко. Как уже отмечено, в общем случае математически Искусственные Нейронные Сети решают задачи оптимизации, а на выходе выводы определенным образом преобразовываются и трактуются уже как классификация. В задаче классификации имеется множество объектов с заданными параметрами и с меткой класса. Параметрами могут быть длина, ширина, высота, цена, расстояние до метро, наличие парковки и так далее. Примером метки класса может являться, например, наименование объекта такие как кот, собака, велосипед, или же цифра от 0 до 9, вид цветка ириса и так далее. Если параметры не цифровые, то их "оцифровывают". Например, наличие парковки превращается сначала в "Да"/"Нет", а потом в "1"/"0". Если есть 4 варианта, то такие параметрами могут быть выражены цифрами от 0 до 3 или от 1 до 4. Изображение 28x28 превращается в строку из 784 "нолей" или "единиц", или даже в строку значений от 0 до 255, а такое же цветное изображение превращается к тому же в трехмерную матрицу. Так или иначе все параметры превращаются в цифры. Аналогично оцифровывают и метки класса. Если два класса, то это "1"/"0". Если 100 классов, то метками класса становятся числа от 0 до 99. Обучение Искусственной Нейронной Сети состоит в том, что в нее загружают заданное множество объектов с оцифрованными параметрами и метками классов и Сеть "подбирает" формулу преобразования множества параметров в множество меток класса с минимальной или допустимой степенью погрешности. Когда же после обучения в Сеть передают параметры нового объекта в том же формате, то на выходе получается метка класса, которому данный объект соответствует больше всего по мнению сети. Существует много различных разновидностей Искусственных Нейронных Сетей, алгоритмов оптимизации, глобальных параметров и прочее, но суть остается той же - Сеть решает задачу классификации, то есть определяет принадлежность данного объекта к тому или иному классу. Прежде всего необходимо отметить, что компьютер не понимает изображение в человеческом понимании. У компьютера есть файл с цифрами или объекты, представляющие собой множества цифр. Точнее, у компьютера есть состояния переходов в микросхемах, которые мы трактуем как "1" или "0", и уже вся дальнейшая логика построена на "1"/"0". В итоге считается, что компьютер работает с числами, проводя те или иные вычисления и преобразования.   В итоге изображения представляют собой объекты с параметрами, выраженными числами, и далее решается задача классификации.   На следующем уровне в Computer Vision возможно выделить следующие подразделы: Классификация (распознавание) Детектирование Сегментация Комбинирование предыдущих разделов  Длительное время распространенным учебным примером являлось распознавание рукописных цифр из набора MNIST-10, представляющего собой 60 000 изображений рукописных цифр в формате 28х28 пикселей.   Мы видим стандартную задачу многоклассовой классификации. Изображение превращается в числа, метки классов уже сами по себе являются числами, совпадающими с метками класса, и при передаче нового объекта (изображения в заданном формате) в сеть на выходе получается метка класса, то есть цифра от 0 до 9.   Распознавание цифр естественным образом перешло в целое направление - OCR (Optical Charаcter Recognition) оптическое распознавание символов и последующее распознавание текста.   Другой распространенной учебной задачей было определить, что на фото - кошка или собака.   Уже понимаем, это штатная задача классификации. Может быть разновидность - определить наличие/отсутствие заданного объекта или объекта заданного класса на изображении. и это снова задача классификации. Разновидность, когда есть 3 класса - "кошка", "собака", "иное" (то есть не кошка и не собака") все так же является задачей классификации. Задачи постепенно усложнялись, появлялись новые широкодоступные наборы данных . Так набор CIFAR-10 содержал уже 10 классов изображений 32x32, CIFAR-100 - 100 классов изображений 32x32. Набор ImageNet содержал уже 1000 классов изображений 224x224.   Стали появляться специальные сети, обученные специально для распознавания изображений, в том числе и на данных наборах. Например, AlexNet, GoogleNet, ResNet и так далее. Эти Искусственные Нейронные Сети применяются как для распознавания непосредственно имеющихся классов объектов, так и "дообучиваются" под конкретные задачи и применяются для распознавания классов объектов, которые изначально не были заложены в набор. Сети для распознавания изображений содержали уже по 18, 19, 52 и так далее слоев, что вызвало применение термина "глубокие". Термин "Deep Learning" как раз и обозначает обучение глубоких (или многослойных) Искусственных Нейронных Сетей. В итоге распознавание объектов или образов на изображении и их классификация является довольно частой задачей. К распознаванию объектов и их классификации добавилась детектирование, то есть определение местоположения объекта на изображении. Объект стал обводиться контуром, иногда добавляют название или метку класса и какие либо параметры.   Просто контур: Контур с меткой класса: Контур с меткой класса и параметрами:   Даже при неполном изображении: Несколько объектов одного класса: Несколько объектов разного класса: Человек и собака: Человек, собака и велосипед: Элементы одежды: Люди: Марки автомобилей: Общая обстановка: В дополнение к детектированию на изображениях стали проводить сегментацию, то есть выделять сегменты, закрашивать различные объекты различными цветами.   Важно понимать, что техническая возможность, техническая реализация и понимание практического применения, практической пользы - очень разные задачи. Вспомним пример, в котором довольно длительное время инвесторы отказывались инвестировать в непонятную и, как казалось, никому не нужную систему поиска на сайте. Сегодня поисковик Google известен всем и применяется довольно широко. Аналогично развлекательная схема оценки фотографий лиц в одном из учебных заведений превратилось в то, что сейчас известно как FaceBook. Считается, что изначально маркетинговые исследования показали, что миру нужно максимум 5 компьютеров, и то только для арабских шейхов. Сейчас мы видим, как компьютеры плотно вошли в жизнь практического каждого человека. Действительно, есть случаи, когда очень сложные технические и дорогостоящие решения оказывались невостребованными, но известны и случаи, когда довольно простые решения приводили к существенному экономическому эффекту, если их правильно "упаковать". То есть очень важно определить исходную бизнес-задачу. В сфере Искусственных Нейронных Сетей существует учебный пример, "легенда", что на начальном этапе развития Искусственных Нейронных Сетей команда сделала такой проект: закачали в ИНС базу данных сделок с недвижимостью, включая параметры дома и цену. Дальше понятно - сеть сформировала формулу и любой человек мог зайти на данный сайт, заполнить анкету и мгновенно получить адекватную цену. Сайт стал популярным, на него стали заходить чуть ли не все из данной аудитории, в итоге сайт приносил порядка 800 млн.долларов в год. Смысл в том, что технически реализация простая, а монетизация получилась приличная. Некоторое время довольно популярной задачей было определение наличия медицинской маски.   Аналогичной задачей является определение наличия строительной каски, перчаток, пристегнутого ремня безопасности, наличие дефекта, наличие заболевания и прочее.   Из скана документа можно вытащить данные и заполнить карточку клиента, что может применяться при массовой автоматической регистрации.   Также возможно определять, является ли приложенный документ паспортом или просто каким-то изображением.   Целое направление основано на поиске похожих изображений. Можно искать похожие лица, похожие предметы, похожие изображения.   В зависимости от задачи и трактовки, возможно находить информацию в интернете о человеке по его фотографии или определить локацию по фото окружающей обстановки, или же система предложит несколько автомобилей, похожих на выбранный.   Распознавание предметов становится популярным для последующей продажи   Например, в некоторых фильмах одежду на актерах можно кликнуть и купить в соответствующих магазинах. Искусственная Нейронная Сеть может подобрать похожие изображения, поэтому возможно подобрать не только именно эти предметы, но и похожие. Схожая задача - определение заполненности мест в транспорте, в кафе, на товарной полке, наличие людей или очередей у кассы.   Может применяться для анализа транспортного трафика.   Может применяться как для анализа людского трафика, так и для выявления неожиданного скопления, для подсчета количества людей в очереди на кассах и так далее   Автоматическое управление беспилотным транспортным средством является сложной технической задачей. Очень много параметров, да еще и динамически меняющихся. При этом по незагруженным участкам и особенно по прямой в ряде случае транспортные средства уже применяются и без водителей, и без операторов. Необходимо отметить, что при движении транспортного средства без водителя возникает не только техническая, но и социальная проблема. Например, в некоторых городах метро фактически управляются нейронными сетями, но чтобы пассажиры не переживали, не увидев привычного машиниста, на месте машиниста сидит живой человек, выполняя функции статиста.  В другом примере автоматические транспортные доставщики технически работали вполне корректно, но люди не ожидали увидеть на тротуарах небольшие повозки с коробками, которые сами передвигаются. В ряде случаев посылки просто отбирали, иногда роботов ломали или забирали домой в качестве сувенира. Стоит отметить, что и люди на заднем сиденье автомобиля, двигающегося без водителя, смотрятся все еще непривычно. Тем не менее, Искусственные  Нейронные Сети продолжают развиваться и на незагруженных участках, автострадах и железных дорогах уже показывают приемлемые результаты.   Распознавание лиц также превратилось в целую отрасль, связанную с биометрическими данными. Считается, что на лице есть набор точек, которые не меняются, и поэтому возможно уверенно идентифицировать личность по лицу. Лицо становится удостоверением личности, и уже сейчас некоторые модели смартфонов удостоверяют своих владельцев и предоставляют доступ по лицу. Также по лицу может быть предоставлен доступ в помещение и так далее.   Уже сейчас много данных поступает в единые или объединенные биометрические системы и в ряде банков уже сейчас возможно "оплатить лицом", то есть пройти идентификацию просто находясь возле оборудования. Аналогично системы могут работать и при оплате в ресторане, магазине, общественном транспорте и прочее.   В итоге предполагается, что когда посетитель только войдет в зал или в офис, менеджер уже будет знать о нем всю информацию, имеющуюся в системе, что приведет к увеличению продаж и улучшению качества обслуживания.   Если Вы обнаружили в статье неточность, или считаете полезным что-либо добавить - пожалуйста, сообщите в комментариях. В порядке эксперимента по материалам данной статьи подготовлено отдельное видео.