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

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

В связи с растущим использованием (машинного обучения) машинного обучения в здравоохранении мы решили создать модель распознавания изображений в PerceptiLabs, которая могла бы анализировать изображения ОКТ сетчатки для автоматизации анализа этих сканов. Подобная модель может помочь врачам, исследователям и другим специалистам в области здравоохранения быстрее и точнее диагностировать заболевания глаз.

Набор данных

Для обучения нашей модели мы использовали изображения из набора данных Retinal OCT Images на Kaggle. Исходный набор данных включает более 80 000 изображений в формате .jpeg с различным разрешением, разделенных на четыре классификации. Одна классификация представляет собой нормальные ОКТ-сканы (т. е. отсутствие выявленных заболеваний), а другие — ОКТ-сканы для трех заболеваний: хороидальная неоваскуляризация (CNV), диабетический макулярный отек. (DME) и Drusen (т. е. множественные друзы, присутствующие при ранней возрастной дегенерации желтого пятна (AMD)).

Исходный набор данных несбалансирован: более 44,6% изображений для CNV, 31,5% для нормального, 13,6% для DME и 10,3% для друз. Чтобы устранить возможные смещения во время обучения, мы создали сбалансированный набор данных, используя подмножество из 4000 изображений для каждой классификации.

На рис. 1 показаны некоторые примеры изображений из этого набора данных:

Чтобы сопоставить классификации с изображениями, мы создали файл .csv, который связывает каждый файл изображения с соответствующей меткой классификации (CNV, DME, DRUSEN и НОРМАЛЬНОЕ) для загрузки данных с помощью Мастера данных PerceptiLabs. Ниже приведен частичный пример того, как выглядит файл .csv:

Обзор модели

Наша модель была построена из четырех Компонентов:

Компонент 1: слияние, три входа из одного источника ввода.

Компонент 2: MobileNetV2, include_top=false, pretrained=imagenet

Компонент 3: Плотный, Активация = ReLU, Нейроны = 128

Компонент 4: Плотный, Активация = ReLU, Нейроны = 4

Модель использует передачу обучения через MobileNetV2 и компонент Merge для преобразования изображений в градациях серого в RGB. Это требование MobileNet, потому что она использует предварительно обученную модель с фиксированными весами, где ее первый слой свертки обучался на входных данных с тремя каналами (RGB). На рис. 2 показана топология модели в PerceptiLabs:

Обучение и результаты

Мы обучали модель партиями по 32 в течение 10 эпох, используя оптимизатор ADAM, скорость обучения 0,001 и функцию потери кросс-энтропии. При времени обучения около 11,5 минут мы достигли точности обучения 95,78 % и точности проверки 83,69 %.

На рис. 3 показано представление статистики PerceptiLabs во время обучения:

На рисунках 4 и 5 ниже показаны точность и потери по 10 эпохам во время обучения:

На рисунке 4 мы видим, что точность обучения и валидации в начале была примерно от 79% до 80%. Точность обучения продолжала расти, прежде чем стабилизироваться примерно на седьмом этапе, в то время как точность проверки практически не увеличивалась. Интересно, что потери на тренировках (показаны на рис. 5) больше всего снижались в течение первой эпохи или около того, затем неуклонно снижались на протяжении всей тренировки, при этом наблюдалось несколько небольших временных повышений. Потери при валидации, с другой стороны, оставались довольно стабильными примерно до пятой эпохи, где они медленно увеличивались до конца последней эпохи.

Вертикальные приложения

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

Сводка

Этот вариант использования является примером того, как распознавание изображений можно использовать в здравоохранении. Если вы хотите построить подобную модель глубокого обучения, запустите PerceptiLabs и ознакомьтесь с репозиторием, который мы создали для этого варианта использования, на GitHub. Также обязательно ознакомьтесь с другим нашим вариантом использования, связанным с глазами: Распознавание глазных заболеваний.