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

Это сквозное тематическое исследование классификатора изображений недвижимости, включая создание модели.

Бизнес-проблема:

Размещение фотографий является необходимой частью рекламы дома для продажи. Агенты обычно сортируют десятки изображений, из которых выбирают наиболее подходящие. Это ручная работа, включающая аннотирование изображений, сопровождаемых описаниями (спальня, ванная, чердак и т. д.). Когда объемы малы, аннотирование вручную не является проблемой, но есть момент, когда это становится слишком обременительным и, в конечном счете, невыполнимым.

ссылка: эта информация взята из исследовательской работы Md Jawadul Hasan Bappy. Проверьте это, если хотите узнать больше. Ссылка на исследовательскую работу приведена ниже в справочном разделе.

DL постановка бизнес-задачи:

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

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

Набор данных:

Набор данных содержит 5859 изображений, распределенных по 6 классам: ванная, спальня, гостиная, кухня, передний двор и задний двор. Количество изображений варьируется в зависимости от класса, но каждый класс содержит не менее 700 изображений. Изображения в формате .jpg, .jpeg и .PNG. Набор данных можно скачать по ссылке ниже.



Исследовательский анализ данных (EDA):

Вот блокнот ipython, в котором я подробно выполнял EDA.

Предварительная обработка данных:

Увеличение изображения — это наиболее часто используемый метод предварительной обработки данных изображения. Я использовал ImageDataGenerator, очень известную библиотеку keras для увеличения изображений.

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

Базовая модель:

Сначала мы начнем с обучения базовой модели CNN, а затем перейдем к более сложным моделям.

Вот блокнот ipython базовой модели. Подробный журнал обучения и оценку модели можно увидеть в этом блокноте.

Точность: 64,9%

потеря: 0,8065

ошибочно классифицированные баллы: 35

Трансферное обучение:

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

Предварительно обученные модели, которые мы используем:

  1. ВГГ16
  2. РесНет50В2
  3. НачалоV3

ВГГ16:

Вот первая модель трансферного обучения, использующая архитектуру VGG16 с весами imagenet. При этом мы не обучаем никакие слои в архитектуре (layers.trainable=false). Также мы не включаем полносвязные слои.

Точность: 90,2%

потеря: 0,4092

ошибочно классифицированные баллы: 10

Тонкая настройка VGG16:

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

Точность: 93,6%

потеря: 0,1941

ошибочно классифицированные баллы: 6

Реснет50в2:

Здесь мы тренируем модель ResNet50V2, не включая полносвязные слои.

Точность: 92,5%

потеря: 0,2407

ошибочно классифицированные баллы: 7

Тонкая настройка ResNet50V2:

Здесь мы дорабатываем нашу предыдущую модель ResNet. Это означает, что мы обучаем последние несколько уровней архитектуры ResNet50V2 так же, как мы это делали с моделью VGG16.

Точность: 95,1%

проигрыш: 0,1987

неправильно классифицированные баллы: 5

НачалоV3:

Здесь мы тренируем модель InceptionV3, не включая полносвязные слои.

Точность: 91,3%

потеря: 0,2693

ошибочно классифицированные баллы: 9

Тонкая настройка InceptionV3:

Здесь мы дорабатываем нашу предыдущую модель. Мы тренируем последние несколько уровней архитектуры InceptionV3, как мы это делали с моделью VGG16 и ResNet.

Точность: 94,2%

потеря: 0,1895

ошибочно классифицированные баллы: 6

Краткое содержание:

Как вы можете видеть в приведенной выше сводной таблице, точно настроенная модель ResNet50V2 дала нам максимальную точность 95,1%, поэтому мы будем использовать ее для развертывания.

Развертывание:

Для производства мы создаем веб-API с помощью Flask и развернем его на сервере AWS.

Веб-API на основе Flask:

HTML-шаблон:

Мы используем общедоступный шаблон веб-приложения на GitHub от imfing. Вы также можете использовать то же самое, если хотите, ссылка на github приведена ниже в справочном разделе.

Видео развертывания:

Наконец, наша модель развернута на сервере AWS, вы можете увидеть работу классификатора изображений недвижимости в этом видео.

Справочные ссылки:

Знание:



Веб-приложение:



Другие ссылки:

Репозиторий GitHub:



Линкедин:



Набор данных: