Название журнала на английском
Scientific journal ISSN 2542-0372

О журнале Выпуски Правила Олимпиады Учительская Поиск Личный портфель

Fedchenko M.V. 1
1

ВВЕДЕНИЕ

В эру цифровых технологий, машинное обучение, в частности компьютерное зрение – важная и значимая отрасль. С помощью машинного обучения люди упрощают себе жизнь, делают мир цифровых технологий лучше и безопасней. Согласно результатам международного исследования Microsoft, 94% руководителей считают, что технологии искусственного интеллекта важны для решения стратегических задач их организаций. При этом 27% опрошенных уже внедрили соответствующие технологии в ключевые бизнес-процессы, еще 46% ведут пилотные проекты.

Россия, благодаря традиционно сильной математической школе не отстает от мировых тенденций. И если судить по докладам на конференции «Технологии машинного обучения. Искусственный интеллект и нейросети: инструменты и опыт реальных проектов», организованной издательством «Открытые системы», применение средств ИИ в нашей стране уже стало если не обыденностью, то достаточно распространенным способом не только оптимизировать, но и радикально поменять бизнес-процессы.

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

Компания «ФосАгро» в настоящий момент активно внедряет элементы цифровизации на производственных предприятиях. На крупном химическом предприятии безопасности работников и охране труда уделяется большое внимание. От применения средств индивидуальной защиты на производстве зависит жизнь и здоровье человека. Сегодня все большее внимание уделяется применению технологий нейросетей, автоматическому сбору, обработке информации и формированию баз данных.

Заказчиком проекта выступила Дирекция по информационным технологиям АО «Апатит» в лице заместителя директора департамента по цифровизации Виноградова С.Е.

Объект исследования: распознавание по видео наличие на работнике химического предприятия средств индивидуальной защиты.

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

Изучение информационных источников и уточнение темы: в процессе работы над данной темой была проанализирована основная учебная и научно-популярная литература, которая позволила осмыслить и осуществить выполнение учебно-исследовательской работы. Много интересной информации узнал из статьи Григория Алексеева, опубликованной на сайте Введение в машинное обучение [1].

Гипотеза: если изучить основы компьютерного зрения, то на практике можно реализовать модель машинного обучения, распознающую систему индивидуальной защиты (далее СИЗ) на сотруднике предприятия. Цель: применение технологий компьютерного зрения при создании модели машинного обучения на Python. Для достижения цели были поставлены и решены основные задачи:

1. изучить технологии машинного обучения;

2. приобрести навыки работы в Python;

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

Методы исследования: теоретические (анализ и синтез), математические.

Машинное обучение

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

Машинное обучение используется в структурах обеспечения безопасности. Например, система распознавания лиц в метро. Камеры сканируют лица людей, входящих и выходящих из метро. Аналитические машины сравнивают снимки с лицами, которые находятся в розыске. Если сходство высоко, то система подает сигнал. Примеры применения в реальной жизни: диагностика заболеваний, поиск мест залегания полезных ископаемых, оценка надёжности и платёжеспособности кандидатов на получение кредитов и так далее [2].

Методы машинного обучения

Существует множество методов машинного обучения. Но самые распространённые из них – обучение с учителем и без.

Обучение с учителем — один из способов машинного обучения, в ходе которого испытуемая система принудительно обучается с помощью примеров «стимул-реакция». Метод применяется, когда необходимо найти функциональную зависимость результатов от входов и построить алгоритм, на входе принимающий описание объекта и на выходе выдающий ответ.

Обучение без учителя — один из способов машинного обучения, при котором испытуемая система спонтанно обучается выполнять поставленную задачу без вмешательства со стороны экспериментатора [3].

 
  Введение в машинное обучение и искусственные нейронные сети · GitHub

Кластер. Машинное обучение

Компьютерное зрение

Компьютерное зрение- это область искусственного интеллекта, связанная с анализом изображений и видео. Она включает в себя набор методов, которые наделяют компьютер способностью «видеть» и извлекать информацию из увиденного.

Выбор языка программирования

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

