Модель машинного обучения для анализа опухолей головного мозга

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

Сводка

  • Огромный дисбаланс между количеством пациентов и количеством нейрохирургов обременяет поставщиков.
  • Большие объемы диагностических данных могут помешать нейрохирургам точно идентифицировать опухоли и их сегментацию, что приводит к непредвиденным последствиям в случае неправильной диагностики.
  • Традиционный метод включает отправку образца ткани в лабораторию, замораживание, окрашивание и микроскопическое исследование, что занимает 20–30+ минут¹.
  • Анализ изображений тканей головного мозга, созданных с помощью ИИ, может сократить процесс анализа тканей до 2–3 минут.
  • Обученная модель машинного обучения показала скорость отзыва 84 %, что является наиболее важным показателем.

Фон

Опухоль головного мозга

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

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

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

  • глиомы
  • Менингиомы
  • гипофиз
  • невромы

По данным Американской ассоциации неврологических хирургов, опухоли имеют разную силу. Не все злокачественные. В таблице ниже глиомы являются злокачественными опухолями, а менингиомы и гипофизарные — доброкачественными.

Примеры нескольких опухолей ниже —

Текущие проблемы

Нехватка нейрохирургов

В настоящее время насчитывается около 3689 нейрохирургов, практикующих и сертифицированных в более чем 5700 больницах США. Они несут ответственность за обслуживание населения численностью более 311 миллионов человек. Однако по мере того, как население стареет и все больше людей сталкиваются с неврологическими проблемами, такими как инсульт, дегенеративное заболевание позвоночника, болезнь Паркинсона и другие двигательные расстройства, существующий разрыв между спросом и предложением на нейрохирургические услуги станет еще более заметным.

Медленный процесс анализа тканей

Анализ тканей — это когда нейрохирург исследует образец ткани, взятый из мозга или нервной системы во время операции. Анализ тканей помогает диагностировать основное состояние или заболевание, которое может повлиять на мозг или нервную систему пациента.

Обычный метод, который включает доставку ткани в лабораторию, ее замораживание и окрашивание, а затем исследование под микроскопом, обычно требует от 20 до 30 минут или более.

Предвзятость подтверждения и недосмотр

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

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

Как искусственный интеллект может помочь в решении текущих проблем?

А.И. может помочь с текущими проблемами следующими способами:

  • В решающий момент в операционной ИИ. Двигатель может поставить своевременный диагноз, потенциально спасая жизни.
  • А.И. может обеспечить необходимую врачу объективность, т. е. выявлять ошибочные диагнозы.
  • А.И. может помочь врачам расставить приоритеты.

Но, А.И. не заменяет врача, а служит помощником. Цена неправильной классификации изображения высока, то есть ложные срабатывания и ложные отрицания.

  • Что, еслиу пациента есть опухоль, но алгоритм классифицирует ее как «нет опухоли». Стоимость отсутствует раннее обнаружение и может быть фатальным.
  • Что, если у пациента нет опухоли, но алгоритм классифицирует ее как «опухоль». Цена — эмоциональная боль пациента.

Как отмечалось выше, А.И. не заменяет нейрохирурга. Ниже показано, как я себе представляю ИИ. инструмент впишется в рабочий процесс провайдера.

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

Учебник по матрице путаницы

Что такое матрица путаницы и почему она важна для понимания производительности модели?

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

Матрица путаницы состоит из четырех ячеек, каждая из которых представляет возможный результат задачи бинарной классификации:

  • True Positive (TP): Модель правильно предсказала положительный класс.
  • Ложный положительный результат (FP): модель предсказывала положительный класс, но он был отрицательным.
  • Ложноотрицательный (FN): модель предсказывала отрицательный класс, но он был положительным.
  • True Negative (TN): Модель правильно предсказала отрицательный класс.

Матрица путаницы может быть представлена ​​следующим образом:

При оценке производительности модели есть два важных соотношения: точность, полнота.

Точность отвечает на вопрос — какая доля положительных идентификаций была на самом деле правильной?

Припоминание отвечает на вопрос — Какая доля фактических положительных результатов была определена правильно?

