Автор сценария Томаш Бонус и Томаш Голан.

Вступление

Подсчет объектов на изображениях - одна из фундаментальных задач компьютерного зрения. Он имеет множество приложений, в частности:

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

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

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

Обычный способ подсчета объектов с использованием DL - сначала обнаружить их с помощью сверточных нейронных сетей, например GCNet [1], а затем подсчитайте все найденные экземпляры. Это эффективно, но требует аннотаций ограничивающего прямоугольника, как показано на рис. 1 (слева), которые трудно получить. Чтобы решить эту проблему, в альтернативных подходах используются точечные аннотации положений объектов (см. Рис. 1 справа), которые намного дешевле собрать.

В этой статье мы описываем наши исследования по подсчету объектов на изображениях с полностью сверточными сетями (FCN), обученными на данных с точечными аннотациями. В следующих разделах представлены сведения о модели, которую мы использовали, вместе с реализацией, рассматриваемыми наборами данных и полученными результатами.

Метод

Мы начали с подхода, описанного в [7]. Основная идея состоит в том, чтобы подсчитывать объекты косвенно, оценивая карту плотности. Первый шаг - подготовить обучающие выборки, чтобы для каждого изображения была соответствующая карта плотности. Рассмотрим пример, показанный на рис. 2.

Изображение, представленное на рис. 2 (слева), аннотировано точками в положении голов пешеходов (рис. 2 справа). Карта плотности получается путем применения свертки с гауссовым ядром (и нормализована так, чтобы ее интегрирование давало количество объектов). Карта плотности для приведенного выше примера представлена ​​на рис.3.

Теперь цель состоит в том, чтобы обучить полностью сверточную сеть отображать изображение на карту плотности, которую впоследствии можно интегрировать для получения количества объектов. До сих пор мы рассматривали две архитектуры FCN: U-Net [8] и сеть с полной сверточной регрессией (FCRN) [7].

U-Net

U-Net - это широко используемый FCN для сегментации изображений, который очень часто применяется к биомедицинским данным. Он имеет структуру, подобную автоэнкодеру (см. Рис. 4). Входное изображение обрабатывается блоком сверточных слоев, за которым следует слой объединения (понижающая дискретизация). Эта процедура повторяется несколько раз на выходах последующих блоков, что показано в левой части рис. 4. Таким образом, сеть кодирует (и сжимает) ключевые особенности входного изображения. Вторая часть U-Net является симметричной, но слои объединения заменяются повышающей дискретизацией, так что выходные размеры соответствуют размеру входного изображения. Информация из слоев с более высоким разрешением в части понижающей дискретизации передается на соответствующие слои в части повышающей дискретизации, что позволяет повторно использовать изученные функции более высокого уровня для более точного декодирования сжатых слоев.

FCRN

Сеть с полной сверточной регрессией (FCRN) была предложена в [7]. Архитектура очень похожа на U-Net. Основное отличие состоит в том, что информация от слоев с более высоким разрешением из части понижающей дискретизации не передается непосредственно в соответствующие слои в части повышающей дискретизации. В статье предлагаются две сети: FCRN-A и FCRN-B, которые различаются по интенсивности понижающей дискретизации. В то время как FCRN-A выполняет объединение каждого сверточного уровня, FCRN-B выполняет это на каждом втором уровне.

Реализация

Нашу реализацию можно найти здесь. Он основан на коде из Weidi Xi’s GitHub, но вместо Keras используется PyTorch.

В настоящее время внедрены U-Net и FCRN-A. Оба они используют три сверточных блока понижающей дискретизации и три сверточных блока повышающей дискретизации с фиксированным размером фильтра 3 × 3. По умолчанию в каждом блоке есть два сверточных слоя для U-Net и один для FCRN-A. Для U-Net мы сохраняем постоянное количество фильтров для всех сверточных слоев, а для FCRN-A мы увеличиваем это число на каждом последующем уровне, чтобы компенсировать потерю информации с более высоким разрешением, вызванную объединением (которая не передается напрямую, как в случае U-Net).

Сверточный блок

Основной частью построения U-Net и FCRN является сверточный блок, состоящий из сверточного слоя, пакетной нормализации и функции активации:

Функция conv_block создает N сверточных слоев с OUT количеством фильтров с ReLU функцией активации и пакетной нормализацией, применяемой к каждому слою.

Архитектура FCRN-A

Архитектура FCRN-A получается путем наложения нескольких таких блоков, за которыми следует либо понижающая дискретизация (максимальное объединение), либо повышающая дискретизация слоев:

Архитектура U-Net

U-Net также требует конкатенации вывода пути понижающей дискретизации с вводом соответствующего уровня в части повышающей дискретизации, которая выполняется классом ConvCat:

Часть понижающей дискретизации U-Net построена так же, как и в случае с FCRN:

Однако, как упоминалось выше, повышающая дискретизация использует класс ConvCat:

Данные

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

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

Мы предоставляем скрипт get_data.py для предварительной обработки всех рассматриваемых наборов данных в общий формат, хранящийся в файлах HDF5. Каждая запись состоит из изображения и соответствующей метки (карты плотности), созданной с помощью generate_labelfunction:

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

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

Набор данных флуоресцентных клеток

Набор данных флуоресцентных клеток (FC) генерируется Visual Geometry Group (VGG) с вычислительной структурой из [9]. Его можно скачать с сайта VGG. Пример изображения вместе с сгенерированной картой плотности представлен на рис.5.