Сейчас на рынке в основном выделяют 5 языков программирования, для машинного обучения и анализа данных: Python, R, C++, JavaScript и C#. Проведя анализ, я пришёл к выводу, что самыми подходящими языками являются C++ и Python. Свой выбор я остановил на Python.

Выбор библиотеки для проекта

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

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

Нахождение данных для анализа

Чтобы наша будущая модель смогла различать объекты, ее необходимо обучить на множестве различных данных. Для этого я использовал видео с предприятия Фосагро, а также набор данных, с большим числом фотографий защитных касок.

Обработка данных

Для этого с помощью программы LabelImg я создавал аннотации к фотографиям, проще говоря, размечал нужные объекты на фото. Суммарно я разметил 800 фотографий вручную. Остальные изображения были уже аннотированы.

.Снимок экрана (7)

Фото 1. Разметка объектов

Помимо этого, желательно иметь +- схожий размер фотографий. В моём случае это 416*416.

Для этого я написал вот такой код, который задаёт нужный размерам фотографиям:

from PIL import Image

import os, sys

path = "/root/Desktop/python/images/"

dirs = os.listdir( path )

def change():

for item in dirs:

if os.path.isfile(path+item):

img = Image.open(path+item)

f, e = os.path.splitext(path+item)

imResize = img.resize((416,416), Image.ANTIALIAS)

imResize.save(f + ' resized.jpg', 'JPEG', quality=90)

change()

Листинг 1. Тестирование модели

Затем общее число фотографий нужно разбить в процентом соотношении. А именно 80 и 20 процентов соответственно. Где 80% - обучающие данные, а 20% - тестовые.

Создание и обучение модели

from imageai.Detection.Custom import DetectionModelTrainer

trainer = DetectionModelTrainer()

trainer.setModelTypeAsYOLOv3()

trainer.setDataDirectory(data_directory="helmet")

trainer.setTrainConfig(object_names_array=["helmet","head","person"], batch_size=4, num_experiments=30, train_from_pretrained_model="detection_model-ex-020--loss-0019.130.h5")

trainer.trainModel()

Листинг 2. Создание и обучение модели

Для начала импортируем нужную библиотеку, затем создаём модель с нужными параметрами обучения.

Trainer – Наша модель

Object_names_array – Названия, тех объектов, которые мы будем находить. Это объекты находятся в файлах для аннотации фотографий.

num_experiments – Количество эпох. Эпоха - одна итерация в процессе обучения, включающая предъявление всех примеров из обучающего множества и, возможно, проверку качества обучения на контрольном множестве.

Запускаем код и ждём выполнения обучения

Снимок экрана (5)

Скриншот 1. Ход выполнения

По мере обучения, смотрим параметры обученной модели. Для этого напишем ещё один файл с кодом

from imageai.Detection.Custom import DetectionModelTrainer

trainer = DetectionModelTrainer()

trainer.setModelTypeAsYOLOv3()

trainer.setDataDirectory(data_directory="helmet")

metrics = trainer.evaluateModel(model_path="helmet/models/detection_model-ex-002--loss-0023.363.h5", json_path="helmet/json/detection_config.json", iou_threshold=0.5, object_threshold=0.3, nms_threshold=0.5)

print(metrics)

Листинг 3. Параметры обученной модели

Чем ближе показатель к 1(в нашем случае – head и helmet), тем модель лучше.

Тестирование модели

Для тестирования понадобиться наша модель, а также любая картинка, с объектами, которые нужно найти.

Напишем следующий код

from imageai.Detection.Custom import CustomObjectDetection

detector = CustomObjectDetection()

detector.setModelTypeAsYOLOv3()

detector.setModelPath("helmet/models/detection_model-ex-00")

detector.setJsonPath("helmet/json/detection_config.json")

detector.loadModel()

detections = detector.detectObjectsFromImage(input_image="t.jpg", output_image_path="tr.jpg")

for detection in detections:

print(detection["name"], " : ", detection["percentage_probability"], " : ", detection["box_points"])

Листинг 4. Тестирование модели

После его выполнения, программа выведет координаты, найденных объектов, а также нарисует их границы.

Фото 2. До обнаружения

Фото 3. После обнаружения

ЗАКЛЮЧЕНИЕ

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