Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

918

.pdf
Скачиваний:
2
Добавлен:
09.01.2024
Размер:
15.98 Mб
Скачать

рики IoF (intersection-over-union), степени пересечения якорей и истинных размеченных прямоугольников, выносится решение о текущем регионе, то есть присутствует объект или нет. После чего используется алгоритм FastCNN, где карта признаков с полученными объектами передаются слою RoI, с последующей обработкой полносвязных слоев и классификацией, а также с определением смещения регионов потенциальных объектов [2].

LambdaNetworks – новый тип глубоких нейронных сетей, которые эффективны в вычислительном отношении, сохраняя при этом производительность на одном уровне с существующими моделями классификации.

Основная особенность данной модели – использование лямбда слоя, с помощью которого учитываются такие зависимости, с помощью трансформации доступных контекстов в линейные функции (лямбда). После лямбды применяются к каждому входному объекту по отдельности. По мнению исследователей, лямбда – слои более эффективны, чем уровни внимания и самоконтроля, с точки зрения как временной, так и пространственной сложности.

Чтобы оценить производительность недавно предложенных лямбда-слоев и сетей, исследователи применили задачу классификации lambda layer в ImageNet с использованием архитектуры ResNet. Результаты показали, что лямбда – сеть достигает более высокой точности, и в то же время она остается вычислительно эффективной. Также был выполнен исследования с критериями обнаружения объектов COCO и сегментации экземпляров. Они показали, что с точки зрения компромисса между скоростью и точностью новая архитектура лямбда – сети превосходит современные сети [4].

VGG16 – модель сверточной нейросети. Ключевое преимущество данной архитектуры заключается в удобстве ее обучения из – за легкости реализации. Однако VGG16 весит более 533 МБ из – за глубины и количества полносвязных узлов. Вследствие чего осложняется процесс развертывания VGG. Модель VGG16 используется для решения многих проблем классификации при помощи нейросетей, но все же меньшим архитектурам отдают большее предпочтение.

Библиотеки и инструменты

Наиболее популярными библиотеками и инструментами создания систем машинного зрения являются CUDA, Keras, PyTorch, Tensorflow и TFLEARN.

CUDA -продукт NVIDIA для параллельных вычислений, простых в программировании, очень эффективных и быстрых. При использовании мощных графических процессоров, обеспечивает высокую производительность. Набор инструментов входит библиотека NVIDIA Performance Primitives, которая содержит набор функций обработки изображений, сигналов и видео [2].

Keras – библиотека, разработанная для языка программирования Python для глубокого обучения. Данная библиотека является своего рода фреймворком, состоящим из ряда библиотек. Предназначена для быстрых экспериментов с глубокими нейронными сетями, сосредоточена на удобстве, измеряемом качестве и расширяемости. Данная библиотека предлагает стабильные и базовые API-интерфейсы и ограничивает количество действий пользователя, необходимых для обычных случаев использования, что позволяет привести к снижению когнитивной нагрузки [2].

411

PyTorch – современная библиотека, созданная на базе Torch для задач глубокого обучения для языка Python с открытым исходным кодом. Используется для решения задач компьютерного зрения и обработки естественного языка [5].

Tensorflow – символьная математическая библиотека, которая дополнительно используется для приложений машинного обучения, например, нейронных сетей. Гибкая архитектура библиотеки позволяет развернуть вычисления на одном или нескольких графических процессорах без переписывания кода. Известность библиотеки быстро возросла и превзошла существующие из-за простоты API[5].

TFLEARN – библиотека Deep Learning, построенная на основе Tensorflow. Имеет модульную и прозрачную архитектуру. TFLEARN предоставляет API для TensorFlow более высокого уровня, облегчающий и ускоряющий эксперименты, оставаясь полностью прозрачным и совместимым [5].

Выводы и предложения

Анализ алгоритмов, моделей, библиотек и инструментов показал, что разработка системы машинного зрения для решения задачи детекции дефектов на резинотканевых лентах осуществима и актуальна.

Большинство библиотек и моделей написаны на языке программирования Python, целесообразно реализовать решение на данном языке. Однако некоторые модели и библиотеки поддерживают язык программирования С++.

Для разработки системы машинного зрения могут подойти модели LambdaNetworks, AlexNet и YOLO, с использованием таких инструментов, как

Keras, TFLEARN и Tensorflow.

Высокая популярность всех перечисленных компонентов для разработки системы собрала вокруг огромное сообщество разработчиков, что позволяет найти ответы на все возникающие вопросы. Также имеются официальная документация и учебные пособия для создания и обучения системы.

