Агенты по недвижимости тратят много времени на просеивание огромных объемов графических данных, чтобы определить, какие из них использовать в рекламе недвижимости. Это задача классификации изображений недвижимости, цель которой состоит в том, чтобы классифицировать изображения с соответствующими классами с высокой точностью.
Это сквозное тематическое исследование классификатора изображений недвижимости, включая создание модели.
Бизнес-проблема:
Размещение фотографий является необходимой частью рекламы дома для продажи. Агенты обычно сортируют десятки изображений, из которых выбирают наиболее подходящие. Это ручная работа, включающая аннотирование изображений, сопровождаемых описаниями (спальня, ванная, чердак и т. д.). Когда объемы малы, аннотирование вручную не является проблемой, но есть момент, когда это становится слишком обременительным и, в конечном счете, невыполнимым.
ссылка: эта информация взята из исследовательской работы 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
Трансферное обучение:
Трансферное обучение — это повторное использование предварительно обученной модели для решения новой задачи. В настоящее время он очень популярен в глубоком обучении, потому что может обучать глубокие нейронные сети со сравнительно небольшим объемом данных. Это очень полезно в области науки о данных, поскольку большинство реальных задач обычно не имеют миллионов помеченных точек данных для обучения таких сложных моделей.
Предварительно обученные модели, которые мы используем:
ВГГ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:
Линкедин:
Набор данных: