Борьба с загрязнением с помощью глубокого обучения

Авторы: Рохит Сингх; Сандип Кумар

Плотное одеяло смога окутывает Нью-Дели каждый ноябрь. В ответ правительство принимает некоторые запланированные меры, такие как закрытие школ в некоторых случаях и применение печально известной схемы нечет-четность, вытесняя с улиц половину городов. Загрязнение в Дели вызвано несколькими причинами: сезонным выжиганием стерни в соседних штатах, выбросами от транспортных средств, а также дымом от электростанций и кирпичных печей, разбросанных по столице страны. Борьба с загрязнением требует многостороннего подхода - одной государственной политики недостаточно, ее необходимо сочетать с действиями на местах.

Картинки не лгут

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

Кирпичные печи

В условиях быстрой урбанизации спрос на кирпичи растет. Производство кирпича - очень крупная традиционная отрасль во многих частях Азии. Кирпичный сектор в Индии, хотя и неорганизован, огромен. Индия является вторым по величине производителем кирпича в мире - Китай доминирует с долей 54% [1].

Обжиговые печи для кирпича являются основным источником загрязнения воздуха в Северной Индии. Производство кирпича приводит к выбросу вредных газов и твердых частиц, включая токсичные химические вещества, такие как оксид углерода и оксиды серы (SOx). Воздействие этих выбросов чрезвычайно опасно для здоровья и может повлиять на физическое и умственное развитие детей.

Большинство кирпичных печей в Индии относятся к типу стационарных печей для печи с дымоходом (FCBTK). Однако существует новая конструкция обжиговых печей, известная как Зигзагообразная печь, которая более энергоэффективна и вызывает гораздо меньшее загрязнение воздуха. Печи старой конструкции могут быть преобразованы в зигзагообразную конструкцию, что приведет к повышению эффективности, однако модернизация требует затрат, и это ведет к более медленному внедрению этой технологии.

Центральный совет по контролю за загрязнением (ЦПКБ) издал директиву в июне 2017 года, обязывающую все печи для обжига кирпича по всей Индии перейти на зигзагообразную конструкцию. В этой директиве четко указано, что печи для обжига кирпича, работающие без разрешения, будут закрыты [2]. Несмотря на директиву, многие печи для обжига кирпича все еще работают без соблюдения установленных норм проектирования.

Печи FCBTK на спутниковых снимках выглядят овальными, в то время как зигзагообразные печи новой конструкции имеют прямоугольную форму (только зигзагообразные потоки воздуха!), И это можно использовать для определения типа печи по аэрофотоснимкам / спутниковым снимкам.

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

Глубокое обучение с ArcGIS

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

  • Собранные данные обучения с помощью ArcGIS Pro
  • Обученная модель глубокого обучения с использованием arcgis.learn
  • Развернули обученную модель с помощью ArcGIS Pro

Наконец, мы создали ArcGIS Operations Dashboard для передачи результатов этого анализа.