Литература

1.Атакулов Л.Н., Полвонов Н.О., Каюмов У.Э. ОБЗОР И АНАЛИЗ ДИАГНОСТИКИ ОПРЕДЕЛЕНИЯ ДЕФЕКТОВ КОНВЕЙЕРНОЙ ЛЕНТЫ // Universum: технические науки: элек-

трон. научн. журн. 2022. 2(95). [Электронный ресурс]. URL: https://7universum.com/ru/tech/archive/item/13045 (Дата обращения 27.11.2022).

2.Корешкова Т., Компьютерное зрение: технологии, компании, тренды // Научный техни-

ческий центр ФГУП «ГРЧЦ» [Электронный ресурс]. URL: https://rdc.grfc.ru/2021/04/analytics- computer-vision/ (Дата обращения 28.11.2022).

3.AlexNet понимание и реализация [Электронный ресурс]. URL: https://russianblogs.com/article/5506561049/ (Дата обращения 28.11.2022).

4.Лямбда-сети: новая современная архитектура для распознавания изображений. [Элек-

тронный ресурс]. URL: https://neurohive.io/en/news/lambda-networks-new-state-of-the-art-architecture- for-image-recognition/ (Дата обращения 28.11.2022).

5.13 лучших библиотек глубокого машинного обучения на Python [Электронный ресурс].

URL: https://waksoft.susu.ru/2018/11/05/13-luchshih-bibliotek-python-dlya-glubokogo-mashinnogo- obucheniya/ (Дата обращения 28.11.2022).

412

УДК 004.021

П.С. Плотников – студент; А.Ю. Беляков – научный руководитель, доцент,

ФГБОУ ВО Пермский ГАТУ, г. Пермь, Россия

АНАЛИЗ АСИМПТОТИКИ СЛОЖНОСТИ АЛГОРИТМОВ

Аннотация. В данной статье анализируется оценка сложности алгоритмов сортировки. Для оценки сложности за основу взят алгоритм сортировки вставкой. Программа выполнена на языке Python в среде разработки Visual Studio Code.

Ключевые слова: алгоритм, сортировка, асимптотика сложности, время исполнения, прогнозирование.

Постановка проблемы

Под асимптотикой сложности алгоритма понимается зависимость роста времени работы алгоритма от количества входных данных. Она применяется для того, чтобы определить фактическую эффективность какого-либо алгоритма и спрогнозировать его поведение при большем объеме данных [1]. Также, определив сложность алгоритма, можно постараться оптимизировать исходный алгоритм для получения более эффективной программы.

Материалы и методы

Всего имеется несколько основных типов оценок сложности алгоритма:

1.Постоянная – (1);

2.Линейная – ( );

3.Линейно-логарифмическая( );

4.Квадратичная – ( ²).

Рассмотрим алгоритм сортировки вставкой [2] (Листинг 1). Для сортировки имеется список из n элементов. Сортировка состоит из двух вложенных циклов [3], также в каждом цикле присутствует некоторое количество элементарных операций, а именно: 6 операций присваивания, 6 операций поиска элемента списка по индексу и 1 операция сравнения. Кроме этого, при инициализации циклов инкременту присваивается начальное значение и проверяется условие окончания цикла, а при выполнении циклов выполняются еще 2 операции: увеличение инкремента и проверка условия выхода из цикла. Не стоит забывать и о 2 операциях перед вложенными циклами. Внешний цикл выполнится n раз, а вложенный n - i раз.

Листинг 1

def selection_sort(lst): end = len(lst)

for i in range(end): min = lst[i] index = i

for j in range(i + 1, end): if (lst[j] < min):

min = lst[j] index = j

lst[i], lst[index] = lst[index], lst[i]

413

Составим функцию алгоритма, зависящую от n: ( ) = 4 + + ( − ) + 5 + 5 ( − ) + 6 . Приведем подобные: ( ) = 6 ² − 6 + 12 + 4. Для пра-

вильной оценки сложности алгоритма необходимо рассматривать полученную функцию при → ∞. При → ∞ очевидно, что 6 ² растет быстрее, чем 6 или 12 . При определении асимптотики сложности принято рассматривать лишь наиболее растущий элемент, как наиболее влияющий на значение функции член последовательности. Таким образом от функции остается 6 ², однако перед аргументом до сих пор присутствует константа 6. Так как всегда найдутся такие константы, что будет верно неравенство ² ≤ ( ) ≤ ², то константы при аргументе не учитываются при определении асимптотики сложности.

