<?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; Google Colab</title>
	<atom:link href="http://web.snauka.ru/issues/tag/google-colab/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>Анализ возможностей Google Colab</title>
		<link>https://web.snauka.ru/issues/2020/12/93911</link>
		<comments>https://web.snauka.ru/issues/2020/12/93911#comments</comments>
		<pubDate>Tue, 01 Dec 2020 04:00:21 +0000</pubDate>
		<dc:creator>Волокитина Татьяна Сергеевна</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[FastAI]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Google Colab]]></category>
		<category><![CDATA[машинное обучение]]></category>
		<category><![CDATA[нейросеть]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2020/12/93911</guid>
		<description><![CDATA[В современном мире, нейросети применяют повсеместно для нахождения логики и предсказывания, в результате анализа данных, поступивших в сеть. Система нейронов представляет собой самообучающуюся систему, действующей в аналогии с деятельностью человеческого мозга. Единицей нейросети является нейрон, прототипом которого послужила одноименная единица головного мозга. На рисунке 1 показана схема нейрона. Рисунок 1 – Схема единицы нейросети Можно [...]]]></description>
			<content:encoded><![CDATA[<p>В современном мире, нейросети применяют повсеместно для нахождения логики и предсказывания, в результате анализа данных, поступивших в сеть. Система нейронов представляет собой самообучающуюся систему, действующей в аналогии с деятельностью человеческого мозга. Единицей нейросети является нейрон, прототипом которого послужила одноименная единица головного мозга. На рисунке 1 показана схема нейрона.</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2020/11/113020_0412_1.png" alt="" /></p>
<p style="text-align: center;">Рисунок 1 – Схема единицы нейросети</p>
<p>Можно заметить, что составляющими единицы нейросети, являются синапсы, обеспечивающие связь входные данные и ядро; в то время как ядра нейрона, которое служит для непосредственного анализа входных сигналов; а также аксона, обеспечивающего связь между ядром и следующим слоем нейросети или выходом.</p>
<p>В данной работе был рассмотрен пример использования Google Сolab для машинного обучения. Для его реализации будем использовать GitHub файл с нейросетью. По аналогии с FastAI создадим нейронную сеть, которая будет классифицировать изображения из нашего собcтвенного датасета.</p>
<p>Сначала необходимо подготовить изображения для классификации, будем классифицировать черных медведей и гризли. Из всех взятых изображений с Google Картинки, необходимо удалить все поврежденные или с плохим качеством изображения. Сделать это можно с помощью цикла:</p>
<p style="background: #fffffe;"><span style="color: #af00db;">for</span> c <span style="color: blue;">in</span> classes:</p>
<p style="background: #fffffe;">    <span style="color: #795e26;">print</span>(c)</p>
<p style="background: #fffffe;">    verify_images(path/c, delete=<span style="color: blue;">True</span>, max_size=<span style="color: #09885a;">500</span>)</p>
<p>Составим датасет, а именно набор данных с которым мы будем работать.</p>
<p>Датасет представляет собой набор изображений для классификации черных медведей (black) и гризли(grizzly), которые будут входными сигналами (рисунок 2).</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2020/11/113020_0412_2.png" alt="" /></p>
<p style="text-align: center;">Рисунок 2 – Датасет классификации</p>
<p>После удачного создания датасета, необходимо начать тренировку нейронной сети. Для этого будем использовать следующую функцию:</p>
<p style="background: #fffffe;">learn = create_cnn(data, models.resnet34, metrics=error_rate)</p>
<p>Получим таблицу с данными по тренировке нейросети (рисунок 3):</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2020/11/113020_0412_3.png" alt="" /></p>
<p style="text-align: center;">Рисунок 3 – Тренировка</p>
<p>После удачной тренировки посмотрим интерпретацию полученных результатов (рисунок 4).</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2020/11/113020_0412_4.png" alt="" /></p>
<p style="text-align: center;">Рисунок 4 – Интерпретация классификации</p>
<p>Как видно на рисунке,было правильно распознано 41 изображение черных медведей и 31 картинка с гризли, а так же выявлено несколько ошибок, которые мы рассмотрим внимательнее (рисунок 5).</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2020/11/113020_0412_5.png" alt="" /></p>
<p style="text-align: center;">Рисунок 5 – Ошибочные изображения</p>
<p>Из графика видно, что фотографии не могут быть интерпретированы точно, что влияет на получение результата.</p>
<p>Проведем тестирование обученной нейросети. Возьмем изображение гризли и проверим точность классификации (рисунок 6):</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2020/11/113020_0412_6.jpg" alt="" /></p>
<p style="text-align: center;">Рисунок 6 – Изображение для теста</p>
<p>Получаем вывод от нейросети:</p>
<p><span style="color: #212121; background-color: white;">Category grizzly</span>, а значит классификация произошла верно.</p>
<p>В результате выполненной работы были описаны возможности Google Colab для изучения технологий машинного обучения и нейронных сетей и приведен пример классификации изображений, взятых из Google Картинки.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2020/12/93911/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Анализ возможностей Google Colab</title>
		<link>https://web.snauka.ru/issues/2021/02/94760</link>
		<comments>https://web.snauka.ru/issues/2021/02/94760#comments</comments>
		<pubDate>Sun, 28 Feb 2021 10:20:22 +0000</pubDate>
		<dc:creator>Волокитина Татьяна Сергеевна</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[FastAI]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Google Colab]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[neural network]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2021/02/94760</guid>
		<description><![CDATA[Извините, данная статья доступна только на языке: English.]]></description>
			<content:encoded><![CDATA[<p>Извините, данная статья доступна только на языке: <a href="https://web.snauka.ru/en/issues/tag/google-colab/feed">English</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2021/02/94760/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сравнительный анализ моделей нейронных сетей в задаче распознавания математических действий</title>
		<link>https://web.snauka.ru/issues/2024/06/102172</link>
		<comments>https://web.snauka.ru/issues/2024/06/102172#comments</comments>
		<pubDate>Tue, 11 Jun 2024 15:16:53 +0000</pubDate>
		<dc:creator>Жеребцова Ксения Владимировна</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[Google Colab]]></category>
		<category><![CDATA[TensorFlow]]></category>
		<category><![CDATA[архитектура нейронных сетей]]></category>
		<category><![CDATA[параметры обучения]]></category>
		<category><![CDATA[эффективность]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2024/06/102172</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович Уфимский университет науки и технологий, Нефтекамский филиал, к.ф.-м.н. TensorFlow &#8211; это библиотека программного обеспечения с открытым исходным кодом, созданная Google, которая используется для внедрения систем машинного обучения и глубокого обучения. Эти два имени содержат ряд мощных алгоритмов, которые разделяют общую задачу &#8211; позволить компьютеру узнать, как автоматически определять сложные шаблоны и / [...]]]></description>
			<content:encoded><![CDATA[<p style="background: white; text-align: center;"><em>Научный руководитель: Вильданов Алмаз Нафкатович<br />
Уфимский университет науки и технологий, Нефтекамский филиал, к.ф.-м.н.</em></p>
<p style="text-align: justify;"><span>TensorFlow &#8211; это библиотека программного обеспечения с открытым исходным кодом, созданная Google, которая используется для внедрения систем машинного обучения и глубокого обучения. Эти два имени содержат ряд мощных алгоритмов, которые разделяют общую задачу &#8211; позволить компьютеру узнать, как автоматически определять сложные шаблоны и / или принимать наилучшие возможные решения. TensorFlow, в основе своей, является библиотекой для программирования потока данных. Он использует различные методы оптимизации, чтобы сделать вычисления математических выражений проще и эффективнее.<br />
</span></p>
<p style="text-align: justify;"><span>В TensorFlow константы создаются с использованием функции: constant(value, dtype=None, shape=None, name=&#8217;Const&#8217;, verify_shape=False), где value постоянное значение, которое будет использоваться при дальнейших вычислениях, dtype является параметром, указывающим тип данных (например, float32/64, int8/16), shape является необязательным параметром, указывающим размер массива данных, name является необязательным задающим имя для тензора. Если вам нужны константы с определенными значениями внутри вашей обучающей модели, тогда объект типа constant может использоваться </span>как в следующем примере: z = tf.constant(5.2, name=&#8221;x&#8221;, dtype=tf.float32).</p>
<p style="text-align: justify;"><span>Для создания сверточной нейронной сети была выбрана платформа Google Colab. Она обладает рядом преимуществ, а именно универсальна, является бесплатной платформой, представляет мощные технологии обработки данных и машинного обучения.<br />
</span></p>
<p style="text-align: justify;"><span>Таким образом, разработана сверточная нейронная сеть для решения задачи классификации изображений и создано рабочее окружение для написания кода на языке программирования Python.<br />
</span></p>
<p style="text-align: justify;"><span>Решение задачи классификации изображений с помощью сверточных нейронных сетей осуществляет Google Colab — это бесплатный облачный сервис на основе Jupyter Notebook, он предоставляет всё необходимое для машинного обучения прямо в браузере, предоставляет бесплатный доступ.<br />
</span></p>
<p style="text-align: justify;"><span>Google Colab &#8211; блокнот для программирования на языке Python. В нем есть возможность для работы с серьезными технологиями при разработке реальных приложений data science и ML, предоставляет все необходимое для решения задач по анализу и обработке данных (с применимостью к Python).<br />
</span></p>
<p style="text-align: justify;"><span>Python – высокоуровневый язык программирования, который опирается на повышение производительности разработчика и читаемости кода. Это интерпретируемый язык программирования, то есть не требует компиляции в байт-код.<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>– равномерность представления классов.<br />
</span></p>
<p style="text-align: justify;"><span>Датасеты – это то, на чем основывается наука о данных, материал, на котором основаны все исследования. В основном рассматривают два типа данных: традиционные и большие (Big Data).<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>1. Простая запись &#8211; это самая простая форма, не имеющая явной связи между строками-наблюдениями или столбцами-признаками (каждая строка имеет одинаковый набор характеристик).<br />
</span></p>
<p style="text-align: justify;"><span>2. Графы (отношения между объектами фиксируются связями).<br />
</span></p>
<p style="text-align: justify;"><span>3. Упорядоченные записи (некоторые данные упорядочены во времени или пространстве).<br />
</span></p>
<p style="text-align: justify;"><span>Разработка моделей нейронной сети выполняется в облачном сервисе Google Colab. На первом этапе создается папка, в которой будет находится датасет и скрипт с нейронной сетью.<br />
</span></p>
<p style="text-align: justify;"><span>Работа над нейронной сетью начинается с добавления библиотек Tensorflow. Загружаем нужные библиотеки:<br />
</span></p>
<p style="text-align: justify;"><span>from tensorflow.keras.models import Sequential<br />
</span></p>
<p style="text-align: justify;"><span>from tensorflow.keras.layers import Dense, Flatten<br />
</span></p>
<p style="text-align: justify;"><span>import pandas as pd<br />
</span></p>
<p style="text-align: justify;"><span>import numpy as np<br />
</span></p>
<p style="text-align: justify;"><span>import matplotlib.pyplot as plt<br />
</span></p>
<p style="text-align: justify;"><span>Так как нейронная сеть создается на сервисе Google Colab, датасет находится на Google диске, необходимо подключить диск к сети.<br />
</span></p>
<p style="text-align: justify;"><span>from google.colab import drive<br />
</span></p>
<p style="text-align: justify;"><span>drive.mount(&#8216;/content/drive/&#8217;)<br />
</span></p>
<p style="text-align: justify;"><span>В случае успешного подключения к диску появляется всплывающее окно, говорящее об успешном подключении к нему.<br />
</span></p>
<p style="text-align: justify;"><span>Drive mounted at /content/drive/; to attempt to forcibly remount, call drive.mount(&#8220;/content/drive/&#8221;, force_remount=True).<br />
</span></p>
<p style="text-align: justify;"><span>Переменная PATH показывает путь сети к ранее созданному датасету.<br />
</span></p>
<p style="text-align: justify;"><span>PATH = &#8216;/content/drive/My Drive/II/nf/&#8217;<br />
</span></p>
<p style="text-align: justify;"><span>Далее создадим переменные, которые будут содержать названия наших классов<br />
</span></p>
<p style="text-align: justify;"><span><span>target_name = ["</span><span>✖</span><span>","</span><span>✚</span><span>","&lt;","&gt;","±","•","–","="]<br />
</span></span></p>
<p style="text-align: justify;"><span>DIR = &#8220;dataset_ _mathdeystvo &#8221;<br />
</span></p>
<p style="text-align: justify;"><span>PATH = &#8216;/content/drive/My Drive/&#8217;+ DIR + &#8216;/&#8217;<br />
</span></p>
<p style="text-align: justify;"><span>PATH – корневой каталог для всех имеющихся на диске датасетов.<br />
</span></p>
<p style="text-align: justify;"><span>Переменные train_dir, test_dir, pred_dir – это пути, которые указывают на каталоги с данными для: обучения, тестирования, предсказания.<br />
</span></p>
<p style="text-align: justify;"><span>Следующим шагом указываем размер изображения. Тензоры можно рассматривать как матрицы, с формами. В Keras сам входной слой – это не слой, а тензор. Это стартовый тензор, который отправляется на первый скрытый слой. Этот тензор должен иметь ту же форму, что и тренировочные данные. Размер изображений в датасете составляет 20*20. Более удобно вводить переменную input_shape, которая в себе содержит сразу размерность изображений и количество фильтров.<br />
</span></p>
<p style="text-align: justify;"><span>В данной сети фильтр 1, так как используемые изображения в черно-белом цвете. Указываем размер мини-выборки с помощью переменной batch_size, которая отображает количество изображений, которые изучает модель за один проход. Нейронная сеть работает с данными постепенно, обработка происходит последовательно (частями).<br />
</span></p>
<p style="text-align: justify;"><span># Размеры изображения<br />
</span></p>
<p style="text-align: justify;"><span>img_width, img_height = 20, 20<br />
</span></p>
<p style="text-align: justify;"><span>input_shape = (img_width, img_height, 1)<br />
</span></p>
<p style="text-align: justify;"><span># Размер мини-выборки<br />
</span></p>
<p style="text-align: justify;"><span>batch_size = 128<br />
</span></p>
<p style="text-align: justify;"><span># количество классификации<br />
</span></p>
<p style="text-align: justify;"><span>N = len(classes)<br />
</span></p>
<p style="text-align: justify;"><span>Загружаем данные для обучения с помощью метода pd.read_csv:<br />
</span></p>
<p style="text-align: justify;"><span>train = pd.read_csv(PATH + &#8216;train.csv&#8217;, sep=&#8221;,&#8221;) #, nrows=3975<br />
</span></p>
<p style="text-align: justify;"><span>Загружаем данные для тестирования:<br />
</span></p>
<p style="text-align: justify;"><span>val = pd.read_csv(PATH + &#8216;validate.csv&#8217;)<br />
</span></p>
<p style="text-align: justify;"><span>Исследуем данные. Просматриваем данные для обучения:<br />
</span></p>
<p style="text-align: justify;"><span>train[:5]<br />
</span></p>
<p style="text-align: justify;"><span>Выбираем 8 видов изображений (знак умножения, знак сложения, знак больше, знак меньше, знак плюс-минус, точка, знак минус, знак равно). Посмотрим на тренировочные данные:<br />
</span></p>
<p style="text-align: justify;"><span>plt.figure(figsize=(10,10))<br />
</span></p>
<p style="text-align: justify;"><span>start = 0<br />
</span></p>
<p style="text-align: justify;"><span>for i in range(start,start+50):<br />
</span></p>
<p style="text-align: justify;"><span> plt.subplot(5,10,i-start+1)<br />
</span></p>
<p style="text-align: justify;"><span> plt.xticks([])<br />
</span></p>
<p style="text-align: justify;"><span> plt.yticks([])<br />
</span></p>
<p style="text-align: justify;"><span> plt.grid(False)<br />
</span></p>
<p style="text-align: justify;"><span> plt.imshow(x_train[i].reshape((img_width, img_height)), cmap=plt.cm.binary)<br />
</span></p>
<p style="text-align: justify;"><span> plt.xlabel(classes[y_train[i]])<br />
</span></p>
<p style="text-align: justify;"><span>Был собран датасет в количестве нескольки тысяч изображений в черно-белом цвете (рисунок 6), так как для отработки нейронной сети необходимо большое количество изображений (при малых объемах датасета сеть свою работу не выполняет).<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2024/06/061124_1510_1.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span><em>Рисунок 1. Датасет<br />
</em></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>Рассматривается сеть из двух нейронных слоев. Для создания модели используется класс Sequential. На входном слое находятся 1000 нейронов. Функция активации (запуска) relu, размер входных данных = 1024. На последнем слое должно быть 4 нейрона, так как это количество должно совпадать с количеством классификаций изображений (треугольник, квадрат, окружность, ромб).<br />
</span></p>
<p style="text-align: justify;"><span>Активация последнего слоя выполняется с помощью функции softmax.<br />
</span></p>
<p style="text-align: justify;"><img src="https://web.snauka.ru/wp-content/uploads/2024/06/061124_1510_2.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span><em>Рисунок 2. Характеристики двухслойной модели<br />
</em></span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2024/06/061124_1510_3.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span><em>Рисунок 3. Предсказание нейронной сети<br />
</em></span></p>
<p style="text-align: center;"><span><em>С помощью функции summary просматриваются все характеристики полученной трехслойной модели (рисунок 5).<br />
</em></span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2024/06/061124_1510_4.png" alt="" /><span><em><br />
</em></span></p>
<p style="text-align: center;"><span><em>Рисунок 4. Характеристики трехслойной модели<br />
</em></span></p>
<p><span>Полносвязная нейронная сеть недостаточно качественно выполняет работу с изображениями. Прогресс обучения двуслойной нейронной сети (78 %) и трехслойной нейронной сети (79 %) растет достаточно медленно, за счет увеличения количества слоев. Более качественный результат можно получить лишь, построив сверточную нейронную сеть.<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2024/06/061124_1510_5.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span><em>Рисунок 5. Характеристики сверточной нейронной сети<br />
</em></span></p>
<p style="text-align: justify;"><span>Для распознавания дальнейших изображений используется метод predict, который позволяет распознавать, а далее выводить распознанные и истинные объекты. Подготовим в Paint собственные изображения и загрузим их на гугл-диск (рисунок 6)<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2024/06/061124_1510_6.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span><em>Рисунок 6. Собственные изображения для проверки работы нейронной сети<br />
</em></span></p>
<p style="text-align: center;"><span><em>По итогам распознавания собственных изображений можно сделать следующий вывод (таблица 1):<br />
</em></span></p>
<p style="text-align: left;"><span><em>Таблица 1. Качество распознавания собственных изображений<br />
</em></span></p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 328px;" />
<col style="width: 328px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 1pt;">
<p style="text-align: center;"><span><em>Структура НС</em></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;">
<p style="text-align: center;"><span><em>Качество распознавания</em></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: center;"><span><em>Полносвязная нейронная сеть из двух слоев </em></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;">
<p style="text-align: center;"><span><em>99.85 %</em></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: center;"><span><em>Полносвязная нейронная сеть из трех слоев: </em></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;">
<p style="text-align: center;"><span><em>99.72 %</em></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: center;"><span><em>Сверточная нейронная сеть с двумя сверточными слоями</em></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;">
<p style="text-align: center;"><span><em>99.94 %</em></span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p style="text-align: justify;"><span><em>Статья посвящена моделированию сверточной нейронной сети для классификации изображений. В результате ее выполнения был спроектирован, реализован и протестирован скрипт на языке программирования Python, с использованием библиотеки Tensorflow, позволяющий распознать на изображении геометрические фигуры и перевести распознанные на изображении данные в массив.<br />
</em></span></p>
<p style="text-align: justify;"><span><em>Для тестирования работоспособности нейронных сетей на вход системы подавались изображения. По окончании обучения каждой нейронной сети были получены данные, необходимые для сравнения работоспособности каждой сети, построены графики, показывающие эффективность увеличения количества слоев в нейронных сетях.<br />
</em></span></p>
<p style="text-align: justify;"><span><em>По результатам полученных данных были выявлены положительные стороны нейронных сетей и их недостатки, а также предложены варианты улучшения.</em></span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2024/06/102172/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>
	</channel>
</rss>
