Содержание статьи
Методы распознавания образов: от простых до сложных
Нейросетевые методы распознавания образов
Проект Commercial Texture Analysis Software разработал различное программное обеспечение для анализа текстур с использованием LBP. Эти инструменты применяются, например, для анализа текстур на медицинских изображениях, материалах, а также для контроля качества и анализа характеристик материалов.
В большинстве случаев вам потребуется выполнить некоторую предварительную обработку ваших данных, чтобы подготовить их к использованию, но поскольку мы используем уже готовый и упакованный набор данных, то такая обработка сведена к минимуму. Одним из действий, которые мы хотим сделать, будет нормализация входных данных. Если значения входных данных находятся в слишком широком диапазоне, это может отрицательно повлиять на работу сети. В нашем случае входными значениями являются пиксели в изображении, которые имеют значение от 0 до 255. Таким образом, чтобы нормализовать данные, мы можем просто разделить значения изображения на 255. Для этого нам сначала нужно перевести данные в формат с плавающей запятой, поскольку в настоящее время они являются целыми числами. Мы можем сделать это, используя Numpy команду astype(), а затем объявить желаемый тип данных:
Архитектуры CNN могут быть адаптированы к различным задачам, начиная от распознавания лиц до анализа медицинских изображений. Существуют предобученные CNN модели, которые можно использовать в качестве базовой архитектуры и дообучать на конкретных данных.
После того, как карта признаков изображения была создана, значения, представляющие изображение, передаются через функцию активации или слой активации. Функция активации принимает эти значения, которые благодаря сверточному слою находятся в линейной форме (то есть просто список чисел) и увеличивает их нелинейность, поскольку сами изображения являются нелинейными. Типичной функцией активации, используемой для достижения этой цели, является выпрямленная линейная единица (ReLU), хотя есть и некоторые другие функции активации, которые также иногда используются (вы можете прочитать о них здесь .
Мы уже многое рассмотрели и если вся эта информация была, возможно, немного неясной, то объединение вышеописанных концепций в выборочном классификаторе, обученном на наборе данных, должно окончательно все прояснить Итак, давайте рассмотрим полный пример распознавания изображений с использованием Keras — от загрузки данных до оценки эффективности модели.
Задача локализации связана с тем, где на изображении находится интересующий объект. Допустим, если на фотографии есть несколько лиц, то компьютер должен выделить каждое из них и определить их местоположение. Также алгоритм должен уметь разделять на изображении различные области, чтобы понять, что находится в каждой из них. Например, на фотографии леса выделить деревья или метку на стволе дерева.
Оценка модели
Для начала нам понадобится набор данных для обучения. В этом примере мы будем использовать известный набор данных CIFAR-10. CIFAR-10 — это большой набор данных, содержащий более 60000 изображений, представляющих 10 различных классов объектов, таких как кошки, самолеты и автомобили. Изображения являются полноцветными RGB, но они достаточно малы, всего 32 x 32. Отличительной особенностью набора данных CIFAR-10 является то, что он поставляется в комплекте с Keras, поэтому загрузить набор данных очень просто, а сами изображения нуждаются лишь в минимальной предварительной обработке. Первое, что мы должны сделать, это импортировать необходимые библиотеки. Вы ещё увидите, как именно этот импорт происходит по ходу дела, а пока же просто имейте в виду, что мы будем использовать Numpy и различные модули, связанные с Keras:
Одним из главных достоинств нейросетевых методов является то, что в работе с ними мало ручных настроек. Практически всю нужную информацию нейросети извлекают сами в процессе обучения. Нейросети способны изучать сложные признаки, адаптироваться к разным задачам, переобучаться и использоваться к различным типам задач: текст, звук, изображения и др. Это делает их универсальными.
К недостаткам можно отнести то, что настройка параметров классических методов может быть трудоемкой задачей и требует экспертных знаний для достижения хороших результатов. Классические методы чувствительны к изменениям в условиях съемки. Их производительность может снижаться в сложных сценариях.
После активации данные отправляются через объединяющий слой. Объединение «упрощает» изображение: берёт информацию, которая представляет изображение, и сжимает её. Процесс объединения в пул делает сеть более гибкой и способной лучше распознавать объекты и изображения на основе соответствующих функций. Когда мы смотрим на изображение, нас, как правило, волнует не вся информация (например, что на заднем плане изображения), а только признаки, которые нас интересуют — люди, животные и т. д. Аналогично, объединяющий слой в CNN избавится от ненужных частей изображения, оставив только те части, которые он считает релевантными, в зависимости от заданного размера объединяющего слоя. Поскольку сеть должна принимать решения относительно наиболее важных частей изображения, расчёт идёт на то, что она изучит только те части изображения, которые действительно представляют суть рассматриваемого объекта. Это помогает предотвратить “переобучение” — когда сеть слишком хорошо изучает все аспекты учебного примера и уже не может обобщать новые данные, поскольку учитывает нерелевантные отличия. Существуют различные способы объединения значений, но чаще всего используется максимальное объединение. Максимальное объединение подразумевает взятие максимального значения среди пикселей в пределах одного фильтра (в пределах одного фрагмента изображения). Это отсеивает 3/4 информации, при условии использования фильтра размером 2 x 2. Максимальные значения пикселей используются для того, чтобы учесть возможные искажения изображения, а количество параметров (размер изображения) уменьшены, чтобы контролировать переобучение. Существуют и другие принципы объединения, такие как среднее или суммарное объединение, но они используются не так часто, поскольку максимальное объединение даёт большую точность.
Эволюция методов распознавания образов началась с исследований и экспериментов в области компьютерного зрения и обработки изображений. Первые наработки появились еще в 1950-е годы. С развитием микропроцессоров и вычислительных ресурсов начались активные исследования в области компьютерного зрения и машинного обучения для распознавания лиц. Метод глубокого обучения и появление нейронных сетей в начале 2000-х дали толчок тому, чтобы технологии распознавания образов становились точнее и эффективнее. Открытие архитектур сверточных нейронных сетей (далее — CNN) в предыдущее десятилетие способствовало увеличению точности и производительности систем распознавания образов.
В системах оптического распознавания символов (OCR) методы анализа границ и форм работают для выделения и распознавания букв и цифр на изображениях рукописного текста. А также они эффективны при измерении размеров и форм — для создания индивидуальной одежды или анализа геометрии объектов в инженерных сооружениях.
Image Moments. Другой алгоритм связан со статистическими характеристиками изображения, такими как центр массы, площадь, ориентация и т. д. Они используются для анализа формы объектов на изображении. Например, можно вычислить моменты, чтобы определить положение и размер объекта.
Модели, построенные на основе нейронных сетей с отобранными признаками, могут быть более интерпретируемыми, чем глубокие нейронные сети, потому что признаки имеют четкое физическое или предметное значение. Отбор признаков может построить модель, требующую меньше размеченных данных для обучения, что особенно полезно в случаях с ограниченным объемом данных.