Мы все знаем о ситуации с пандемией, созданной вспышкой нового коронирусного вируса, и о большом количестве смертей, которые он вызвал во всем мире. Мы также понимаем, что звук кашля у пациентов с 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/
Источник: Ашиш Арья