23.16M
Категория: БиологияБиология

Система распознавания лактобактерий

1.

Система распознавания
лактобактерий
Разработал – Андрей Сапаров
Идея – Тимур Терегулов

2.

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

3.

OpenCV
OpenCV (Open Computer Vision) – библиотека с
открытым исходным кодом для высокоэффективной
работы с изображениями.
Реализована на языках C/C++
Спонсируется такими компаниями, как Intel, Microsoft,
Google

4.

v1
Алгоритм:
- регулировка характеристик
изображения
- яркость
- контраст
- шумы
- удаление фона
- выделение контура бактерий
- заливка закрытых контуров и их
подсчет

5.

Недостатки и преимущества v1
Недостатки
- Низкое качество
распознавания
- Необходимость ручной
настройки под разные
типы изображений
(яркие/темные и т.п.)
Преимущества
- Быстро работает
- Низкие трудозатраты на создание
рабочей версии

6.

Интерфейс v1

7.

v2
Основное отличие от
первой версии –
использование
нейронных сетей для
распознавания, в
частности SSD MobileNet
Архитектура нейронной сети

8.

Основная технология v2
TensorFlow – библиотека, разработанная
компанией Google для решения задач
построения и тренировки нейронной
сети
с
целью
автоматического
нахождения и классификации образов,
достигая
качества
человеческого
восприятия.
Используется такими фирмами, как:
Google, Airbnb, Coca-Cola, Deep-Mind,
Intel, Twitter и многими другими

9.

Принципе обучения модели v2
Исходная выборка разделяется на кластеры по форме бактерии, для каждого кластера
обучается своя модель
Формирование выборки:
- Каждая картинка делится на чанки 300x300 пикселей
- Каждый чанк проходит этап ручной разметки с помощью программы LabelImg
- Размеченные изображения фильтруются по качеству разметки и количеству
бактерий на одном изображении
- Изображения поступают в модель для обучения
- Обученная модель экспортируется в формат .onnx для дальнейшего использования
в программе

10.

Предобработка изображения
Исходное изображение
делится на множество
небольших кусочков
замером 300x300
пикселей

11.

Разметка изображений
Каждый маленький
чанк размечается
вручную. Всего было
размечено более 500
таких изображений

12.

Фильтрация размеченных изображений
Изображения фильтровались по
качеству разметки и количеству на
них бактерий.
На вход модели должны поступать
изображения, на которых отмечены
все объекты, так как это прямо влияет
на успех обучения.
Кроме того, было установлено, что
модель плохо обучается, если на
одном изображении находиться
более 20 объектов.

13.

Обучение модели
Обучение модели производится на серверах
Google с помощью сервис Google Colab.
Для обучения применялись одни из самых
современных на сегодняшний день
графических ускорителей – NVIDIA Tesla V100
6-10 часов
время обучения одной модели

14.

Недостатки и преимущества v2
Недостатки
- Долго распознает (10-15 сек. на одно
изображение)
- Сложно обучить (требуется вручную
размечать много изображений)
- Долго обучается
- Требует от пользователя выбор
кластера, к которому принадлежит
бактерия
- Низкое качество распознавания при
большой концентрации бактерий
- Требуется обучить 4 модели для
покрытыя всего разнообразия
бактерий
Преимущества
- Лучшее качество распознавания
по сравнению с первой моделью
- Способность адаптироваться к
разным изображениям
- Отсутствие необходимости
предварительно «тюнить»
параметры изображения

15.

Интерфейс v2

16.

v3
Модель v3 создана с целью устранения недостатков v2
Для этого:
- Протестирована другая архитектура нейронной сети – YOLOv5
- Произведена дополнительная конфигурация процесса обучения
нейронной сети
- Все изображения заново были проверены на качество разметки
- Все изображения объединены в одну, большую, обучающую
выборку

17.

YOLOv5
YOLOv5 представлена компанией
развитие архитектуры YOLOv4
Ultralytics
как
Модель предполагает другой формат входных данных и
использования фреймворка PyTorch (а не TensorFlow)
В ходе тестирования выяснилось, что качество модели
уступает ранее использованной SSD MobileNet при
превышающих трудозатратах на обучение. Так что
дальнейшая работа с этой моделью не проводилась.

18.

Изменения конфигурации обучения v3
Для повышения качества обучения были
добавлены различные случайных типы
аугментации изображений:
- Изменение яркости
- Изменения контрастности
- Отражение изображения по
вертикали/горизонтали
- Поворот изображения на случайных градус
- и т.п.
Такой подход позволяет в разы увеличить
обучающую выборку и повысить качество
обучения модели

19.

Формирование обучающей выборки v3
Ранее размеченные изображения были
объединены в одну большую выборку (вместо
разделения на кластеры)
Изображения этой выборки прошли повторную
разметку и заново отфильтрованы (убраны
картинки с неразличимыми объектами).
Также в выборку были добавлены «пустые»
изображения, не содержащие бактерий. Это
помогло модели обучиться разделять фон.

20.

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

21.

Другие технологии. Интерфейс
Интерфейс создан с использованием библиотеки Qt, в частности
биндингов для языка программирования Python – PyQt
Qt — это фреймворк для разработки кроссплатформенного
программного обеспечения.
Написан на языке программирования C++.
Qt используется в Autodesk Maya, Skype, Telegram,
Медиапроигрыватель VLC, VirtualBox, Mathematica, и на European
Space Agency, DreamWorks, Google, HP, Lucasfilm, Panasonic, Philips,
Samsung, Siemens, Volvo и Walt Disney Animation Studios.
Кроме того, на Qt основана среда рабочего стола KDE,
графический интерфейс мобильной ОС MeeGo и Qt Creator —
среда разработки на Qt;

22.

Другие технологии. Компиляция
Так как Python (язык программирования, на
котором написана программа) –
интерпретируемый язык и не порождает .exe
файлов, для компиляции была использована
библиотека pyInstaller.
pyInstaller – это кроссплатформенная
библиотека для компиляции .py файлов в
исполняемые файлы.

23.

Пример использования итоговой
программы

24.

дальше — больше
stay tuned
English     Русский Правила