После выполнения вышеописанных действий мы получили следующую асимптотику сложности для алгоритма сортировкой вставками: ( ²). Стоит отметить, что асимптотика сложности алгоритма не зависит от аппаратного обеспечения вычислительной машины или многопотоковой обработки входного списка.

Результаты исследований

Далее приведу сравнительную таблицу для разобранного алгоритма (Листинг 2). Так как полученная асимптотика говорит о том, что при увеличении количества элементов во входной последовательности в 2 раза длительность выполнения сортировки увеличится в 4 раза, то начнем проверять время работы сортировки, начиная с списка длиной 1000 элементов и увеличивая их количество в 2 раза.

Листинг 2

from SelectionSort import selection_sort from timeit import default_timer as time from random import randint, shuffle

def testing_sort(lst): count = amount

while count <= 32000: start = time() selection_sort(lst)

print(round(time() - start, 3)) count = count * 2

lst = [randint(0, 1000) for _ in range(count)] amount = 1000

lst = [randint(0, 1000) for _ in range(amount)] testing_sort(lst)

Таблица 1

Время выполнения сортировки вставкой в зависимости от количества элементов

Количество элементов в списке (ед.)

 

Время выполнения сортировки (сек.)

1000

 

0.038

2000

 

0.127

4000

 

0.446

8000

 

1.713

16000

 

7.542

32000

 

29.259

 

414

Выводы и предложения

Как можно заметить из таблицы 1, описанная ранее зависимость времени выполнения сортировки от количества элементов действительно стремится к квадратичной зависимости.

Таким образом, рассчитывая или принимая во внимание уже имеющуюся асимптотику сложности алгоритма, можно определить не только эффективность рассматриваемого алгоритма, но и подобрать оптимальное решение для поставленной задачи или переделать текущий код для большей оптимизации.

Литература

1.Временная сложность алгоритма. – Текст: Электронный // Википедия. — URL: https://ru.wikipedia.org/wiki/Временная_сложность_ алгоритма (дата обращения 24.11.2022).

2.Алгоритмы. Теория и практическое применения. Род Стивенс. – Москва: Издательство

«Э», 2016. – 544 с.

3. Алгоритмы сортировки Текст: Электронный // Википедия. — URL: https://ru.wikipedia.org/wiki/Алгоритм_сортировки (дата обращения 24.11.2022)

УКД 004.046

Н.А. Порошина – студентка 4 курса; Т.А. Казаченко – научный руководитель, доцент, ФГБОУ ВО Пермский ГАТУ, г. Пермь, Россия

АВТОМАТИЗАЦИЯ БИЗНЕС-ПРОЦЕССА «УЧИТЫВАТЬ ВЫПОЛНЕНИЕ ПРОЕКТОВ» В АО «ГАЛОПОЛИМЕР ПЕРМЬ»

Аннотация. Процесс учета выполняемых проектов характерен для данного предприятия. Автоматизация учета проектов позволит существенно оптимизировать работу и время Ведущего инженера-конструктора.

Ключевые слова: автоматизация, учет, техническое решение.

Основной целью автоматизации является повышение качества исполнения процесса. Автоматизированный процесс обладает более стабильными характеристиками, чем процесс, выполняемый в ручном режиме. Во многих случаях автоматизация процессов позволяет повысить производительность, сократить время выполнения процесса, увеличить точность и стабильность выполняемых операций.

С ростом масштабов организации возникает необходимость в управлении и документальном сопровождении процесса подготовки, согласования и выполнения проектов. Возможности автоматизации процесса учета выполняемых проектов позволяет охватить все этапы данного процесса, как в виде бумажного документа, так и в виде электронного.

Применявшийся способ учета выполняемых проектов в организации был связан с повышенной трудоемкостью, дублированием и избыточностью информации.

Для регистрации и составления отчетов выполняемых проектов, формировались таблицы в редакторе Excel Microsoft Office. Ведущий инженер-конструктор должен зафиксировать план выполняемых проектов на месяц, далее присвоить уникальные номера проектам, используя положение об управлении проектных работ.

Процесс учета выполняющихся проектов очень важен, так как без четкого описания и документирования проекта возможны ошибки и риски при дальнейшей реализации проекта.

415

В данный момент процесс регистрация проектов производится вручную с помощью MS Excel. В таблицу вводится ряд следующей информации о проекте:

