Компьютерное зрение, Глубокое обучение

Обнаружение пожара с использованием изображений с камер видеонаблюдения - приложение Monk Library

Статья о том, как использовать библиотеку Monk в реальных приложениях, таких как обнаружение пожара.

Цель

Подробное руководство доступно на GitHub.

О наборе данных.

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

О библиотеке Monk и о том, как Monk упрощает классификацию изображений

  • Пишите меньше кода и создавайте сквозные приложения.
  • Изучите только один синтаксис и создавайте приложения, используя любую библиотеку глубокого обучения - PyTorch, mxnet, Keras, TensorFlow и т. Д.
  • Легко управляйте всем своим проектом с помощью нескольких экспериментов.

Для кого построена эта библиотека

  • Студенты: беспрепятственно изучают компьютерное зрение, используя наши комплексные учебные дорожные карты.
  • Исследователи и разработчики: создавайте и управляйте несколькими проектами глубокого обучения.
  • Участники соревнований на Kaggle, Codalab, HackerEarth, AiCrowd и др.

Оглавление

  1. Установить Monk
  2. Использование предварительно обученной модели для обнаружения пожара
  3. Обучение классификатору с нуля
  • Загрузка набора данных
  • Импорт серверной части 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 в качестве архитектуры трансферного обучения
  • Сравнивая все модели.

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

Кредиты набора данных:

  1. Https://www.kaggle.com/phylake1337/fire-dataset
  2. 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. Выводы

  1. Библиотека Monk позволяет студентам, исследователям и конкурентам легко создавать модели глубокого обучения и пробовать различные настройки гиперпараметров для повышения точности модели.
  2. Предварительно обученную модель можно загрузить и использовать напрямую, не углубляясь в создание модели.
  3. Из приведенных выше графиков видно, что в этом наборе данных densenet121 превосходит другие модели.
  4. Время, затрачиваемое моделью densenet201, составляет примерно 1500 секунд, что примерно на 50% больше, чем у densenet121, и примерно на 60% больше, чем у mobilenet_v2.
  5. Разница во времени обучения связана с разницей в количестве обучающих слоев.

Спасибо за прочтение.

Следуйте другому примеру

Https://towardsdatascience.com/image-classifier-house-room-type-classification-using-monk-library-d633795a42ef

Привет, я Рохит, я BTech. студент последнего курса. У меня есть знания в области машинного обучения и глубокого обучения. Мне интересно работать в сфере AI и ML. В настоящее время я работаю стажером по компьютерному зрению в Tessellate Imaging. Свяжитесь со мной в LinkedIn.