Набор данных пешеходов UCSD

Набор данных UCSD [10] содержит видеозаписи пешеходов, записанные на пешеходных дорожках в кампусе Калифорнийского университета в Сан-Диего. Он широко используется для решения различных задач, таких как подсчет, сегментация движения и анализ поведения пешеходов. Его можно скачать с сайта Лаборатории статистических визуальных вычислений. Пример изображения вместе с сгенерированной картой плотности представлен на рис.6.

Набор данных торгового центра

Набор данных Mall [3–6] был создан для подсчета посетителей и профилирования. Он содержит видео, записанное общедоступной веб-камерой. Каждый кадр помечен положением головы каждого пешехода. Его можно скачать здесь. Пример изображения вместе с сгенерированной картой плотности представлен на рис.3.

Метод подсчета объектов на изображениях путем интеграции карты предполагаемой плотности уже применялся как к флуоресцентным клеткам, так и к наборам данных UCSD [11]. Мы выбрали набор данных торгового центра в качестве тестового набора данных для метода.

Полученные результаты

Как указано выше, были протестированы две модели, а именно U-Net и FCRN. Используя U-Net, мы смогли добиться более точных результатов, поэтому ниже мы представляем наши результаты, полученные с этой архитектурой.

В таблице ниже представлена ​​сводка наших результатов для каждого набора данных с минимальным и максимальным количеством объектов в проверочных наборах и полученной средней абсолютной ошибкой (MAE).

Мы использовали стандартное определение MAE:

где ti - истина, а pi - прогнозируемое количество объектов для i -го образца.

       Dataset      | Min. #objects | Max. #objects | MAE  
 -------------------|---------------|---------------|------ 
  Fluorescent cells |            74 |           317 | 1.89 
  UCSD              |            20 |            47 | 2.27 
  Mall              |            20 |            48 | 2.86

Графики разброса для истинного (ti) и прогнозируемого (pi) количества объектов для каждого образца проверки представлены на рис. 7–9. Как и ожидалось, модель хорошо справляется с относительно простым набором данных флуоресцентных клеток, несмотря на большое количество объектов на одном изображении. Однако при подсчете пешеходов отклонение намного выше. Это может происходить из-за того, что даже специалисту по этикетированию трудно решить, следует ли учитывать человека, стоящего за растением или едва видимого из-за угла.

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

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

[1] Цао, Ю., Сюй, Дж., Лин, С., Вэй, Ф., и Ху, Х. (2019). GCNet: нелокальные сети встречаются с сетями сжатия-возбуждения и за их пределами. Препринт arXiv arXiv: 1904.11492.

[2] Лин, Т. Ю., Мэйр, М., Белонги, С., Хейс, Дж., Перона, П., Раманан, Д.,… и Зитник, К. Л. (2014, сентябрь). Microsoft coco: общие объекты в контексте. В Европейской конференции по компьютерному зрению (стр. 740–755). Спрингер, Чам.

[3] Change Loy, C., Gong, S., & Xiang, T. (2013). От полууправляемого до трансферного подсчета скоплений людей. В Proceedings of the IEEE International Conference on Computer Vision (pp. 2256–2263).

[4] Чен, К., Гонг, С., Сян, Т., и Чейндж Лой, К. (2013). Совокупное пространство атрибутов для оценки возраста и плотности скопления людей. В Труды конференции IEEE по компьютерному зрению и распознаванию образов (стр. 2467–2474).

[5] Лой, К. К., Чен, К., Гун, С., и Сян, Т. (2013). Подсчет и профилирование толпы: методология и оценка. В разделе Моделирование, симуляция и визуальный анализ толпы (стр. 347–382). Спрингер, Нью-Йорк, штат Нью-Йорк.

[6] Чен, К., Лой, К. К., Гун, С., и Сян, Т. (2012, сентябрь). Функция майнинга для локального подсчета толпы. В BMVC (Том 1, №2, стр. 3).

[7] Вейди, X., Ноубл, Дж. А., и Зиссерман, А. (2015). Подсчет клеток при микроскопии с использованием сетей полной сверточной регрессии. На 1-м семинаре по глубокому обучению, вычислению медицинских изображений и компьютерному вмешательству (MICCAI).

[8] Роннебергер, О., Фишер, П., и Брокс, Т. (2015, октябрь). U-net: Сверточные сети для сегментации биомедицинских изображений. В Международной конференции по медицинской обработке изображений и компьютерному вмешательству (стр. 234–241). Спрингер, Чам.

[9] Лехмуссола, А., Руусувуори, П., Селинумми, Дж., Хуттунен, Х., и Или-Харья, О. (2007). Вычислительная структура для моделирования изображений флуоресцентного микроскопа с популяциями клеток. Транзакции IEEE по медицинской визуализации, 26 (7), 1010–1016.

[10] Чан, А. Б., Лян, З. С. Дж., И Васконселос, Н. (2008 г., июнь). Мониторинг толпы с сохранением конфиденциальности: подсчет людей без моделей или отслеживания людей. В конференции 2008 г. IEEE по компьютерному зрению и распознаванию образов (стр. 1–7). IEEE.

[11] Лемпицкий В., Зиссерман А. (2010). Учимся считать предметы на изображениях. В книге Достижения в области нейронных систем обработки информации (стр. 1324–1332).