Номер и дата ТЗ;

Номер проекта;

Статус проекта;

Наименование технической документации;

Номера чертежей;

Ф.И.О. исполнителя проекта;

Дата сдачи в технический архив.

В MS Excel есть таблица со всем списком проектов как выполненных, так и не выполненных. Также есть таблица со списком только выполненных проектов. И у каждого исполнителя проектов есть своя таблица, это сделано для упрощения поиска нужного проекта и введение выполненных проектов у каждого исполнителя.

Разрабатываемое техническое решение "Учитывать выполнение проектов", реализуемое в АО "ГалоПолимер Пермь", предназначено для введения учета всех проектов. Решение позволяет универсализировать работу с проектами, повысить эффективность учета проекта, своевременную сдачу отчетов на каждый месяц.

Автоматизация учета проектов включает в себя следующие основные этапы:

Зарегистрировать проекты - на этом этапе ведущий инженер-конструктор согласовывает файлы c ТЗ проектов, производит присваивание шифров, где регистрационный номер проекта – цех – корпус – наименование технической документации. Пример: 821-22-3-ТХ.

Сформировать отчет о выполняемых проектах на месяц - на этом этапе формируется отчет и оценка результативности проектов.

Систему автоматизации учеты выполняемых проектов можно разработать с помощью MS Visual Studio и с использование СУБД MS SQL.

Впроцессе реализации системы организация получит следующие плюсы:

формируется единая база всех проектов со всеми необходимыми дан-

ными;

Легкое присваивание уникальных номеров проектам, с помощью выпадающего списка;

Автоматическое внесение информации выполняющегося проекта исполнителю данного проекта;

Возможность контролировать статус выполняемых проектов;

На любую дату программа покажет список выполненных или выполняющихся проектов;

Легкое создание отчетов по выполненным проектам на каждый месяц.

В данном предприятии используется система DIRECTUM. Предназначен

для электронного документа оборота и управления воздействием, направленное на повышение эффективности работы всех сотрудников организации в разных областях их совместной деятельности.

Литература

1.Л. Г. Гагарина, Д. В. Киселёв, Е. Л. Федотова. Разработка и эксплуатация автоматизированных информационных систем. — Издательство «Инфра-М», Москва, 2007.

2.Шевчук, И.С. Проектирование информационных систем: конспект лекций [Текст] / И.С. Шевчук – Пермь: Изд-во ФГБОУ ВПО Пермская ГСХА, 2013. – 59 с.

3.Балдин, К.В., Уткин, В.Б. Информационные системы в экономике. М.- Издательский центр Академия, 2005 – 288 с.

416

УДК 004.4

М.С. Смердова – обучающийся 1 курса; С.В. Каштаева – научный руководитель, канд. экон. наук, доцент,

ФГБОУ ВО Пермский ГАТУ, г. Пермь, Россия

ОБЗОР ТЕХНОЛОГИЙ АВТОМАТИЗАЦИИ АРХИТЕКТУРНОГО ПРОЕКТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Аннотация. В статье представлены некоторые из существующих автоматизированных технологий создания архитектуры программного обеспечения для улучшения и упрощения процесса разработки и реализации программного продукта.

Ключевые слова: архитектурное проектирование, программное обеспечение, технологии автоматизации.

Постановка проблемы

Думаю, ни для кого не секрет, что для эффективной разработки программного продукта необходимо обладать навыками программирования, архитектурного проектирования и не только. Некомпетентность в таких вопросах, несомненно, отразится на результативности предполагаемого проекта, независимо от его размера. Что касается программирования, то тут скорее всего не возникнет никакой проблемы с поиском нужных источников информации для пополнения своих знаний, но с выбором реализации программного продукта и созданием архитектуры ПО всё гораздо сложнее, особенно если тот, кто создаёт программу делает это впервые. Как же тогда быть? В таком случае следует научиться проектировать архитектуру ПО или искать и пробовать применять уже существующие инструменты для разработки и (или) создания архитектуры.

Для улучшения и ускорения процесса проектирования стоит прибегнуть к автоматизированным методам разработки программного обеспечения, но какие же существуют технологии на сегодня?

Немного о терминах

Прежде чем начинать знакомство с технологиями, облегчающими жизнь разработчика необходимо разобраться в том, что такое архитектура ПО и зачем она нужна. Из Инфопедии следует, что архитектура ПО представляет собой совокупность важнейших решений об организации программной системы и включает в себя выбор структурных элементов, их интерфейсов и их поведения, связь между ними, а также архитектурный стиль [1]. Исходя из определения архитектура ПО – это, по сути, описание процесса формирования программного продукта от идеи до реализации и внедрения.

