Человеческий глаз не всегда может точно трактовать цвет реагентной зоны тест-полоски. Его трактовка может зависеть от многих параметров, таких как освещение, особенности цветовосприятия человека или же выцветание легенды, с которой сличают тест-полоску. Более того, иногда цвет реагентной зоны бывает пограничным и не понятно, к какой категории легенды его стоит отнести. Но если отдать изображение тест-полоски нейросети, анализ может оказаться более точным.
К нам обратился стартап с задачей разработать нейронную сеть распознавания изображений, которая была бы способна анализировать фотографии тест-полосок мочи и сравнивать цвета реагентных зон с цветовой шкалой для их трактовки.
Система должна определять наличие и количество различных химических веществ на основе изменения цветов тест-полоски. Пользователь получит точные результаты анализов с помощью фотографии — быстро и без необходимости посещения лаборатории или больницы. Искусственный интеллект сам точно распознает цвета на тест-полосках.
Но у нейросети есть одна проблема - цвета тест-полосок на фотографиях могут различаться по причине различных условий освещения, соседствующего фона или различных настроек камеры. Малейшая разница в цветах реагентных зон может существенно повлиять на результаты теста, поэтому для системы было критически важно их обнаружить. Логичным решением здесь стала калибровка фотографии для достижения точной цветопередачи.
Поскольку точность цветопередачи является наиболее важным этапом предварительной обработки, пользователю предлагается сделать снимок тест-полоски на фоне специального калибровочного фона, который затем будет использован для автоматической настройки цветов изображения.
Перед отправкой изображения на калибровку цвета, нейронная сеть обнаруживает края и обрезает изображение, удаляя ненужный фон, который может мешать процессу распознавания. Это происходит на основе ArUco маркеров. Для поиска ArUco маркеров и предобработки изображения (исправление перспективы, обрезка, поворот, поиск контуров цветов) мы использовали библиотеку openCV.
После предварительной обработки нейронная сеть компьютерного зрения сравнивает каждую реагентную зону с калибровочным фоном и вычисляет результаты теста. Для калибровки изображения мы применяли модель PLSRegression из библиотеки Sklearn. Для каждого нового изображения модель обучается с нуля: находим, как нужно преобразовать изображение так, чтобы калибровочные цвета на изображении соответствовали заданным.
Откалиброванные цвета тестовой полоски сравниваются с заданными цветами для каждого реагента в пространстве цветов LAB, так как таким образом результат получается точнее, чем если сравнивать в RGB. LAB - это пространство цветов максимально приближенное к человеческому восприятию цветов. Для сравнения цветов мы использовали библиотеку colormath.
Разработанная нами нейронная сеть была внедрена в мобильное приложение, которое сейчас тестируется на ограниченной аудитории. Мы добились высокой точности распознавания — достаточно высокой для использования в медицинских условиях.