Введение

Всемирная организация здравоохранения (ВОЗ) заявляет, что рак является ведущей причиной смерти во всем мире, и только в 2020 году на его долю приходится около 10 миллионов смертей. Из всех возможных типов рака рак легких был наиболее частой причиной смерти от рака в 2020 году, на него пришлось около 1,80 миллиона смертей.

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

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

Набор данных

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

Набор данных рака легких IQ-OTHNCCD содержит в общей сложности 1190 изображений, представляющих срезы компьютерной томографии 110 случаев. Эти случаи делятся на три класса: нормальные, доброкачественные и злокачественные. Из них 40 случаев диагностированы как злокачественные; В 15 случаях диагностированы доброкачественные заболевания; и 55 случаев классифицированы как нормальные.

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

Весь код будет написан на сервере Notebook Server платформы Cainvas для повышения производительности, а также для последующего масштабирования модели для использования в устройствах EDGE.

Настройка платформы

Вы можете создать учетную запись на сайте Cainvas здесь.

После успешного создания учетной записи войдите на платформу и перейдите в раздел Dashboard, чтобы открыть Notebook Server.

Импорт необходимых библиотек

Мы будем использовать некоторые часто используемые библиотеки, такие как Numpy и Matplotlib. Мы будем использовать OpenCV2 и Matplotlib для доступа к изображениям и отображения их в записной книжке.

Другие варианты импорта включают Tensorflow и Keras для создания сверточной нейронной сети и выполнения предварительной обработки данных для выполнения обучения. Это.

Загрузка набора данных

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

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

В этой статье мы загрузим набор данных в виде zip-файла. URL-адрес загруженного файла можно получить после загрузки и использовать в записной книжке для его загрузки. Чтобы просмотреть загруженные файлы, просто нажмите на разделы «Загрузки». Нажмите кнопку «Копировать URL-адрес», чтобы скопировать URL-адрес файла.

Мы можем использовать URL-адрес с командой !wget, чтобы загрузить его в нашу записную книжку. Затем мы можем распаковать zip-файл в тихом режиме, используя!unzip -qo filename.zip

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

Подготовка данных

Данные обучения находятся в трех папках - Доброкачественные, Злокачественные и Нормальные. Мы будем использовать ImageDataGenerator, предлагаемый Керасом, для подготовки данных и получения соответствующих меток, относящихся к структуре папок. Генератор также обеспечивает гибкость создания наборов разделов для обучения и проверки из всего набора обучающих данных.

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

array([[0., 1., 0.],
       [0., 1., 0.],
       [0., 1., 0.],
       [0., 0., 1.],
       [0., 0., 1.],
       [0., 1., 0.],
       [0., 0., 1.],
       [1., 0., 0.],
       [1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.],
       [0., 0., 1.],
       [0., 1., 0.],
       [0., 1., 0.],
       [0., 0., 1.],
       [0., 0., 1.]], dtype=float32)

Мы получаем одни горячие закодированные векторы из-за категоричности данных. Позиция индекса, равная 1, указывает на соответствующий класс случая (доброкачественный, злокачественный, нормальный), обнаруженный при компьютерной томографии.

Создание модели

Как уже упоминалось, мы создадим сверточную нейронную сеть для прогнозирования правильных классов ячеек по изображениям. Мы использовали 3 слоя Conv2D со слоями MaxPool2D после каждого для извлечения признаков из изображений. Используемая функция активации - ReLU. Выходной слой имеет только три нейрона, соответствующих трем классам опухолей (доброкачественные, злокачественные, нормальные) с функцией активации Softmax.

Сводка модели для созданной выше модели выглядит следующим образом:

Model: "sequential_9"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_32 (Conv2D)           (None, 62, 62, 32)        320       
_________________________________________________________________
max_pooling2d_32 (MaxPooling (None, 31, 31, 32)        0         
_________________________________________________________________
conv2d_33 (Conv2D)           (None, 29, 29, 64)        18496     
_________________________________________________________________
max_pooling2d_33 (MaxPooling (None, 9, 9, 64)          0         
_________________________________________________________________
conv2d_34 (Conv2D)           (None, 9, 9, 32)          18464     
_________________________________________________________________
max_pooling2d_34 (MaxPooling (None, 4, 4, 32)          0         
_________________________________________________________________
flatten_7 (Flatten)          (None, 512)               0         
_________________________________________________________________
dense_25 (Dense)             (None, 32)                16416     
_________________________________________________________________
dense_26 (Dense)             (None, 64)                2112      
_________________________________________________________________
dense_27 (Dense)             (None, 32)                2080      
_________________________________________________________________
dense_28 (Dense)             (None, 3)                 99        
=================================================================
Total params: 57,987
Trainable params: 57,987
Non-trainable params: 0
_________________________________________________________________

Мы будем использовать Early Stopping, чтобы наша модель прекратила обучение, если отслеживаемый параметр не изменится с течением времени. Это сделает тренировочный процесс более эффективным и позволит избежать переобучения.

Компиляция и обучение модели

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

Точность и потеря

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

Тестирование модели

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

Сначала мы извлечем из модели предсказания с горячим кодированием по невидимым данным.

Затем мы напечатаем фактические значения с предсказанными, отображая их в более понятной форме.

ACTUAL: {0: 'Malignant', 1: 'Benign', 2: 'Malignant', 3: 'Normal', 4: 'Normal'}
PREDICTIONS: {0: 'Malignant', 1: 'Benign', 2: 'Malignant', 3: 'Normal', 4: 'Normal'}

Теперь мы визуализируем прогнозы для лучшего понимания

Вывод

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

Платформа Cainvas предоставляет универсальное решение для создания моделей глубокого обучения, которые также могут быть скомпилированы в модели, удобные для устройств EDGE для использования в ваших проектах IOT. Платформа может похвастаться различными другими инструментами и ресурсами, которые помогут вам в следующем проекте по глубокому обучению.

Ссылка на блокнот: Здесь.

Предоставлено: Уманг Тивари