<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; сверточные нейронные сети</title>
	<atom:link href="http://web.snauka.ru/issues/tag/svertochnyie-neyronnyie-seti/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Sat, 18 Apr 2026 09:41:14 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Исследование и разработка автоматической системы выделения характерных точек лица на базе сверточные нейронные сети</title>
		<link>https://web.snauka.ru/issues/2018/04/86354</link>
		<comments>https://web.snauka.ru/issues/2018/04/86354#comments</comments>
		<pubDate>Fri, 27 Apr 2018 09:56:33 +0000</pubDate>
		<dc:creator>Кураева Елена Сергеевна</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[CNN]]></category>
		<category><![CDATA[выборка]]></category>
		<category><![CDATA[компьютерное зрение]]></category>
		<category><![CDATA[линейная активация]]></category>
		<category><![CDATA[нейронные сети]]></category>
		<category><![CDATA[пулинг]]></category>
		<category><![CDATA[сверточные нейронные сети]]></category>
		<category><![CDATA[светка]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2018/04/86354</guid>
		<description><![CDATA[1. Введение На данный момент большая часть компаний, специализированных на распознавании лиц, создают свои системы на базе нейронных сетей. И это не случайно, результаты тестирования действительно неплохие. Такие показатели связаны с тем, что искусственные нейронные сети аналогичны биологическим нейронным сетям.  Тема автоматического распознавания лиц актуальна на данный момент, так как ее развитие защищает персональные данные, [...]]]></description>
			<content:encoded><![CDATA[<p><span>1. </span><strong><span>Введение</span></strong></p>
<p><strong></strong><span>На данный момент большая часть компаний, специализированных на распознавании лиц, создают свои системы на базе нейронных сетей. И это не случайно, результаты тестирования действительно неплохие. Такие показатели связаны с тем, что искусственные нейронные сети аналогичны биологическим нейронным сетям. </span><br />
<span>Тема автоматического распознавания лиц актуальна на данный момент, так как ее развитие защищает персональные данные, улучшает распознавание в местах массового скопления (аэропортах, вокзалах, подземных переходах и т. д.), улучшает сервис компаний, упрощает поиск преступников и многое другое. </span><br />
<span>Системы распознавания лиц – важный инструмент защиты людей и способ избавления от повседневной рутины. Системы на базе нейронных сетей на данный момент самые действенные. И данное направление стремительно развивается и будет развиваться.</span></p>
<p><span>2. </span><strong><span>Постановка задачи</span></strong></p>
<p><strong></strong><span>В данной работе рассматриваются сверточные нейронные сети. На базе исследования алгоритма, будет получена система, выделяющая характерные точки лиц. На этом основывается распознавание людей. После получения теоретических знаний, будут установлены и импортированы необходимые библиотеки для Python:</span><span style="color: #2f2f2f;"> </span><span>Keras, TensorFlow, NumPy, OpenCV, Math, PIL Для обучения сети выборка будет состоять из 440 примеров, для тестирования – 3400 примеров.</span></p>
<p><span>3. </span><strong><span>Основная часть</span></strong></p>
<p><strong></strong><span>Системы распознавании лиц могут применяться для многих случаев:</span><br />
<span>- </span><span>подтверждения присутствия студента на лекции, семинаре экзамене;</span><br />
<span>- </span><span>поиска преступников в местах массового скопления, используя базу данных местной полиции;</span><br />
<span>- </span><span>оплаты товаров и услуг;</span><br />
<span>- </span><span>замены человека на предприятиях, где человеческий фактор может мешать производству;</span><br />
<span>- </span><span>контроля доступа.</span><br />
<span>Подобные системы уже входят в нашу жизнь. Их развитие стремительное, но еще много чего предстоит изучить. Важным элементов в распознавании лиц является выделение характерных точек лица человека.</span><br />
<span>Поэтому, целью данной работы является создание системы выделения характерных точек лица, реализованное на базе сверточных нейронных сетей.</span><br />
<span>Для достижения поставленной цели, необходимо выполнить следующие задачи:</span><br />
<span>1. Изучить компьютерное зрение.</span><br />
<span>2. Изучить нейронные сети, в частности сверточные нейронные сети.</span><br />
<span>3. Создать сверточную нейронную сеть для распознавания ключевых точек лица, используя язык программирования – Python.</span><br />
<span>Компьютерное зрение – набор методов, с помощью которых компьютеры способны видеть интересующие объекты. На первом этапе изображение проходит регистрацию, то есть если сенсорный элемент (датчик) среагировал на объект, то полученный аналоговый сигнал преобразовывается в цифровой. Это нужно для дальнейшего преобразования изображения. Важно понимать, что изображение можно представить в виде функции от двух переменных, соответствующих координатам в пространстве на полученном изображении. Данная функция определяет интенсивность (яркость) пикселя с данными координатами. В итоге получается матрица, с которой уже удобно выполнять дальнейшие действия на компьютере [1].</span><br />
<span>Для определения лица на изображении и распознавании человека, требуются не только знания компьютерного зрения, но и алгоритмов, которые отвечают за распознавание. Самые лучшие результаты для решения данной проблемы показывают нейронные сети. Нейронные сети – это сети, которые могут обучаться, подобно ребенку. Искусственные нейронные сети аналогичны биологическим нейронным сетям. Поэтому важно понимать, как устроен и работает наш мозг при получении и обработке информации. На рисунке 1 представлена простейшая нейронная сеть, где x – входные данные, W – веса, Y – выходные данные.</span></p>
<div align="center"><img src="http://content.snauka.ru/web/86354_files/6.gif" alt="" width="305" height="95" /><br />
<span>Рисунок 1 – Простейшая схема нейронной сети</span></div>
<p><span>Рисунок 1 можно представить в виде уравнения (1), где знак умножения – сложные математические действия. Для человека W отвечает за запоминание признаков предмета.</span></p>
<p>X = W * Y         (1)</p>
<p>Обучение нейронных сетей состоит в том, что нужно найти W, если известны входные и выходные данные [2].</p>
<p><span>Существует огромное количество видов нейронных сетей:</span><br />
<span>- </span><span>нейронные сети прямого распространения </span><em><span>(feed forward neural networks, FF или FFNN)</span></em><span> и персептроны </span><em><span>(perceptrons, P) - </span></em><span>базовые модели, комбинирую которые получают новые виды;</span><br />
<span>- </span><span>нейронная сеть Хопфилда</span><em><span> (Hopfield network, HN)</span></em><span> – однослойная сеть, в которой выход каждого нейрона связан со входами остальных нейронов;</span><br />
<span>- </span><span>глубокие сети доверия (Deep belief networks, DBN) в своей схеме имеют несколько скрытых слоев, причем, каждая сеть обучает предыдущую;</span><br />
<span>- </span><span>сверточные нейронные сети (convolutional neural networks, CNN) и глубокие сверточные нейронные сети (deep convolutional neural networks, DCNN) обычно применяются для обработки изображений.</span><br />
<span>Это лишь малая часть всех видов архитектур нейросетей.</span><br />
<span>CNN обычно применяются для обработки изображений. Схема представлена на рисунке 2.</span></p>
<div align="center"><img src="http://content.snauka.ru/web/86354_files/7.gif" alt="" width="396" height="324" /><br />
<span>Рисунок 2 – Схема сверточных нейронных сетей</span></div>
<p><span>Название такого алгоритма означает, что метод основывается на свертке. Свертка получается в результате линейной фильтрации. Исходные данные: x – положение объекта в данный момент времени t, w(a) – весовая функция, а – возраст изменения. Если применять в каждый момент времени средневзвешенную оценку (2), то полученная функция s обеспечивает сглаженную оценку.</span></p>
<p><img src="http://content.snauka.ru/web/86354_files/9.gif" alt="" width="190" height="38" />         (2)</p>
<p>Результат такой операции и называется сверткой.</p>
<p><span>Типичный слой сверточной сети состоит из 3 этапов:</span><br />
<span>- </span><span>выполнение нескольких сверток одновременно для получения набора линейных активаций;</span><br />
<span>- </span><span>каждая полученная линейная активация проходит через нелинейную активационную функцию, этот этап называют детектор;</span><br />
<span>- </span><span>использование пулинга (pooling) объединяет результаты в статистику для улучшения сети [3].</span><br />
<span>При создании системы, которая может выделять ключевые точки после обучения, использовались следующие библиотеки для Python: Keras (нейронная библиотека, является надстройкой над фрейворком TensorFlow), TensorFlow (библиотека для машинного обучения), NumPy (библиотека для работы с массивами и матрицами), OpenCV (библиотека для машинного зрения), Math (библиотека с математическими и логарифмическими функциями), PIL (библиотек для работы с растровой графикой).</span><br />
<span>Для обучения сети необходимо выборку разбить на две части: тестовая выборка состояла из 3400 примеров, обучающая – 440 примеров. В результате полученная система показывает следующие значения, представленные на рисунке 3, где loss – функция ошибки, acc – точность на обучающей выборке, val_loss и val_acc – на тестовой выборке, Learning rate – скорость обучения, Epooch – эпоха. Пример выделения ключевых точек показан на рисунке 4, где всего получается 15 точек – по 3 точки на выделение глаза, 1 на нос, по 2 на брови и 4 на губы.</span></p>
<div align="center"><img src="http://content.snauka.ru/web/86354_files/65.gif" alt="" width="386" height="50" /><br />
<span>Рисунок 3 – Результаты обучения CNN</span></div>
<div align="center"><img src="http://content.snauka.ru/web/86354_files/206.gif" alt="" width="414" height="126" /><br />
<span>Рисунок 4 – пример выделения характерных черт лица</span></div>
<p><strong><span>Заключение</span></strong><br />
<span>В ходе данной работы изучены принципы машинного обучения, изучены алгоритм сверточных нейронных сетей и метод обучения ее, также создана система, выделяющая главные точки лица человека на базе CNN.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2018/04/86354/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Исследование алгоритмов и методов обнаружения и распознавания на основе нейросетевых систем</title>
		<link>https://web.snauka.ru/issues/2021/12/97280</link>
		<comments>https://web.snauka.ru/issues/2021/12/97280#comments</comments>
		<pubDate>Thu, 23 Dec 2021 11:56:01 +0000</pubDate>
		<dc:creator>Дзюба Виктор Алексеевич</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[Faster RCNN]]></category>
		<category><![CDATA[YOLO]]></category>
		<category><![CDATA[YOLOv3]]></category>
		<category><![CDATA[искусственные нейронные сети]]></category>
		<category><![CDATA[сверточные нейронные сети]]></category>
		<category><![CDATA[система технического зрения]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2021/12/97280</guid>
		<description><![CDATA[В настоящее время, в таких областях и сферах жизнедеятельности людей, как медицина, робототехника, безопасность, производство и т.д. большое развитие получили системы для обнаружения и распознавания различных объектов. В основном, подобные системы нацелены на повышение качества, надежности, контроля, точности анализируемых данных или объектов, а также исключение человеческого фактора в различных процессах. Особенностью развития систем для обнаружения [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">В настоящее время, в таких областях и сферах жизнедеятельности людей, как медицина, робототехника, безопасность, производство и т.д. большое развитие получили системы для обнаружения и распознавания различных объектов. В основном, подобные системы нацелены на повышение качества, надежности, контроля, точности анализируемых данных или объектов, а также исключение человеческого фактора в различных процессах.</p>
<p style="text-align: justify;"><span>Особенностью развития систем для обнаружения и распознавания, является применение в них искусственных нейронных сетей (ИНС, НС), а также алгоритмов и методов, работающих на основе ИНС. Существует большое множество подобных алгоритмов, решающих широкий спектр задач в области обнаружения и распознавания, следовательно, будет правильным задаться конкретной задачей:<br />
</span></p>
<p style="text-align: justify;"><span>Необходимо разработать систему технического зрения (СТЗ) для обнаружения и распознавания объектов небольшого размера (например, болты и гайки), двигающихся по производственной конвейерной линии с манипуляторами.<br />
</span></p>
<p style="text-align: justify;"><span>Конечной целью может выступать, например, подсчёт объектов, обнаружение дефектов или сортировка по каким-либо критериям.<br />
</span></p>
<p style="text-align: justify;"><span>В общем случае, СТЗ представляют собой аппаратно-программный комплекс, состоящий из оптической системы, системы освещения и микроконтроллера (МК) [1]. Внутри МК организуются различные методы, в том числе и на основе ИНС, для обнаружения, распознавания объектов и обработки их изображений, в зависимости от поставленной задачи. Структурная схема СТЗ представлена на рисунке 1.<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2021/12/122321_1124_1.png" alt="" /></p>
<p style="text-align: center;"><span>Рисунок 1. Структурная схема СТЗ<br />
</span></p>
<p style="text-align: justify;"><span>Из поставленной задачи можно выделить несколько критериев для поиска необходимого алгоритма:<br />
</span></p>
<ul>
<li>
<div style="text-align: justify;"><span>обнаружение и распознавание объектов должно производиться в режиме реального времени, без задержек (непрерывное производство);<br />
</span></div>
</li>
<li>
<div style="text-align: justify;"><span>алгоритм должен учитывать размер объектов и то, что они могут располагаться хаотично на линии (под разными углами к оптической системе, близко друг к другу, частично закрывать друг друга и т.п.);</span></div>
</li>
<li>
<div style="text-align: justify;">обеспечивать наилучшую скорость (повышение скорости производства).</div>
</li>
</ul>
<p style="text-align: justify;">Для задач, связанных с обнаружением и классификацией объектов на фотографии, видео или в режиме реального времени, вместо классических полносвязных НС (ПНС), принято использовать свёрточные НС (СНС) [2]. Это обуславливается тем, что ПНС, при решении подобных задач имеют следующие недостатки:</p>
<ul>
<li>
<div style="text-align: justify;"><span>являются вычислительно сложными;<br />
</span></div>
</li>
<li>
<div style="text-align: justify;"><span>неустойчивы к разному роду инвариантности изображений (сдвиги, разный масштаб, углы поворота);</span></div>
</li>
<li>
<div style="text-align: justify;">потери взаимосвязи частей изображения (топологии) при преобразовании от слоя к слою.</div>
</li>
</ul>
<p style="text-align: justify;">В СНС эти недостатки отсутствуют. Обобщенная архитектура СНС представлена на рисунке 2.</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2021/12/122321_1124_2.png" alt="" /></p>
<p style="text-align: center;">Рисунок 2. Архитектура свёрточной нейронной сети</p>
<p style="text-align: justify;">Все слои СНС представляют собой набор плоскостей. Нейроны одной плоскости имеют одинаковые весовые коэффициенты, ведущие ко всем локальным участкам предыдущего слоя. Каждый нейрон слоя получает входы от некоторой области предыдущего слоя, т.е. входное изображения предыдущего слоя получает входное изображение предыдущего слоя сканируется небольшим окном и пропускается сквозь набор весовых коэффициентов, а результат отображается на соответствующий нейрон текущего слоя. Таким образом, набор плоскостей представляется собой карты характеристик, и каждая плоскость находит конкретные участки изображения в любом месте предыдущего слоя [3].</p>
<p style="text-align: justify;">Ключевое отличие СНС сетей от ПНС состоит в наличии соединения каждого нейрона строго с определенным количеством нейронов из предыдущего слоя.</p>
<p style="text-align: justify;">Существующие архитектуры НС, использующие различные алгоритмы для обнаружения и классификации объектов, в основном разделяются на два вида: одноуровневые («YOLO») и двухуровневые («RCNN», «fast RCNN» и «faster RCNN»). Модель НС faster RCNN, базирующаяся на алгоритме region-proposal-function, самое быстрое решение из перечисленных двухуровневых НС. Данный алгоритм состоит из следующих этапов:</p>
<ol>
<li>
<div style="text-align: justify;"><span>Исходное изображение подается на вход СНС, для формирования карты признаков на его основе;<br />
</span></div>
</li>
<li>
<div style="text-align: justify;"><span>Выполняется генерация областей интереса, в которых может находится объект;<br />
</span></div>
</li>
<li>
<div style="text-align: justify;"><span>Выполняется преобразование вектора признаков области интереса (произвольного прямоугольника) из исходного изображения в вектор признаков фиксированной размерности, с помощью слоя RoI pooling;<br />
</span></div>
</li>
<li>
<div style="text-align: justify;"><span>С помощью регрессионной модели (Bounding Box Regression), уточняются границы области интереса;</span></div>
</li>
<li>
<div style="text-align: justify;">Классификация объектов на исходном изображении.</div>
</li>
</ol>
<p style="text-align: justify;">Данное решение имеет два недостатка:</p>
<ul>
<li>
<div style="text-align: justify;"><span>модель основывается на рассмотрении отдельных регионов, а не всего изображения в целом;</span></div>
</li>
<li>
<div style="text-align: justify;">является относительно медленным.</div>
</li>
</ul>
<p style="text-align: justify;">Архитектура YOLO не имеет таких недостатков. Данная архитектура относится к one stage detector – детектирующим сетям, главная идея которых заключается в том, что задачи поиска регионов, предположительно содержащих объекты, и задача классификации этих объектов, выполняются одновременно и сводятся в одну, рассматриваемую, как задача регрессии [4, 5].</p>
<p style="text-align: justify;">В общем виде, модель архитектуры подразделяется на две части (рисунок 3) [6]:</p>
<ul>
<li>
<div style="text-align: justify;"><span>базовая СНС с классической архитектурой, применяющаяся для классификации входного изображения;</span></div>
</li>
<li>
<div style="text-align: justify;">два полносвязных (fully connected) слоя, в которых формируются предсказания ограничивающих рамок (bounding boxes), потенциально содержащих объекты и вероятности, что эти объекты принадлежат определенным классам.</div>
</li>
</ul>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2021/12/122321_1124_3.png" alt="" /></p>
<p style="text-align: center;">Рисунок 3. Общая модель архитектуры YOLO</p>
<p style="text-align: justify;">Основной алгоритм работы YOLO представлен в следующих этапах:</p>
<p style="text-align: justify;">Изображение на входе попадает на базовую СНС [7], которая классифицирует входные изображения. На полученное изображение накладывается сетка размером S × S. Ячейка, в которую попадает центр объекта будет указывать на предварительное обнаружение этого объекта. Каждая ячейка предсказывает показатель достоверности, местоположение ограничивающих рамок и вероятность класса объекта, при условии попадания объекта в ограничивающую рамку, обычно это квадрат или прямоугольник (рисунок 4).</p>
<p style="text-align: justify;">Величина достоверности показывает вероятность того, что ячейка содержит объект. Эта величина умножается на его IoU. IoU – это степень пересечения областей на изображении. Эта величина используется для определения процента перекрытия истинной области объекта, предсказанной областью.</p>
<p style="text-align: justify;">Местоположение ограничивающей рамки представляется координатами, которые определяются четырьмя значениями (x, y – координаты центра, ширина – w, h &#8211; высота), где x и y задаются со смещением местоположение ячейки. Все четыре значения нормализуются по высоте и ширине оригинального изображения и лежат в интервале от 0 до 1.</p>
<p style="text-align: justify;">Ячейка, содержащая объект, предсказывает вероятность того, что этот объект принадлежит каждому классу, <em>c<sub>i</sub></em>,<em>i</em>=1,<em>k</em>. На данном шаге модель предсказывает только один набор вероятностей классов на ячейку, независимо от количества ограничивающих рамок.</p>
<p style="text-align: justify;">На каждом изображении содержатся ограничивающие рамки S×S×B, каждая из которых соответствует четырём координатам местоположения, одному значению достоверности и K условных вероятностей для классификации объектов. Суммарные значения прогнозирования для одного изображения составляют S×S×(5B+K), так называемая тензорная форма конечного сверточного слоя.</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2021/12/122321_1124_5.png" alt="" /></p>
<p style="text-align: center;">Рисунок 5 – Принцип работы YOLO</p>
<p style="text-align: justify;">Последний этап заключается в фильтровании ограничительных рамок с помощью техники NMS (non-max suppression или подавление не максимумов). После этого этапа, на исходном изображении будут отображаться ограничительные рамки вокруг каждого обнаруженного объекта (по одной на каждый).</p>
<p style="text-align: justify;">YOLOv3 последняя версия архитектуры YOLO [8]. Модель этой версии содержит 106 сверточных слоев. Её отличительной особенностью является то, что детектирование объектов производится в трех масштабах, то есть на входное изображение может накладываться сетка из 64, 256 или 1024 клеток. Последнее позволяет архитектуре детектировать достаточно маленькие объекты.</p>
<p style="text-align: justify;">В YOLOv3 детектирование объектов производится при помощи применения ядер обнаружения, размером 1×1 на картах признаков в трех разных точках архитектуры (рисунок 6). Размер ядра обнаружения составляет 1×1×(B×(5+C)). Здесь B – количество якорей, которые может предсказать ячейка на карте признаков, 5 – для четырёх координат ограничивающей рамки и значения достоверности, C – количество классов. Так на обученном наборе данных COCO, B = 3 и C = 80, поэтому размер ядра равен 1×1×255.</p>
<p style="text-align: justify;">На первых 81 сверточном слое, входное изображение сжимается, таким образом, что на 81 слое шаг сжатия будет равен 32. Например, если взять изображение с разрешением 416 х 416, то результирующая карта признаков будет иметь размер 13 х 13. Первое детектирование производится на 82 слое, что даст карту признаков размером 13 х 13 х 255.</p>
<p style="text-align: justify;">Затем карта признаков из слоя 79 проходит через несколько сверточных слоев, далее она будет увеличена в 2 раза, до размеров 26 х 26. Дальше, полученная карта будет объединена по глубине с картой признаков из слоя 61 и комбинированные карты признаков снова проходят через несколько сверточных слоев размером 1×1, чтобы объединить признаки раннего 61 слоя. Следующее детектирование производится на 94 слое. В результате, получается карта признаков размеров 26 х 26 х255.</p>
<p style="text-align: justify;">Аналогичная процедура повторяется снова, когда карта признаков из слоя 91 проходит далее по сверточным слоям, и объединяется с картой признаков из слоя 36. Как и раньше, несколько сверточных слоев размером 1×1 следуют друг за другом, чтобы слить информацию с предыдущего 36 слоя. Финальное детектирование происходит на 106-м слое с конечной картой признаков 52 х 52 х255.</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2021/12/122321_1124_6.png" alt="" /></p>
<p style="text-align: justify;">Также в YOLOv3 были внесены следующие изменения:</p>
<ul>
<li>
<div style="text-align: justify;"><span>предсказание оценки достоверности для каждой ограничивающей рамки происходит при помощи логистической регрессии в то время, как YOLO и YOLOv2 используют сумму квадратов ошибок. Линейная регрессия прогноза смещения приводит к уменьшению mAP.</span></div>
</li>
<li>
<div style="text-align: justify;">Для прогнозирования вероятности класса, вместо одного слоя softmax, используется несколько, независимых друг от друга классификаторов для каждого класса.</div>
</li>
</ul>
<p style="text-align: justify;">Также, ещё одной особенностью YOLOv3 является её урезанная версия – архитектура Yolov3-tiny. Данная версия отличается меньшим количеством слоев и делает предсказания только в двух размерах 13×13 и 26×26. Yolov3-tiny обладает меньшей точностью и хуже подходит для детектирования маленьких объектов, однако имеет большую производительность и способна выдавать большие значения обработки кадров в секунду. Урезанная версия отлично подходит для использования на «слабых» компьютерах и мобильных устройствах.</p>
<p style="text-align: justify;">В заключении, можно сделать вывод о том, что архитектура СНС YOLOv3 отлично подходит для решения поставленной в начале статьи задачи. Данная модель может легко обеспечить устойчивую работу СТЗ в реальном времени с достаточно хорошей скоростью. На официальном сайте приведены результаты исследований скорости детектирования при различном размере НС и наборах данных – в среднем, скорость обработки 50-60 кадров в секунду. Также в сети можно найти множество примеров обучения данной архитектуры, для применения её в специализированных задачах.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2021/12/97280/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Технологии искусственного интеллекта для распознавания изображений согласных букв</title>
		<link>https://web.snauka.ru/issues/2024/06/102167</link>
		<comments>https://web.snauka.ru/issues/2024/06/102167#comments</comments>
		<pubDate>Tue, 11 Jun 2024 15:21:19 +0000</pubDate>
		<dc:creator>author20348</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[CNN]]></category>
		<category><![CDATA[Google Colab]]></category>
		<category><![CDATA[TensorFlow]]></category>
		<category><![CDATA[искусственный интеллект]]></category>
		<category><![CDATA[машинное обучение]]></category>
		<category><![CDATA[нейронные сети]]></category>
		<category><![CDATA[распознавание букв]]></category>
		<category><![CDATA[сверточные нейронные сети]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2024/06/102167</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович Уфимский университет науки и технологий, Нефтекамский филиал, к.ф.-м.н. Современные технологии искусственного интеллекта (ИИ) и машинного обучения (МО) приобретают все большую популярность и находят применение в различных сферах деятельности. Одним из наиболее перспективных направлений является использование нейронных сетей для решения задач распознавания и классификации. В данной статье рассматриваются возможности и методы применения нейронных [...]]]></description>
			<content:encoded><![CDATA[<p style="background: white; text-align: center;"><em>Научный руководитель: Вильданов Алмаз Нафкатович<br />
</em><em><em>Уфимский университет науки и технологий, Нефтекамский филиал, </em>к.ф.-м.н.</em></p>
<p style="text-align: justify;"><span>Современные технологии искусственного интеллекта (ИИ) и машинного обучения (МО) приобретают все большую популярность и находят применение в различных сферах деятельности. Одним из наиболее перспективных направлений является использование нейронных сетей для решения задач распознавания и классификации. В данной статье рассматриваются возможности и методы применения нейронных сетей для распознавания согласных букв.<br />
</span></p>
<p style="text-align: justify;"><span>История машинного обучения начинается с середины XX века. В 1952 году Артур Самуэль разработал первую самообучающуюся программу для игры в шашки, что стало отправной точкой в развитии МО. Позже, в 1959 году, он начал работу над методами МО для нейронных сетей. С тех пор технологии существенно эволюционировали и получили широкое распространение.<br />
</span></p>
<p style="text-align: justify;"><span>Нейронные сети являются ключевым элементом систем машинного обучения. Они состоят из множества взаимосвязанных нейронов, организованных в слои. Каждый нейрон получает входные данные, обрабатывает их с помощью весовых коэффициентов и передает результат на выход.<br />
</span></p>
<p style="text-align: justify;"><span>Для разработки и обучения нейронных сетей широко используется библиотека TensorFlow, предоставляемая Google. Она обеспечивает высокую производительность и гибкость при создании сложных моделей МО. TensorFlow поддерживает работу как на CPU, так и на GPU, что позволяет значительно ускорить процесс обучения нейронных сетей.<br />
</span></p>
<p style="text-align: justify;"><span>Google Colab предоставляет удобную среду для разработки и обучения моделей машинного обучения. Это облачный сервис, который позволяет использовать мощные вычислительные ресурсы Google без необходимости установки дополнительного программного обеспечения. Colab поддерживает работу с Jupyter Notebook и позволяет совместно работать над проектами в реальном времени​.<br />
</span></p>
<p style="text-align: justify;"><span>Первым шагом в создании системы распознавания является сбор и подготовка данных. Для обучения нейронной сети необходим большой объем данных, содержащий изображения согласных букв. Эти данные проходят этапы предобработки, включая нормализацию и аугментацию, что улучшает качество модели и её способность к обобщению.<br />
</span></p>
<p style="text-align: justify;"><span><span>Формат данных выборки для обучения </span><span>train.csv</span><span> выглядит следующим образом: каждая строка представляет собой описание одного изображения; первый столбец содержит метки классов, к которым принадлежит изображение; оставшиеся столбцы содержат пиксельные значения изображения, например, в виде плоского вектора, где каждое значение соответствует яркости соответствующего пикселя на изображении [1].<br />
</span></span></p>
<p style="text-align: justify;"><span>У нас будут следующие классы согласных букв:<br />
</span></p>
<p style="text-align: justify;"><span>classes = ["к","л","м","н","п","р","с","т"]<br />
</span></p>
<p style="text-align: justify;"><span>Загрузим и посмотрим на датасет (рисунок 1):<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2024/06/061124_1517_1.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 1. Датасет согласных букв<br />
</span></p>
<p style="text-align: justify;"><span>После подготовки данных, создаются и обучаются модели нейронных сетей. Используются различные архитектуры, такие как сверточные нейронные сети (CNN), которые особенно эффективны в задачах распознавания образов. Обучение модели проводится на обучающем наборе данных с последующей проверкой на валидационном наборе для оценки её производительности.<br />
</span></p>
<p style="text-align: justify;"><span>Работа нейронной сети рассматривается в трех моделях.<br />
</span></p>
<p style="text-align: justify;"><span>1.    Двухслойная нейронная сеть.<br />
</span></p>
<p style="text-align: justify;"><span><span>На первом шаге рассматривается сеть из двух нейронных слоев [2]. Для создания модели используется класс </span><span>Sequential</span><span>. На входном слое находятся 700 нейронов. Функция активации (запуска) </span><span>relu</span><span>, размер входных данных равен 400 (у нас картинки 20 на 20). На последнем слое должно быть 8 нейронов, так как это количество должно совпадать с количеством классификаций изображений [3] (у нас согласные буквы &#8220;к&#8221;,&#8221;л&#8221;,&#8221;м&#8221;,&#8221;н&#8221;,&#8221;п&#8221;,&#8221;р&#8221;,&#8221;с&#8221;,&#8221;т&#8221;). Модель нейронной сети строится с помощью класса </span><span>Sequential</span><span> [4].<br />
</span></span></p>
<p style="text-align: justify;"><span>N = 8<br />
</span></p>
<p style="text-align: justify;"><span>model = Sequential()<br />
</span></p>
<p style="text-align: justify;"><span>model.add(Dense(700, input_dim=400, activation=&#8221;relu&#8221;))<br />
</span></p>
<p style="text-align: justify;"><span>model.add(Dense( N, activation=&#8221;softmax&#8221;))<br />
</span></p>
<p>Приступаем к обучению модели с помощью метода <span>fit </span>модели (рисунок 2).</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2024/06/061124_1517_2.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 2. Ход обучения нейронной сети<br />
</span></p>
<p style="text-align: justify;"><span>Можно посмотреть, как нейронная сеть делает предсказание на тестовых данных. Для этого применяется метод predict:<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2024/06/061124_1517_3.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 3. Валидация нейронной сети<br />
</span></p>
<p style="text-align: justify;"><span>2. Трехслойная нейронная сеть.<br />
</span></p>
<p style="text-align: justify;"><span><span>Усложним нейронную сеть, сделав 3 слоя. Рассматривается сеть из трех нейронных слоев:</span><span><br />
</span></span></p>
<p style="text-align: justify;"><span>model = Sequential()<br />
</span></p>
<p style="text-align: justify;"><span>model.add(Dense(700, input_dim=400, activation=&#8221;relu&#8221;))<br />
</span></p>
<p style="text-align: justify;"><span>model.add(Dense(100, activation=&#8221;relu&#8221;))<br />
</span></p>
<p style="text-align: justify;"><span>model.add(Dense( N, activation=&#8221;softmax&#8221;))<br />
</span></p>
<p style="text-align: justify;"><span>Остальные шаги проделываются аналогично.<br />
</span></p>
<p style="text-align: justify;"><span>3. Сверточная нейронная сеть.<br />
</span></p>
<p style="text-align: justify;"><span>Полносвязная нейронная сеть недостаточно качественно выполняет работу с изображениями. Прогресс обучения двуслойной нейронной сети и трехслойной нейронной сети растет достаточно медленно, за счет увеличения количества слоев. Более качественный результат можно получить, построив сверточную нейронную сеть:<br />
</span></p>
<p style="text-align: justify;"><span>model = Sequential()<br />
</span></p>
<p style="text-align: justify;"><span>model.add(Conv2D(32, (3, 3),<br />
</span></p>
<p style="text-align: justify; margin-left: 35pt;"><span>input_shape=(img_width, img_height, 1), activation=&#8217;relu&#8217;))<br />
</span></p>
<p style="text-align: justify;"><span>model.add(MaxPooling2D(pool_size=(2,2)))<br />
</span></p>
<p style="text-align: justify;"><span>model.add(Conv2D(64, (3, 3), activation=&#8217;relu&#8217;))<br />
</span></p>
<p style="text-align: justify;"><span>model.add(MaxPooling2D(pool_size=(2, 2)))<br />
</span></p>
<p style="text-align: justify;"><span>model.add(Flatten())<br />
</span></p>
<p style="text-align: justify;"><span>model.add( Dense( 700, activation = &#8216;relu&#8217;))<br />
</span></p>
<p style="text-align: justify;"><span>model.add( Dense( N, activation=&#8217;softmax&#8217;))<br />
</span></p>
<p style="text-align: justify;"><span>Обучение проводится аналогично. По итогам распознавания собственных изображений можно сделать следующий вывод (таблица 1):<br />
</span></p>
<p><span style="color: black;">Таблица 1 – Качество распознавания изображений нейронными сетями<br />
</span></p>
<div style="margin-left: 5pt;">
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 262px;" />
<col style="width: 329px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 1pt;">
<p style="text-align: center;"><span>Структура НС</span></p>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 1pt; border-left: none; border-bottom: solid 1pt; border-right: solid 1pt;" valign="middle">
<p style="text-align: center;"><span style="color: black;">Качество распознавания</span></p>
</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 1pt; border-bottom: solid 1pt; border-right: solid 1pt;">
<p style="text-align: justify;"><span style="times new roman; 10pt; background-color: white;">Полносвязная нейронная сеть из двух слоев </span></p>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 1pt; border-right: solid 1pt;" valign="middle">
<p style="text-align: center;"><span style="times new roman; 10pt; background-color: white;">97.75 %</span></p>
</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 1pt; border-bottom: solid 1pt; border-right: solid 1pt;">
<p style="text-align: justify;"><span style="times new roman; 10pt; background-color: white;">Полносвязная нейронная сеть из трех слоев </span></p>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 1pt; border-right: solid 1pt;" valign="middle">
<p style="text-align: center;"><span style="times new roman; 10pt; background-color: white;">98.25 %</span></p>
</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 1pt; border-bottom: solid 1pt; border-right: solid 1pt;">
<p style="text-align: justify;"><span style="times new roman; 10pt; background-color: white;">Сверточная нейронная сеть с двумя сверточными слоями</span></p>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 1pt; border-right: solid 1pt;" valign="middle">
<p style="text-align: center;"><span style="times new roman; 10pt; background-color: white;">99.65 %</span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p style="text-align: justify;"><span>Подготовим также в Paint собственные изображения и загрузим их на гугл-диск (рисунок 4).<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2024/06/061124_1517_4.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span style="color: black;">Рисунок 4. Собственные изображения для проверки<br />
</span></p>
<p style="text-align: center;"><span style="color: black;">работы нейронной сети<br />
</span></p>
<p style="text-align: justify;"><span>Обученная нейронная сеть используется для распознавания согласных букв на новых данных. Модель анализирует входное изображение и выдает прогнозируемую букву с определенной вероятностью. Точность распознавания оценивается на тестовом наборе данных, который не использовался в процессе обучения, что позволяет объективно оценить её эффективность.<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2024/06/061124_1517_5.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 5. Распознавание и предсказание нейронной сети<br />
</span></p>
<p style="text-align: justify;"><span>Сверточная нейронная сеть будет, как и ожидалось, давать наилучшее предсказание.<br />
</span></p>
<p style="text-align: justify;"><span>Заключение. Разработка и использование нейронных сетей для распознавания согласных букв демонстрирует высокую эффективность и перспективность данного подхода. Применение библиотек TensorFlow и сервисов, таких как Google Colab, значительно упрощает процесс создания и обучения моделей машинного обучения. Эти технологии открывают новые возможности для автоматизации процессов и повышения точности распознавания в различных приложениях.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2024/06/102167/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сверточные нейронные сети: как машина учится видеть</title>
		<link>https://web.snauka.ru/issues/2025/12/103934</link>
		<comments>https://web.snauka.ru/issues/2025/12/103934#comments</comments>
		<pubDate>Wed, 03 Dec 2025 15:24:57 +0000</pubDate>
		<dc:creator>Салихов Салават Зульфатович</dc:creator>
				<category><![CDATA[01.00.00 ФИЗИКО-МАТЕМАТИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[архитектура CNN]]></category>
		<category><![CDATA[глубокое обучение]]></category>
		<category><![CDATA[извлечение признаков]]></category>
		<category><![CDATA[классификация изображений]]></category>
		<category><![CDATA[компьютерное зрение]]></category>
		<category><![CDATA[полносвязные слои]]></category>
		<category><![CDATA[распознавание образов]]></category>
		<category><![CDATA[сверточные нейронные сети]]></category>
		<category><![CDATA[сверточные слои]]></category>
		<category><![CDATA[слой пулинга]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2025/12/103934</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал Современные технологии все чаще наделяют машины способностью видеть и понимать визуальную информацию. Компьютерное зрение стало неотъемлемой частью нашей повседневности — от распознавания лиц в смартфонах до медицинской диагностики и автономных транспортных средств. В основе этих достижений лежат сверточные нейронные сети, которые представляют собой специальный [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><em>Научный руководитель: Вильданов Алмаз Нафкатович<br />
<span style="background-color: white;">к.ф.-м.н., </span>Уфимский университет науки и технологий, Нефтекамский филиал</em></p>
<p><span style="color: black;">Современные технологии все чаще наделяют машины способностью видеть и понимать визуальную информацию. Компьютерное зрение стало неотъемлемой частью нашей повседневности — от распознавания лиц в смартфонах до медицинской диагностики и автономных транспортных средств. В основе этих достижений лежат сверточные нейронные сети, которые представляют собой специальный архитектурный тип нейронных сетей, особенно эффективный для работы с изображениями. Эти сети успешно справляются с задачами классификации, обнаружения объектов и сегментации изображений. Цель данной статьи — избегая сложного математического аппарата, наглядно разобрать архитектуру сверточной нейронной сети на конкретном примере кода, чтобы понять, как именно организованы и взаимодействуют ее основные компоненты.<br />
</span></p>
<p><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2025/12/120325_1518_1.png" alt="" /></p>
<p><span style="color: black;">Параметр input_shape играет ключевую роль в определении структуры входных данных для нейронной сети. В данном конкретном случае input_shape=(39, 30, 1) указывает на то, что нейросеть ожидает на вход изображения высотой 39 пикселей и шириной 30 пикселей. Третья цифра в кортеже обозначает количество цветовых каналов изображения. Значение 1 соответствует черно-белому изображению, где каждый пиксель описывается единственным числом, определяющим его яркость. В случае цветного изображения использовалось бы значение 3, что соответствует трем каналам: красному, зеленому и синему. Таким образом, вся входная информация представляется в виде трехмерного массива чисел размерностью 39 на 30 на 1, где первые два измерения отвечают за пространственные координаты пикселей, а третье &#8211; за их цветовые характеристики.<br />
</span></p>
<p><span style="color: black;">Сверточные слои служат основными детекторами признаков в нейронной сети. Их можно представить как набор специализированных фильтров, которые последовательно сканируют изображение в поиске характерных особенностей. Каждый фильтр работает как детектор определенных шаблонов — на первом уровне это могут быть простые элементы вроде горизонтальных или вертикальных линий, границ и углов. Размер ядра свертки, в данном случае составляющий 3 на 3 пикселя, определяет область изображения, которую фильтр анализирует в каждый момент времени. Такой размер является компромиссом между способностью улавливать значимые паттерны и вычислительной эффективностью. После операции свертки полученные значения пропускаются через функцию активации ReLU, которая обнуляет все отрицательные значения и сохраняет положительные. Эта нелинейная операция критически важна, поскольку позволяет сети обучаться сложным зависимостям, не ограничиваясь линейными преобразованиями. Без ReLU нейронная сеть не смогла бы эффективно описывать иерархические представления данных, независимо от количества слоев в ее архитектуре.<br />
Слои пулинга выполняют важнейшую функцию сжатия информации в сверточных нейронных сетях. Операция MaxPooling2D с размером окна 2 на 2 проходит по всем участкам входного изображения с заданным шагом, выбирая максимальное значение в каждой области 2&#215;2 пикселя. Этот процесс уменьшает пространственные размеры карты признаков в два раза по каждой оси, что существенно снижает вычислительную нагрузку на последующие слои сети. Но уменьшение размерности &#8211; не единственная цель пулинга. Выбирая максимальное значение в каждой области, операция максимума подчеркивает наиболее выраженные признаки и обеспечивает небольшую инвариантность к смещениям изображения. Если какой-то признак активировался сильно в пределах окна 2&#215;2, он сохраняется, а слабые активации отфильтровываются. Такой подход позволяет сети сосредоточиться на самых важных особенностях изображения, игнорируя незначительные вариации и шумы, что в конечном счете улучшает ее обобщающую способность и предотвращает переобучение. По сути, пулинг оставляет только самые сильные &#8220;сигналы&#8221; из извлеченных сверточными слоями признаков, создавая более абстрактное и емкое представление исходных данных.<br />
</span></p>
<p><span style="color: black;">Рассматриваемая нейронная сеть построена по последовательной архитектуре с использованием модели Sequential. Данный подход предполагает линейное расположение слоев, где выход каждого предыдущего слоя последовательно передается на вход следующего. Архитектура начинается с входного слоя, принимающего изображения заданного размера. Затем следует первый сверточный блок, состоящий из слоя свертки и слоя пулинга, который выполняет первичную обработку изображения и выделение простых признаков. Далее подключен второй сверточный блок аналогичной структуры, но с увеличенным количеством фильтров, что позволяет выявлять более сложные и абстрактные особенности обрабатываемых данных. После завершения сверточной части архитектуры выполняется преобразование multidimensionalных данных в одномерный вектор с помощью операции вытягивания. Затем подключаются полносвязные слои, которые осуществляют финальный этап обработки признаков и классификацию. Такая поэтапная организация преобразования информации от простых признаков к сложным абстракциям является характерной чертой глубинных нейронных сетей и позволяет эффективно решать задачи компьютерного зрения.<br />
</span></p>
<p><span style="color: black;">Первый сверточный блок выполняет фундаментальную задачу извлечения базовых признаков из исходного изображения. На этом начальном этапе обработки сеть учится выделять простейшие элементы визуальной информации: границы объектов, переходы яркости, углы и элементарные текстуры. Конфигурация слоя Conv2D с параметрами 32 фильтра размером 3&#215;3 означает, что сеть одновременно применяет тридцать два различных ядра свертки к входному изображению. Каждый из этих фильтров настраивается в процессе обучения для реагирования на определенный тип визуальных паттернов. Фильтры работают как детекторы особенностей, скользя по всему изображению и создавая тридцать две отдельные карты признаков. Эти карты активации представляют собой отклики сети на различные элементарные шаблоны в разных участках изображения. Такой подход позволяет сети сформировать многогранное представление входных данных, где каждый фильтр отвечает за обнаружение своего типа признаков, создавая тем самым богатое и разнообразное описание обрабатываемого изображения на самом низком уровне абстракции.<br />
</span></p>
<p><span style="color: black;">Второй сверточный блок выполняет принципиально иную задачу по сравнению с первым, работая с уже предобработанными данными. Если первый блок обнаруживал элементарные паттерны, то здесь происходит их комбинаторное объединение в более сложные и абстрактные структуры. На этом уровне формируются составные признаки: из простых линий и градиентов собираются углы, пересечения, простые геометрические формы и текстуры. Параметры слоя Conv2D с 39 фильтрами размером 3&#215;3 демонстрируют усложнение архитектуры: увеличение количества фильтров до 39 означает, что сеть теперь способна детектировать больше разнообразных комбинаций признаков, извлеченных на предыдущем этапе. Каждый из этих 39 фильтров работает уже не с исходным изображением, а с картами признаков, полученными после первого блока, что позволяет анализировать более сложные пространственные взаимосвязи. Такой каскадный принцип обработки, когда каждый последующий слой оперирует выходами предыдущего, создает иерархическое представление информации, где сложность обнаруживаемых паттернов постепенно нарастает от слоя к слою, имитируя принципы работы зрительной системы живых организмов.<br />
</span></p>
<p><span style="color: black;">Слой Flatten выполняет критически важную функцию преобразования данных в архитектуре нейронной сети. После завершения работы сверточных и пулинг-слоев информация сохраняется в виде многомерных карт признаков, которые представляют собой набор двумерных матриц. Однако последующие полносвязные слои требуют подачи данных в формате одномерного вектора. Именно здесь вступает в операция вытягивания, которая последовательно преобразует все элементы многомерных массивов в длинный одномерный вектор. Этот процесс можно представить как разворачивание всех карт признаков в единую строку, где сохраняется вся извлеченная ранее информация, но меняется ее структурная организация. Такой подход позволяет совместить преимущества сверточных слоев, эффективно работающих с пространственными данными, и полносвязных слоев, способных к сложным нелинейным преобразованиям и классификации. Важно отметить, что операция вытягивания не приводит к потере информации, а лишь изменяет форму ее представления, подготавливая данные для финальных этапов обработки в плотных слоях нейронной сети.<br />
</span></p>
<p><span style="color: black;">Финальные слои нейронной сети выполняют ключевую задачу интерпретации извлеченных признаков и формирования итогового решения. Предпоследний полносвязный слой с 171 нейроном служит своеобразным аналитическим центром, где происходит комплексная обработка всех признаков, полученных после сверточных операций и преобразования в вектор. Количество нейронов в этом слое определяется архитектурными соображениями и представляет собой баланс между вычислительной эффективностью и способностью модели к обучению сложным зависимостям. Этот слой осуществляет нелинейные преобразования данных, выявляя сложные комбинации признаков, необходимые для точной классификации. Выходной слой с 9 нейронами и функцией активации softmax выполняет роль финального классификатора. Количество нейронов соответствует числу распознаваемых категорий, где каждый нейрон вычисляет вероятность принадлежности входного изображения к одному из девяти классов. Функция softmax обеспечивает нормализацию выходных значений, преобразуя произвольные числа в вероятностное распределение, где сумма выходов всех нейронов равна единице, что позволяет интерпретировать результат как уверенность сети в каждой из возможных категорий.<br />
</span></p>
<p><span style="color: black;">Процесс преобразования данных в сверточной нейронной сети представляет собой последовательную цепочку вычислений. Исходное черно-белое изображение размером 30 на 39 пикселей поступает на вход сети в виде числовой матрицы. Первый сверточный слой с 32 фильтрами анализирует фрагменты изображения размером 3&#215;3 пикселя, выделяя базовые признаки и создавая 32 карты активации. Слой максимального пулинга уменьшает размерность этих карт в два раза, оставляя только наиболее значимые активации. Затем второй сверточный слой с 39 фильтрами применяется к уже обработанным данным, выявляя более сложные комбинации признаков. После повторного пулинга полученные многомерные данные преобразуются в одномерный вектор путем вытягивания, что позволяет подключить полносвязные слои. Слой с 171 нейроном анализирует извлеченные признаки и формирует промежуточное представление, на основе которого выходной слой с 9 нейронами вычисляет вероятности принадлежности к каждому из классов с помощью функции softmax. Таким образом, архитектура модели включает два сверточных слоя с 32 и 39 фильтрами соответственно и два полносвязных слоя с 171 и 9 нейронами, что образует законченную систему для классификации изображений.<br />
</span></p>
<p><span style="color: black;">Рассмотренная архитектура наглядно демонстрирует, как последовательность относительно простых слоев позволяет компьютеру эффективно анализировать визуальную информацию. Путем поэтапного преобразования от пикселей к простым признакам, а затем к сложным абстракциям, сверточная нейронная сеть формирует иерархическое представление данных, необходимое для осмысленного понимания изображений. Важно подчеркнуть, что разобранная модель представляет собой лишь базовый пример — современные архитектуры, такие как ResNet, VGG или Inception, обладают значительно большей глубиной и сложностью, используя механизмы skip-connections, батч-нормализацию и другие усовершенствования. Сфера применения сверточных сетей давно вышла за рамки статичной классификации изображений, охватывая обработку видео, системы компьютерного зрения для беспилотных автомобилей, медицинскую диагностику, генерацию и стилизацию изображений, а также анализ спутниковых снимков. Принципы иерархического представления признаков, реализованные в CNN, продолжают оставаться фундаментальной основой для большинства современных систем компьютерного зрения, постоянно находя новые применения в различных областях искусственного интеллекта.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2025/12/103934/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Распознавание рукописных цифр с помощью сверточных нейронных сетей на Python</title>
		<link>https://web.snauka.ru/issues/2025/12/104001</link>
		<comments>https://web.snauka.ru/issues/2025/12/104001#comments</comments>
		<pubDate>Fri, 05 Dec 2025 14:40:16 +0000</pubDate>
		<dc:creator>Мухаяров Дильназ Данисович</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[MNIST]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[TensorFlow]]></category>
		<category><![CDATA[автоматизация]]></category>
		<category><![CDATA[машинное обучение]]></category>
		<category><![CDATA[распознавание рукописных цифр]]></category>
		<category><![CDATA[сверточные нейронные сети]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2025/12/104001</guid>
		<description><![CDATA[Введение Автоматическое распознавание рукописных цифр — одна из классических задач машинного обучения, которая широко применяется в системах обработки документов и автоматической сортировке почты. Для её решения используют современные методы глубокого обучения, например, сверточные нейронные сети. Рисунок 1. Архитектура сверточной нейронной сети Алгоритм решения задачи - импортируем библиотеки `tensorflow.keras`, `pandas`, `numpy`, `matplotlib` и инструменты для аугментации; [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><strong>Введение</strong></p>
<p style="text-align: justify;"><span>Автоматическое распознавание рукописных цифр — одна из классических задач машинного обучения, которая широко применяется в системах обработки документов и автоматической сортировке почты. Для её решения используют современные методы глубокого обучения, например, сверточные нейронные сети.<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2025/12/121725_1359_1.png" alt="" /></p>
<p style="text-align: center;"><span>Рисунок 1. Архитектура сверточной нейронной сети<strong><span><br />
</span></strong></span></p>
<p style="text-align: justify;"><span>Алгоритм решения задачи<br />
</span></p>
<p style="text-align: justify;"><span>- импортируем библиотеки `tensorflow.keras`, `pandas`, `numpy`, `matplotlib` и инструменты для аугментации;<br />
</span></p>
<p style="text-align: justify;"><span>- загружаем и проверяем структуру данных через `pd.read_csv()`;<br />
</span></p>
<p style="text-align: justify;"><span>- извлекаем метки и изображения, нормализуем их и преобразуем форму для подачи в модель;<br />
</span></p>
<p style="text-align: justify;"><span>- создаем сверточную модель с помощью `Sequential()`, добавляя слои Conv2D, MaxPooling2D, Dropout;<br />
</span></p>
<p style="text-align: justify;"><span>- компилируем модель, указывая функцию потерь и оптимизатор;<br />
</span></p>
<p style="text-align: justify;"><span>- задаем коллбеки для ранней остановки и снижения скорости обучения;<br />
</span></p>
<p style="text-align: justify;"><span>- делим данные на обучающую и валидационную выборки;<br />
</span></p>
<p style="text-align: justify;"><span>- применяем аугментацию данных через `ImageDataGenerator`;<br />
</span></p>
<p style="text-align: justify;"><span>- обучаем модель с помощью метода `fit()`, использующего генератор и коллбеки;<br />
</span></p>
<p style="text-align: justify;"><span>- визуализируем процесс обучения, строя графики точности и потерь;<br />
</span></p>
<p style="text-align: justify;"><span>- делаем предсказания на тестовом наборе и сохраняем их в CSV файл.<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2025/12/121725_1359_2.png" alt="" /></p>
<p style="text-align: center;"><span>Рисунок 2. Схема процесса обучения<strong><span><br />
</span></strong></span></p>
<p><span>Код:<br />
</span></p>
<p><span>python<br />
</span></p>
<p><span># Создаем модель<br />
</span></p>
<p><span>model = Sequential()<br />
</span></p>
<p><span>model.add(Conv2D(32, (3,3), activation=&#8217;relu&#8217;, padding=&#8217;same&#8217;, input_shape=(28,28,1)))<br />
</span></p>
<p><span>model.add(BatchNormalization())<br />
</span></p>
<p><span>model.add(MaxPooling2D(pool_size=(2,2)))<br />
</span></p>
<p><span>model.add(Dropout(0.25))<br />
</span></p>
<p><span># (добавляем дополнительные слои)<br />
</span></p>
<p><span>model.add(Dense(10, activation=&#8217;softmax&#8217;))<br />
</span></p>
<p><span># Компиляция модели<br />
</span></p>
<p><span>model.compile(loss=&#8217;categorical_crossentropy&#8217;, optimizer=&#8217;adam&#8217;, metrics=['accuracy'])<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span># Обучение модели с аугментацией<br />
</span></p>
<p><span>history = model.fit(<br />
</span></p>
<p style="padding-left: 30px;"><span> datagen.flow(x_train_part, y_train_part, batch_size=128),<br />
</span></p>
<p style="padding-left: 30px;"><span> epochs=100,<br />
</span></p>
<p style="padding-left: 30px;"><span> validation_data=(x_val, y_val),<br />
</span></p>
<p style="padding-left: 30px;"><span> callbacks=[early_stop, reduce_lr, lr_scheduler],<br />
</span></p>
<p style="padding-left: 30px;"><span> verbose=1<br />
</span></p>
<p><span>)<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span>python<br />
</span></p>
<p><span># Визуализация результатов<br />
</span></p>
<p><span>plt.plot(history.history['accuracy'], label=&#8217;Train Accuracy&#8217;)<br />
</span></p>
<p><span>plt.plot(history.history['val_accuracy'], label=&#8217;Validation Accuracy&#8217;)<br />
</span></p>
<p><span>plt.legend()<br />
</span></p>
<p><span>…<br />
</span></p>
<p style="text-align: justify;"><span><strong>Вывод:<br />
</strong></span></p>
<p style="text-align: justify;"><span>В статье рассмотрена реализация сверточной нейронной сети для распознавания рукописных цифр. Использование методов аугментации и коллбеков позволяет повысить точность модели и избежать переобучения. Визуализация процесса обучения помогает контролировать качество модели. Правильная подготовка данных и архитектуры — залог успешного решения задачи. Такой подход широко применяется в системах автоматической обработки изображений.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2025/12/104001/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