В случае опухоли головного мозга возможны два сценария:

  • Что, еслиу пациента есть опухоль, но алгоритм классифицирует ее как «нет опухоли». Стоимость отсутствует раннее обнаружение и может быть фатальным.
  • Что, если у пациента нет опухоли, но алгоритм классифицирует ее как «опухоль». Цена — эмоциональная боль пациента.

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

Модель сверточных нейронных сетей (CNN)

Цель: разработать масштабируемую модель CNN на основе выборочного набора данных для выявления глиомы с высокой частотой отзыва. Глиомы составляют около 74% злокачественных опухолей.

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

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

Показатели для оценки:

  • Взаимная энтропия потери и точность
  • Коэффициент отзыва для глиомы

Исследовательский анализ данных.Ниже приведены несколько основных результатов моего исследования данных.

  • Доступны два набора наборов данных — обучающий и тестовый — четыре поднабора данных для каждого класса опухоли — глиома, менингиома, гипофиз, отсутствие опухоли.
  • Обучающий набор несбалансирован, т. е. количество изображений в категории нет опухоли примерно на 48,6 % меньше, чем в любом другом типе.
  • Соотношение сторон исходных изображений равно 1 (512 x 512).
  • Каждое изображение имеет три канала, но при визуальном осмотре будет работать градация серого.
  • Визуальный осмотр изображений показывает, что сканирование неоднородно с точки зрения поперечного сечения, вероятно, потому, что опухоль возникает в разных частях мозга. Кроме того, изображения не имеют дополнительной маркировки на плоскостях — аксиальной, коронарной, сагиттальной.

Предварительная обработка. Ниже приведены несколько ключевых шагов предварительной обработки данных.

  • Использование пакета cv2 и чтение изображения в виде массива в оттенках серого.
  • Уменьшение разрешения изображения с 512х512 до 150х150, тем самым сохраняя соотношение сторон.
  • Преобразование целевых меток в 4 категории с использованием одноразового кодирования.
  • Нормализация значений пикселей, чтобы сходимость была быстрее. Раннее разделение обучающих данных на проверочный набор.

Ниже приведен пример кода для горячего кодирования:

# creating one-hot encoded representation of target labels
# we can do this by using this utility function - https://www.tensorflow.org/api_docs/python/tf/keras/utils/to_categorical

y_train_encoded = keras.utils.to_categorical(y_train,4)
y_val_encoded = keras.utils.to_categorical(y_val,4)
y_test_encoded = keras.utils.to_categorical(y_test,4)

Подход к моделированию. Ниже приведены несколько ключевых шагов для создания модели:

  • Запустите сверточную нейронную сеть (CNN) на обучающих данных и оцените модель по метрикам.
  • Дополните модель, используя другое количество конв. слои, коэффициенты отсева, размеры партий и эпохи.
  • Изучите Keras Tuner, чтобы найти правильные параметры модели. Объедините предоставленные обучающие и тестовые данные, раскол и модель.

Пример кода для модели CNN с 16 слоями с дырявым ReLu в качестве функции активации —

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Activation, Dropout, SpatialDropout2D
from keras.layers.advanced_activations import LeakyReLU
from sklearn.metrics import classification_report, confusion_matrix
import itertools
import matplotlib.pyplot as plt

#### creating a baseline model without any regularization
# initialized a sequential model
model_1 = Sequential()

# adding first conv layer with 16 filters and with kernel size 3, padding same provided the output size same as the input size and input_shape denotes input image dimension of CIFAR
# images
model_1.add(Conv2D(filters=16, kernel_size=3, padding="same", input_shape=(IMG_SIZE, IMG_SIZE, 1)))

# adding leaky relu activation function with negative slope of 0.1
model_1.add(LeakyReLU(0.1))

# adding second conv layer with 32 filters and with kernel size 3
model_1.add(Conv2D(filters=32, kernel_size=3, padding='same'))

# adding leaky relu activation function with negative slope of 0.1
model_1.add(LeakyReLU(0.1))

# adding second conv layer with 32 filters and with kernel size 3
#model_1.add(Conv2D(filters=64, kernel_size=3, padding='same'))
    