Мы использовали слой ESRI World Imagery для обучения модели, а для сравнительного анализа мы использовали тот же слой с 2014 года (эти исторические изображения доступны в Esri's Living Atlas и могут быть просмотрены с помощью инструмента обратных изображений).

Сбор обучающих данных

Мы использовали ArcGIS Pro для отметки местоположения двух типов кирпичных печей на Esri World Imagery. Мы создали класс точечных объектов, представляющий местоположение печи для обжига кирпича, и установили поле атрибута, указывающее его тип (0 = FCBTK / овальный дизайн. 1 = зигзагообразный / прямоугольный). Чтобы упростить нашу работу, мы отметили только центральное расположение печей - нас интересует только их расположение, а не точный размер.

Экспорт данных обучения

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

Мы выбрали радиус буфера 75 метров вокруг каждой печи, так как каждая печь примерно вдвое больше (то есть около 150 метров в длину).

Формат метаданных необходимо выбирать в зависимости от типа модели, которую будет обучать. В этом случае нам пришлось обучить модель обнаружения объектов. Формат Pascal Visual Object Classes - популярный формат метаданных для задач обнаружения объектов.

На вкладке «Среды» мы можем настроить параметр «Размер ячейки» так, чтобы на каждом чипе можно было разместить от двух до трех обжиговых печей. Для этого проекта мы экспортировали чипы, используя разные значения параметра Cell Size. Этот трюк позволил нам расширить обучающие данные, создав больше обучающих чипов из того же количества помеченных лидирующих данных. Кроме того, это помогло нашей модели научиться создавать более подходящие ограничивающие рамки для обжиговых печей. Если бы мы вводили данные модели только с одним размером ячейки, она всегда предсказывала бы один и тот же размер (примерно 150 м) для каждой печи, поскольку это все данные, которые она могла бы видеть.

Обучение детектора кирпичной печи

Мы использовали Jupyter Notebooks и модуль arcgis.learn в ArcGIS API for Python для обучения модели. Модуль arcgis.learn построен на основе fast.ai и PyTorch и позволяет обучать высокоточные модели с помощью всего нескольких строк кода. Подробная документация по установке и настройке среды доступна здесь.

Мы обучили модель SingleShotDetector, названную так из-за ее способности находить все объекты на изображении (чипе) одним взглядом.

from arcgis.learn import SingleShotDetector, prepare_data

Увеличение данных

Мы использовали функцию prepare_data() для применения различных типов преобразований и дополнений к обучающим данным. Эти дополнения позволяют нам обучать лучшую модель с ограниченными данными, а также предотвращают переоснащение модели. prepare_data() принимает 3 параметра.
path: путь к папке, содержащей данные обучения.
chip_size: То же, что указано при экспорте данных обучения.
batch_size: Нет изображений, которые ваша модель будет обучать на каждом шаге внутри эпоху, это напрямую зависит от памяти вашей видеокарты и типа модели, с которой вы работаете. В этом проекте размер пакета 64 работал у нас на графическом процессоре с памятью 11 ГБ.

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

from arcgis.learn import SingleShotDetector, prepare_data
data = prepare_data(path=r'data\training data 448px 1m',
                    chip_size=448, 
                    batch_size=64)

Визуализируйте несколько примеров из ваших тренировочных данных

Чтобы разобраться в обучающих данных, мы будем использовать метод show_batch() в arcgis.learn. show_batch() случайным образом выбирает несколько выборок из обучающих данных и визуализирует их.

data.show_batch(rows=5)

На изображениях выше обозначены ограничивающие рамки печей для обжига кирпича. Ящики с 0 в качестве метки - это печи для обжига кирпича овальной формы (FCBTK), а ячейки с 1 в качестве метки - зигзагообразные.

Загрузите модель SingleShotDetector

В приведенном ниже коде создается SingleShotDetector модель - она ​​основана на популярной модели обнаружения объектов, более известной под сокращенной формой - SSD. Эта модель возвращает тип и ограничивающие рамки обнаруженных функций.

model = SingleShotDetector(data)

Найдите оптимальную скорость обучения

Недавно инициализированная модель глубокого обучения похожа на мозг только что родившегося ребенка. Он ничего не знает и учится, глядя на несколько примеров объектов, которые ему нужно научиться распознавать. Если он учится очень медленно, ему потребуется много времени, прежде чем он чему-нибудь научится. С другой стороны, если ребенок быстро делает выводы (или имеет «высокую скорость обучения» в терминологии глубокого обучения), он часто узнает неправильные вещи, и это тоже бесполезно.

Точно так же модели глубокого обучения необходимо инициализировать со скоростью обучения. Это важный гиперпараметр, значение которого следует установить до начала процесса обучения [3]. Скорость обучения - это ключевой параметр, который определяет, как мы корректируем веса нашей сети с учетом градиента потерь [4].

arcgis.learn использует средство поиска скорости обучения fast.ai, чтобы найти оптимальную скорость обучения для обучающих моделей. Мы можем использовать метод lr_find(), чтобы найти оптимальную скорость обучения, при которой наша модель может обучаться достаточно быстро.

model.lr_find()

Основываясь на графике скорости обучения выше, мы можем видеть, что скорость обучения, предложенная lr_find () для наших данных обучения, составляет около 1e-03. Мы можем использовать его для обучения нашей модели. В последней версии arcgis.learn мы можем обучать модели, даже не указывая скорость обучения. Это внутренне использует средство поиска скорости обучения, чтобы найти оптимальную скорость обучения, и использует ее.

Подходит для модели

Для обучения модели используем метод fit(). Для начала мы будем использовать 10 эпох для обучения нашей модели. Эпоха определяет, сколько раз модель подвергается воздействию всего обучающего набора.

model.fit(epochs=10, lr=0.001)

Результат метода fit() дает нам потерю (или частоту ошибок) на наборах для обучения и проверки. Это помогает нам оценить возможность обобщения модели на невидимых данных и предотвратить переобучение. Здесь, всего за 10 эпох, мы видим разумные результаты - потери как при обучении, так и при проверке значительно снизились, что указывает на то, что модель учится распознавать печи для обжига кирпича.

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

Сохраните модель

Мы сохраним модель, которую мы обучили, как «Пакет глубокого обучения» (формат «.dlpk»). Пакет глубокого обучения - это стандартный формат, используемый для развертывания моделей глубокого обучения на платформе ArcGIS.

Мы можем использовать метод save() для сохранения обученной модели. По умолчанию он сохраняется в подпапке «модели» в нашей папке с данными обучения.

model.save('ssd_brick-kiln_01')

Загрузите промежуточную модель для дальнейшего обучения

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

# model.load('ssd_brick-kiln_01')

Визуализировать результаты в наборе для проверки

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

model.show_results(rows=8, thresh=0.2)

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

Развертывание модели и обнаружение кирпичных печей

Мы можем использовать сохраненную модель для обнаружения объектов с помощью инструмента Обнаружение объектов с помощью глубокого обучения, доступного как в ArcGIS Pro, так и в ArcGIS Enterprise. . В этом проекте мы использовали слой ESRI World Imagery для обнаружения обжиговых печей.

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

Когда у нас есть обученная модель, мы можем использовать ее для обнаружения интересующих объектов полностью автоматически, просто глядя на изображения. Для сравнительного анализа мы использовали ту же модель, чтобы обнаружить печи для обжига кирпича в более старой версии слоя изображений мира ESRI 2014 года, найденном с помощью инструмента создания изображений обратного пути.

Передача результатов с помощью ArcGIS Dashboard

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

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

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

использованная литература

[1] Шейх Афифа. (2014). Обжиговые печи для кирпича: причина загрязнения атмосферы.

[2] https://www.cseindia.org/content/downloadreports/9387

[3] https://en.wikipedia.org/wiki/Hyperparameter_(machine_learning)

[4] https://towardsdatascience.com/understanding-learning-rates-and-how-it-improves-performance-in-deep-learning-d0d4059c1c10

Присоединяйтесь к нам!

В Центре исследований и разработок ESRI в Нью-Дели мы применяем передовые технологии искусственного интеллекта и глубокого обучения, чтобы произвести революцию в геопространственном анализе и получить представление о изображениях и данных о местоположении. Нам нужны специалисты по обработке данных и инженеры по продуктам. Подайте заявку онлайн здесь!