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

Содержание

  • Введение в cAINvas
  • Источник данных
  • Визуализация и анализ данных
  • Trainset-TestSet Создание
  • Обучение модели
  • Введение в DeepC
  • Компиляция с DeepC

Введение в cAINvas

cAInvas — это интегрированная платформа разработки для создания интеллектуальных периферийных устройств. Мы можем не только обучать нашу модель глубокого обучения с помощью Tensorflow, Keras или Pytorch, мы также можем скомпилировать нашу модель с помощью периферийного компилятора под названием DeepC, чтобы развернуть нашу рабочую модель на периферийные устройства для производства. Модель обнаружения Covid-19 также разработана на cAInvas, и все зависимости, которые вам понадобятся для этого проекта, также предварительно установлены.

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

Источник данных

При работе над cAInvas одной из его ключевых особенностей является галерея UseCases. Поскольку модель обнаружения Covid-19 также является частью галереи cAInvas, теперь нам не нужно искать данные вручную. Поскольку у них есть функция импорта набора данных в ваше рабочее пространство, когда вы работаете с ними. Чтобы загрузить данные, мы просто необходимо ввести следующие команды:

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

Визуализация данных и анализ данных

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

А изображение спектрограммы выглядит так:

Создание TrainSet-TestSet

Далее мы создадим обучающий и тестовый набор данных для обучения нашей модели глубокого обучения. Для этого мы будем использовать модуль ImageDataGenerator из библиотеки предварительной обработки изображений Keras. Это загрузит изображения вместе с их метками для нас в формате, распознаваемом Keras для процесс обучения. Нам просто нужно создать train_generator и test_generator, а затем, когда мы запустим их, они создадут для нас набор данных. Следующие команды дадут вам представление о том, как создать набор данных поезда, и тогда вы сможете создайте тестовый набор самостоятельно.

Обучение модели

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

Model: "functional_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         [(None, 224, 224, 3)]     0         
_________________________________________________________________
block1_conv1 (Conv2D)        (None, 224, 224, 64)      1792      
_________________________________________________________________
block1_conv2 (Conv2D)        (None, 224, 224, 64)      36928     
_________________________________________________________________
block1_pool (MaxPooling2D)   (None, 112, 112, 64)      0         
_________________________________________________________________
block2_conv1 (Conv2D)        (None, 112, 112, 128)     73856     
_________________________________________________________________
block2_conv2 (Conv2D)        (None, 112, 112, 128)     147584    
_________________________________________________________________
block2_pool (MaxPooling2D)   (None, 56, 56, 128)       0         
_________________________________________________________________
block3_conv1 (Conv2D)        (None, 56, 56, 256)       295168    
_________________________________________________________________
block3_conv2 (Conv2D)        (None, 56, 56, 256)       590080    
_________________________________________________________________
block3_conv3 (Conv2D)        (None, 56, 56, 256)       590080    
_________________________________________________________________
block3_pool (MaxPooling2D)   (None, 28, 28, 256)       0         
_________________________________________________________________
block4_conv1 (Conv2D)        (None, 28, 28, 512)       1180160   
_________________________________________________________________
block4_conv2 (Conv2D)        (None, 28, 28, 512)       2359808   
_________________________________________________________________
block4_conv3 (Conv2D)        (None, 28, 28, 512)       2359808   
_________________________________________________________________
block4_pool (MaxPooling2D)   (None, 14, 14, 512)       0         
_________________________________________________________________
block5_conv1 (Conv2D)        (None, 14, 14, 512)       2359808   
_________________________________________________________________
block5_conv2 (Conv2D)        (None, 14, 14, 512)       2359808   
_________________________________________________________________
block5_conv3 (Conv2D)        (None, 14, 14, 512)       2359808   
_________________________________________________________________
block5_pool (MaxPooling2D)   (None, 7, 7, 512)         0         
_________________________________________________________________
average_pooling2d (AveragePo (None, 3, 3, 512)         0         
_________________________________________________________________
flatten (Flatten)            (None, 4608)              0         
_________________________________________________________________
dense (Dense)                (None, 128)               589952    
_________________________________________________________________
dropout (Dropout)            (None, 128)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 2)                 258       
=================================================================
Total params: 15,304,898
Trainable params: 590,210
Non-trainable params: 14,714,688
_________________________________________________________________

Мы использовали предварительно обученную модель VGG-16 и применили трансферное обучение. Мы изменили последний плотный слой модели VGG в соответствии с нашими потребностями. Мы не будем обучать всю модель VGG, а только определенные слои, которые мы добавили к нашему предварительному -существующая модель.

Использовалась функция потерь «binary_crossentropy», а оптимизатор — «Адам». Для обучения модели мы использовали Keras API с тензорным потоком на бэкэнде. Модель показала хорошую производительность с приличной точностью. Вот тренировочные графики для модели:

Введение в DeepC

Компилятор DeepC и платформа логического вывода предназначены для включения и выполнения нейронных сетей глубокого обучения с упором на функции устройств малого форм-фактора, таких как микроконтроллеры, eFPGA, процессоры и другие встроенные устройства, такие как raspberry-pi, odroid, arduino, SparkFun Edge, risc. -V, мобильные телефоны, x86 и портативные компьютеры.

DeepC также предлагает заблаговременно компилятор, создающий оптимизированный исполняемый файл на основе цепочки инструментов компилятора LLVM, специализированной для глубоких нейронных сетей с ONNX в качестве внешнего интерфейса.

Компиляция с DeepC

После обучения модели она была сохранена в формате H5 с помощью Keras, так как он легко сохраняет веса и конфигурацию модели в одном файле.

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

На этом наша модель обнаружения Covid-19 настроена для развертывания на периферийных устройствах.

Ссылка на блокнот cAInvas: https://cainvas.ai-tech.systems/use-cases/covid-19-detection-app/

Источник: Ашиш Арья