Не ориентируйтесь только на свои показатели. Создайте базовое и интуитивное представление о том, как и почемуработает ваша модель.

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

Возможность: обнаружение каски

Я нашел интересный вариант промышленного использования машинного обучения, просматривая DataVerse Гарварда. Я нашел набор данных, содержащий изображения людей в касках и без них. Он может быть найден здесь". Набор данных содержит примерно 7000 изображений людей в касках и без каски, разделенных на поезда и тесты. Цель состояла в том, чтобы предсказать, носит ли кто-то на изображении каску или нет, что чрезвычайно важно на промышленных объектах. Таким образом, эта проблема была сформулирована как задача классификации бинарных изображений.

Забавный факт: Исследование показало, что черепно-мозговые травмы (ЧМТ) в строительной отрасли вызывают серьезную озабоченность. Фактически, в период с 2003 по 2008 год в США было зарегистрировано около 7300 ЧМТ!

Модель:

Поскольку я рассматривал свою модель для использования на промышленных объектах и ​​в ситуациях, когда все должны носить шляпу-капитан, я подумал, что просто создам простую модель CNN, которая предсказывает, будет ли найден класс «голова» на изображении. В идеале, если на изображении будет обнаружена голова, то менеджеру сайта будет отправлено уведомление о том, что кто-то небезопасен. Довольно просто, правда?

Результаты:

Я смог обучить простую трехслойную CNN с точностью 82%! Я был очень доволен результатами, пока не начал замечать интересную тенденцию, когда выбирал примеры для просмотра… точность была не такой, какой казалась.

Я начал замечать, что с фоном этих изображений, похоже, прослеживается тенденция. Если на снимке у кого-то не было каски, это выглядело потому, что на самом деле он не был на промышленной площадке. В моей голове сформировалась гипотеза: повлияет ли фон в наборах данных на то, что узнала и предсказала моя CNN?

Когда я просматривал некоторые из тепловых карт активации, я начал замечать кое-что, что подтверждало мою… моя модель CNN различает изображения в зависимости от типа фона на изображении!

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

Конечно, это было неудачей в проекте. Как я мог использовать модель, которая по сути была детектором промышленной среды, вместо детектора каски? Есть много способов решить эту конкретную проблему, но для меня это случай правильного инструмента для правильной работы. С учетом того, что окружающая среда искажает данные, мне пришлось изменить свой подход. В конце концов, я использовал детектор объектов Faster-RCNN-Inception-V2 от Google, который уменьшил этот эффект и обеспечил значительно лучшую (но не идеальную) производительность для всех изображений (как вы можете видеть ниже).

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

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

Не ориентируйтесь только на свои показатели. Создайте базовое и интуитивно понятное представление о том, как и почему работает ваша модель.