Автоматизированные методы разработки ПО

Любой процесс следует описывать с помощью диаграмм и схем, разработка архитектуры не является исключением. В качестве языка описания проектируемых моделей при разработке архитектуры ПО используют унифицированный язык мо-

делирования – UML (Unified Modeling Language) [2].

Для реализации подобных моделей существует множество различных он- лайн-платформ и приложений. Вот некоторые из них:

417

DRAW.io – https://app.diagrams.net/

DRAW.io (diagrams.net) – это бесплатное программное обеспечение для рисования диаграмм. С его помощью можно создать блок-схемы, организационные, сетевые, ER и UML диаграммы.

Рисунок 1. DRAW.io

Umbrello – https://umbrello.kde.org/

Umbrello (Umbrello Project) – свободное программное обеспечение для UML-моделирования. Программа предназначена для построения UML диаграмм на платформе Unix. Имеет простой и интуитивно понятный пользовательский интерфейс [5].

Рисунок 2. Umbrello Project

418

StarUML – https://staruml.io/

StarUML – это программа для разработки моделей, которая поддерживает UML и MDA (модельно-управляемую архитектуру), можно использовать 11 типов диаграмм (диаграммы классов, состояний, прецедентов и т.д.) [4].

Рисунок 3. StarUML

Visual Paradigm – https://www.visual-paradigm.com/download/

Visual Paradigm – это набор инструментов для моделирования бизнес-про- цессов, с большим количеством функциональных возможностей. Некоторые возможности этой платформы:

планирование архитектуры предприятия и трансформация бизнеса;

моделирование таких процессов как EPC, DFD, UML и не только;

возможность моделирования структуры организации;

наличие инструментов разработки баз данных;

возможность разработки кода и т.д. [6]

Visual Paradigm сложна в освоении из-за большого количества инструментов, поэтому не подойдёт для новичков, помимо прочего имеет только платную версию с тридцатидневным пробным периодом.

Рисунок 4. Visual Paradigm

IBM Rational / Telelogic Rhapsody – https://www.ibm.com/support/pages/ibm- telelogic-rhapsody-7401

IBM Rational / Telelogic Rhapsody – это многофункциональная среда разработки визуального моделирования с использованием языка UML. Rhapsody

419

предназначена для создания приложений реального времени, а также встраиваемых систем. Некоторые из возможностей этого инструмента:

визуальное моделирование на основе языка UML;

исполнение, отладка и тестирование проекта на уровне модели;

генерация кода;

возможность совместной работы над проектом;

генерация проектной документации [3].

Rhapsody имеет платную и бесплатную версию, предназначена для крупных проектов.

Рисунок 5. IBM Rational / Telelogic Rhapsody

Выводы

Технологий, автоматизирующих процесс разработки архитектуры программного обеспечения, существует уже достаточно много, но большинство из них предназначены в основном для разработки моделей, подразумевая, что навыками архитектурного проектирования разработчик уже обладает и ему нужен только инструмент для описания задуманного.

Более продвинутые системы для ведения проектов сложны для освоения и их не так много, что затрудняет поиск необходимого инструментария. Пользуясь такими системами разработчику по-прежнему необходимо обладать архитектурного проектирования заранее.

На мой взгляд ни один из найденных мной инструментов не помогает глубже разобраться в области архитектурного проектирования и помочь выбрать наилучший путь реализации проекта, но ускоряет работу по разработке самого программного продукта.

Литература

1.Архитектура программного обеспечения [Электронный ресурс] // Инфопедия – URL: https://infopedia.su/8x125a9.html

2.Генельт А.Е., Учебно-методическое пособие по дисциплине «Автоматизированные методы разработки архитектуры программного обеспечения» – Санкт-Петербург, 2007.

3.IBM Rational / Telelogic Rhapsody [Электронный ресурс] // INTERFACE.RU – URL: https://www.interface.ru/home.asp?artId=19785

4.StarUML documentation [Электронный ресурс] // StarUML documentation – URL: https://docs.staruml.io/

5.Welcome to Umbrello - The UML Modeller [Электронный ресурс] // Umbrello Project – URL: https://umbrello.kde.org/

6.Visual Paradigm [Электронный ресурс] // Visual Paradigm – URL: https://www.visual-par-

adigm.com/

420

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]