Компьютерное зрение, Глубокое обучение
Обнаружение пожара с использованием изображений с камер видеонаблюдения - приложение Monk Library
Статья о том, как использовать библиотеку Monk в реальных приложениях, таких как обнаружение пожара.
Цель
- Сделайте модель глубокого обучения по обнаружению пожара с помощью библиотеки Monk и перенесите обучение.
- Сравнение mobilenet-v2, densenet121 и densenet201.
Подробное руководство доступно на GitHub.
О наборе данных.
- Поскольку наборов изображений с камер видеонаблюдения было очень меньше. Поэтому я взял 2 набора данных из Kaggle.
- Первый содержал изображения пожара и не-пожара, а второй содержал изображения с камер видеонаблюдения с огнем и без пожара.
- Затем я объединил эти два набора данных для большей точности.
О библиотеке Monk и о том, как Monk упрощает классификацию изображений
- Пишите меньше кода и создавайте сквозные приложения.
- Изучите только один синтаксис и создавайте приложения, используя любую библиотеку глубокого обучения - PyTorch, mxnet, Keras, TensorFlow и т. Д.
- Легко управляйте всем своим проектом с помощью нескольких экспериментов.
Для кого построена эта библиотека
- Студенты: беспрепятственно изучают компьютерное зрение, используя наши комплексные учебные дорожные карты.
- Исследователи и разработчики: создавайте и управляйте несколькими проектами глубокого обучения.
- Участники соревнований на Kaggle, Codalab, HackerEarth, AiCrowd и др.
Оглавление
- Установить Monk
- Использование предварительно обученной модели для обнаружения пожара
- Обучение классификатору с нуля
- Загрузка набора данных
- Импорт серверной части Keras
- Модель обучения с использованием mobilenet_v2 в качестве архитектуры трансферного обучения
- Модель обучения с использованием desnenet121 в качестве архитектуры трансферного обучения
- Модель обучения с использованием densenet201 в качестве архитектуры трансферного обучения
- Сравнение всех моделей
4. Вывод
1. Установка Monk
#using cuda10.0 download monk using following command pip install -U monk-cuda100
Чтобы узнать о других способах установки, посетите Библиотеку монахов.
2. Использование предварительно обученной модели для демонстрации.
Сначала загрузите предварительно обученные модели с Google Диска.
#download the pre-trained models ! wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1tTJ6KEkzv1GIRsvo_-wI6YQh7iztbDCW' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1tTJ6KEkzv1GIRsvo_-wI6YQh7iztbDCW" -O cls_fire_trained.zip && rm -rf /tmp/cookies.txt
Вышеупомянутый загрузит zip-файл с предварительно обученными моделями и назовет их cls_fire_trained.zip. Теперь нам нужно распаковать файл.
! unzip -qq cls_fire_trained.zip
Импорт monk.keras_prototype для работы с библиотекой monk.
#Using keras backend # When installed using pip from monk.keras_prototype import prototype
Загрузка модели в режиме вывода.
keras_gtf = prototype(verbose=1); keras_gtf.Prototype("Fire-detection", "mobilenet_v2", eval_infer=True); #uncomment to use these model #keras_gtf.Prototype("Fire-detection", "densenet121", eval_infer=True); #keras_gtf.Prototype("Fire-detection", "densenet201", eval_infer=True);
Сделать вывод на некоторых образцах
img_name = "workspace/Fire-detection/test/1.jpg" predictions = gtf.Infer(img_name=img_name); from IPython.display import Image Image(filename=img_name, height=300, width=300)
img_name = "workspace/Fire-detection/test/9.jpg" predictions = keras_gtf.Infer(img_name=img_name) #Display from IPython.display import Image Image(filename=img_name, height=300, width=300)
img_name = "workspace/Fire-detection/test/11.jpg" predictions = keras_gtf.Infer(img_name=img_name) #Display from IPython.display import Image Image(filename=img_name, height=300, width=300)
img_name = "workspace/Fire-detection/test/5.jpg" predictions = keras_gtf.Infer(img_name=img_name) #Display from IPython.display import Image Image(filename=img_name, height=300, width=300)
Дополнительные примеры см. В записной книжке.
3. Обучение классификатора с нуля.
Предстоящее содержание
- Загрузка набора данных
- Импорт бэкэнда Keras
- Модель обучения с использованием mobilenet_v2 в качестве архитектуры трансферного обучения
- Модель обучения с использованием desnenet121 в качестве архитектуры трансферного обучения
- Модель обучения с использованием densenet201 в качестве архитектуры трансферного обучения
- Сравнивая все модели.
Загрузка набора данных
Кредиты набора данных:
- Https://www.kaggle.com/phylake1337/fire-dataset
- Https://www.kaggle.com/ritupande/fire-detection-from-cctv
#since dataset is from kaggle we have to install it ! pip install -q kaggle ! mkdir ~/.kaggle ! cp kaggle.json ~/.kaggle/ ! chmod 600 ~/.kaggle/kaggle.json ! kaggle datasets download -d ritupande/fire-detection-from-cctv ! unzip -qq fire-detection-from-cctv.zip -d fire-dataset
Импорт бэкэнда Keras
#Using keras backend #when installed using pip from monk.keras_prototype import prototype # When installed manually (Uncomment the following) #import os #import sys #sys.path.append("monk_v1/"); #sys.path.append("monk_v1/monk/"); #from monk.keras_prototype import prototype
Модель обучения с использованием mobilenet_v2 в качестве архитектуры трансферного обучения
Шаг 1. Загрузите эксперимент и вставьте данные. Для более подробной информации посетите.
# Load experiment keras_gtf = prototype(verbose=1); keras_gtf.Prototype("Fire-detection", "mobilenet_v2"); # Insert data and set params in default mode keras_gtf.Default(dataset_path="fire-dataset/fire_dataset", model_name="mobilenet_v2", freeze_base_network=False, num_epochs=15)
Шаг 2: Обучение модели.
#Start Training keras_gtf.Train(); #Read the training summary generated once you run the cell and training is completed
Шаг 3: Загрузка модели в режиме вывода, чтобы проверить, что она работает.
# Load for test keras_gtf = prototype(verbose=1); keras_gtf.Prototype("Fire-detection", "mobilenet_v2", eval_infer=True);
Шаг 4: Укажите путь тестового изображения.
img_name = "workspace/Fire-detection/test/1.jpg" predictions = keras_gtf.Infer(img_name=img_name) #Display from IPython.display import Image Image(filename=img_name, height=300, width=300)
Для более подробной информации и результатов посетите Блокнот.
Модель обучения с использованием desnenet121 в качестве архитектуры трансферного обучения
Шаг 1. Загрузите эксперимент и вставьте данные. Для более подробной информации посетите.
# Load experiment keras_gtf = prototype(verbose=1); keras_gtf.Prototype("Fire-detection", "densenet121"); # Insert data and set params in default mode keras_gtf.Default(dataset_path="fire-dataset/fire_dataset", model_name="densenet121", freeze_base_network=False, num_epochs=15)
Шаг 2: Обучение модели.
#Start Training keras_gtf.Train(); #Read the training summary generated once you run the cell and training is completed
Шаг 3. Загрузка модели в режиме вывода, чтобы проверить ее работу.
# Load for test keras_gtf = prototype(verbose=1); keras_gtf.Prototype("Fire-detection", "densenet121", eval_infer=True);
Шаг 4: Укажите путь тестового изображения.
img_name = "workspace/Fire-detection/test/1.jpg" predictions = keras_gtf.Infer(img_name=img_name) #Display from IPython.display import Image Image(filename=img_name, height=300, width=300)
Для более подробной информации и результатов посетите Блокнот.
Модель обучения с использованием desnenet201 в качестве архитектуры трансферного обучения
Шаг 1. Загрузите эксперимент и вставьте данные. Для более подробной информации посетите.
#Load experiment keras_gtf = prototype(verbose=1); keras_gtf.Prototype("Fire-detection", "densenet201"); # Insert data and set params in default mode keras_gtf.Default(dataset_path="fire-dataset/fire_dataset", model_name="densenet201", freeze_base_network=False, num_epochs=15)
Шаг 2: Обучение модели.
#Start Training keras_gtf.Train(); #Read the training summary generated once you run the cell and training is completed
Шаг 3. Загрузка модели в режиме вывода, чтобы проверить ее работу.
# Load for test keras_gtf = prototype(verbose=1); keras_gtf.Prototype("Fire-detection", "densenet201", eval_infer=True);
Шаг 4: Укажите путь тестового изображения.
img_name = "workspace/Fire-detection/test/1.jpg" predictions = keras_gtf.Infer(img_name=img_name) #Display from IPython.display import Image Image(filename=img_name, height=300, width=300)
Для более подробной информации и результатов посетите Блокнот.
Сравнивая все модели.
Шаг 1: Использование класса сравнения библиотеки Monk. Для более подробной информации посетите.
# Invoke the comparison class from monk.compare_prototype import compare
Шаг 2: Создание и управление сравнительными экспериментами. Укажите название проекта.
gtf = compare(verbose=1); gtf.Comparison("Comparison-fire-detector");
Это создает файлы и каталоги в соответствии со следующей структурой
workspace
|
|--------comparison
|
|
|-----Compare-fire-detection
|
|------stats_best_val_acc.png
|------stats_max_gpu_usage.png
|------stats_training_time.png
|------train_accuracy.png
|------train_loss.png
|------val_accuracy.png
|------val_loss.png
|-----comparison.csv (Contains necessary details of all experiments)
Шаг 3: Шаг 3: Добавление экспериментов к объекту сравнения.
- Первый аргумент - название проекта.
- Второй аргумент - название эксперимента.
#Add the trained models gtf.Add_Experiment("Fire-detection", "mobilenet_v2"); gtf.Add_Experiment("Fire-detection", "densenet121"); gtf.Add_Experiment("Fire-detection", "densenet201");
Шаг 4: Запустите анализ. На этом этапе создается семь изображений.
gtf.Generate_Statistics();
Шаг 5: Визуализируйте показатели сравнения исследований.
- Кривые точности тренировки
- Кривые тренировочных потерь
- Кривые точности проверки
- Кривые валидационных потерь
- Время обучения занято.
- Лучшая точность проверки.
4. Выводы
- Библиотека Monk позволяет студентам, исследователям и конкурентам легко создавать модели глубокого обучения и пробовать различные настройки гиперпараметров для повышения точности модели.
- Предварительно обученную модель можно загрузить и использовать напрямую, не углубляясь в создание модели.
- Из приведенных выше графиков видно, что в этом наборе данных densenet121 превосходит другие модели.
- Время, затрачиваемое моделью densenet201, составляет примерно 1500 секунд, что примерно на 50% больше, чем у densenet121, и примерно на 60% больше, чем у mobilenet_v2.
- Разница во времени обучения связана с разницей в количестве обучающих слоев.
Спасибо за прочтение.
Следуйте другому примеру
Привет, я Рохит, я BTech. студент последнего курса. У меня есть знания в области машинного обучения и глубокого обучения. Мне интересно работать в сфере AI и ML. В настоящее время я работаю стажером по компьютерному зрению в Tessellate Imaging. Свяжитесь со мной в LinkedIn.