# adding max pooling to reduce the size of output of second conv layer
model_1.add(MaxPooling2D(pool_size=2))
    
# flattening the 3-d output of fourth conv layer after max pooling to make it ready for creating dense connections with the output layer for predictions
model_1.add(Flatten())

# adding a fully connected dense layer with 256 neurons    
model_1.add(Dense(256))

# adding leaky relu activation function with negative slope of 0.1
model_1.add(LeakyReLU(0.1))

# adding the output layer with 10 neurons and activation functions as softmax since this is a multi class classification problem
model_1.add(Dense(4, activation='softmax'))

Пример кода для соответствия модели проверочному набору —

history_1 = model_1.fit(
            Xcom_train, ycom_train_encoded,
            batch_size=32,
            epochs=20,
            validation_data=(Xcom_val, ycom_val_encoded),
            shuffle=True,
            verbose=2
)

Пример кода для расчета точности модели —

ycom_pred_test = model_1.predict(Xcom_test)
ycom_pred_test_classes = np.argmax(ycom_pred_test, axis=1)
ycom_pred_test_max_probas = np.max(ycom_pred_test, axis=1)
accuracy_score(ycom_test, ycom_pred_test_classes)

Пример кода для расчета матрицы путаницы:

def plot_confusion_matrix(cm, classes,
                          normalize=False,
                          title='Confusion matrix',
                          cmap=plt.cm.Blues):
    """
    This function prints and plots the confusion matrix.
    Normalization can be applied by setting `normalize=True`.
    """
    if normalize:
        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
        print("Normalized confusion matrix")
    else:
        print('Confusion matrix, without normalization')

    print(cm)

    plt.imshow(cm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.colorbar()
    tick_marks = np.arange(len(classes))
    plt.xticks(tick_marks, classes, rotation=45)
    plt.yticks(tick_marks, classes)

    fmt = '.2f' if normalize else 'd'
    thresh = cm.max() / 2.
    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
        plt.text(j, i, format(cm[i, j], fmt),
                 horizontalalignment="center",
                 color="white" if cm[i, j] > thresh else "black")

    plt.tight_layout()
    plt.ylabel('True label')
    plt.xlabel('Predicted label')

Пример кода для расчета точности и скорости отзыва —

cnf_matrix = confusion_matrix(ycom_test,ycom_pred_test_classes)
np.set_printoptions(precision=2)

# Plot non-normalized confusion matrix
#plt.figure(figsize=(16, 8))
#plot_confusion_matrix(cnf_matrix, classes=CATEGORIES,title='Confusion matrix')
recall = np.diag(cnf_matrix) / np.sum(cnf_matrix, axis = 1)
precision = np.diag(cnf_matrix) / np.sum(cnf_matrix, axis = 0)
print(recall)
print(precision)

Производительность модели:

После нескольких попыток настроить модель на основе целей, которые я поставил перед моделью, я, наконец, добился точности 82% и скорости отзыва 84% для опухоли Гиломы (самая злокачественная опухоль).

Заключение

  • Как упоминается в первоначальной цели, А.И. не предназначался для замены обученного провайдера. Рекомендуется встроить A.I. в рабочий процесс нейрохирурга, чтобы сократить время выполнения анализа тканей и свести к минимуму ошибочные диагнозы.
  • Точность модели и показатели отзыва улучшат поставщиков, которые будут предоставлять обратную связь ИИ. двигателя, улучшая качество и количество тестовых данных.
  • Набор данных мог быть лучше. Визуальный осмотр изображений показывает, что сканирование неравномерно в поперечном сечении, вероятно, потому, что опухоль возникает в разных частях мозга. Изображения не имеют дополнительных надписей на плоскостях — аксиальной, коронарной, сагиттальной.

Я пишу об управлении продуктами, здравоохранении, принятии решений, инвестициях и стартапах. Пожалуйста, подписывайтесь на меня в Medium, LinkedIn или Twitter.

  1. https://www.nytimes.com/2020/01/06/health/artificial-intelligence-brain-cancer.html
  2. https://developers.google.com/machine-learning/crash-course/classification/precision-and-recall