Рассказываем, как Технологика и стартап цифровой медицины запустили мобильное приложение, которое при помощи ИИ анализирует цвета медицинских тест-полосок и трактует результаты показателей мочи.
Уже давно существуют домашние тесты мочи в виде тест-полосок. Индикаторные полоски предназначены для качественного и полуколичественного определения ряда показателей в моче (таких как глюкоза, белок, pH и другие). Результат определяется “на глазок” — человек сам должен сравнить тест-полоску с эталонными цветами.
Идея использовать ИИ в процессе определения цвета возникла у одного из стартапов, с которым мы работали. Решение может помочь человеку различить близкие друг другу цвета и оттенки, более того, такой ИИ-ассистент будет незаменим для пациентов, испытывающих затруднения в определении того или иного цвета.
Однако при анализе фотографий нейросетью следует учитывать определенный нюанс — цвет тестовых полосок на снимках может варьироваться в зависимости от условий освещения и спецификаций камеры, включая настройки и постобработку. Даже незначительное изменение оттенков в реагентных зонах способно серьезно искажать результаты анализа.
Эту задачу нам и необходимо было решить в первую очередь.
Поскольку задача заключается в идентификации цветов, необходимо провести сравнение стандартного образца с цветами, полученными в ходе анализа. Правильное сравнение возможно только после калибровки цветов. Как мы уже отмечали, оттенки на снимке могут изменяться из-за различных факторов, включая освещение, объекты, находящиеся рядом в кадре, а также заводские и пользовательские настройки камеры.
Мы разбили проект на ключевые этапы; одним из которых была калибровка цветов, требующий предварительной подготовки, также были использованы ArUco-маркеры:
Наиболее сложной подзадачей оказалась калибровка изображения по заданным калибровочным цветам. Типичным решением подобных задач является нахождения расстояния между двумя цветами.
Мы подобрали несколько методов калибровки цветов и создали для этого типовые синтетические тесты. Зная реальные значения реагентов с тестовых изображений, мы можем сравнить их со значениями, выдаваемыми алгоритмом, и рассчитать точность.
Мы решили протестировать 2 метода сравнения цветов:
Калибровка по совпадению гистограмм — это подгонка гистограммы рассматриваемого изображения к гистограмме эталонного изображения. В нашем случае эталоном является калибровочная карта.
Калибровка с помощью регрессии
“Гистограмма представляет собой распределение пикселей с различной яркостью для каждого из каналов RGB. Таким образом, подгоняя гистограмму под референсную, мы делаем цвета более похожими на референсные.“
Елизавета Кавунникова, cv-разработчик
Метод калибровки по совпадению гистограмм дал неудовлетворительные результаты. На рисунке ниже показано исходное изображение (слева) и сфотографированная карта после калибровки (справа). Видно, что светлые оттенки (цвета, выделенные красным) осветлены, в результате чего невозможно правильно определить соответствующие значения реагентов.
Поэтому мы применили регрессию по методу наименьших квадратов (Partial least squares regression, PLS regression). Метод заключается в подгонке RGB-значений калибровочных цветов с фотографии к заданным RGB-значениям этих цветов.
Другими словами, этот метод находит, как преобразовать изображение, чтобы RGB-значения калибровочных цветов соответствовали заданным значениям.
Результат калибровки этим методом дал удовлетворительные результаты — все значения реагентов были определены правильно, точность определения составила 90%.
“Мы также попробовали заменить PLS-регрессию интерполяцией с помощью кубического сплайна, который также подгоняет RGB-значения калибровочных цветов из фотографии с заданными значениями. Однако результат оказался хуже, поэтому мы решили вернуться к PLS-регрессии. “
Михаил Борисов, cv-разработчик
При анализе калибровки изображений методом PLS-регрессии выяснилось, что камеры мобильных телефонов часто плохо передают некоторые оттенки цветов.
К проблемным цветам относятся неоновые оттенки (голубой, ярко-зеленый, светло-зеленый, ярко-розовый) и светло-розовые оттенки для кальция. Кроме того, эти цвета плохо калибруются, так как на калибровочной карте нет аналогичных оттенков.
Мы создаем ИИ-решения и мы делаем это хорошо. Свяжитесь с нами, чтобы начать разработку вашего проекта сегодня.
После проведенного анализа было принято решение о замене калибровочной карты:
Точность определения цветов при использовании новой калибровочной карты составила 97% на синтетических данных.
К слову о синтетических данных, так как на этапе разработки решения не было достаточного количества реальных примеров тестов, мы самостоятельно подготовили некоторое количество синтетических данных и распечатали их для обучения модели.
Когда синтетические тесты оказались позади, мы приступили к тестам на реальных данных. Здесь встретились следующие особенности:
На синтетических данных мы осуществляли поиск контуров (через библиотеку OpenCV).
Метод заключается в том, что мы преобразуем изображение в градации серого. Затем применяем бинаризацию к полутоновому изображению: все оттенки ниже порогового значения становятся черными, все оттенки выше этого значения — белыми. И после — находим контуры объектов.
Однако этот метод не дает положительного результата на тест-полоске, поскольку, как уже отмечалось, поверхность цветного квадрата неровная, а контраст между квадратами и пробелами недостаточен.
Было решено опробовать другие методы:
На изображениях без вспышки алгоритм показал точность 75%. На изображениях со вспышкой точность алгоритма составила 85-90%. Наиболее часто ошибочно определяемыми реагентами являются креатинин и показатель удельного веса.
Чтобы повысить точность результатов и снять ошибки, вызванные неточной калибровкой цвета из-за присутствия теней, падающих на калибровочный фон, мы предупреждаем пользователя перед съемкой, что стоит включить вспышку для улучшения качества фотографии.
Для того чтобы сравнить цвета с тест-полоски с эталонными, мы переводили их RGB-значения в LAB-значения, и затем сравнивали между собой LAB-значения.
LAB — это цветовое пространство, в котором изменение цвета более линейно с точки зрения человеческого восприятия по сравнению с RGB-цветами. То есть, одно и то же изменение значений цвета в разных областях цветового пространства вызывает одинаковое ощущение изменения цвета для человеческого глаза.
Анализируя результаты на изображениях со вспышкой, мы заметили, что значения некоторых реагентов плохо определяются обеими метриками: и LAB, и RGB. Например, таков креатинин.
Мы попробовали использовать яркость в качестве метрики для креатинина и оказалось, что яркость лучше определяет значение для этого реагента во многих тестах.
Таким образом, идея совершенствования алгоритма заключается в выборе оптимальной метрики для каждого реагента: RGB, HSV, HSL (или просто третьей составляющей яркости), LAB, CMYK.
А для такой настройки нашей модели компьютерного зрения требуется большой объем данных: различные случаи со всем многообразием возможных цветов для каждого реагента.
“К сожалению, такие данные тяжело достать. Поскольку редко встречаются пациенты, у которых были бы сильные отклонения от нормальных значений, причем по всем показателям. В основном у всех людей значения в пределах, либо рядом с нормой.
Поэтому нужно ждать какое-то время, чтобы у заказчика набралось достаточно таких "сложных" случаев. .“
Елизавета Кавунникова, cv-разработчик
Разработанная нами модель была успешно внедрена в мобильное приложение. Приложение сейчас тестируется клиентом на ограниченной аудитории.
Мы добились достаточно высокой точности распознавания в 85-90%, учитывая все сложности, с которыми столкнулись в процессе работы над проектом.
Теперь у наших ai-специалистов появилась более глубокая экспертиза в области распознавания цветов. И особенно приятно было поработать на таком прикладном медицинском проекте, как анализ тест-полосок.