13.8 Семейство R-CNN
Помимо одноступенчатого обнаружения с несколькими окнами, описанного в разделе 13.7, одним из первых шагов в применении глубоких моделей к обнаружению объектов стали свёрточные нейронные сети на основе областей (region-based CNN, или regions with CNN features, R-CNN) (Girshick et al., 2014). В этом разделе мы рассмотрим R-CNN и несколько его улучшений: быстрый R-CNN (Fast R-CNN) (Girshick, 2015), более быстрый R-CNN (Faster R-CNN) (Ren et al., 2015) и R-CNN с масками (Mask R-CNN) (He et al., 2017). Из-за ограниченного объёма мы опишем лишь основные идеи этих моделей.
13.8.1 R-CNN
R-CNN сначала выбирает из входного изображения несколько (например, 2000) предложенных областей (region proposals). Выбирать их можно и с помощью якорных рамок. Каждая область размечается классом и ограничивающей рамкой (например, смещением) (Girshick et al., 2014). Затем свёрточная нейронная сеть выполняет прямое распространение для каждой предложенной области и извлекает её признаки. Далее по признакам каждой предложенной области предсказываются класс и ограничивающая рамка.
Рис. 13.8.1. Модель R-CNN
На рис. 13.8.1 показана модель R-CNN. Конкретно, R-CNN включает четыре шага:
- Применить к входному изображению выборочный поиск (selective search), чтобы выбрать несколько качественных предложенных областей (Uijlings et al., 2013). Такие области обычно выбираются на нескольких масштабах и имеют разную форму и размер. Каждой предложенной области назначаются класс и истинная ограничивающая рамка;
- Выбрать предобученную свёрточную нейронную сеть и обрезать её перед выходным слоем. Каждую предложенную область привести к размеру, нужному сети, и выполнить прямое распространение, чтобы получить признаки предложенной области;
- Использовать признаки каждой предложенной области вместе с её размеченным классом как обучающий пример. Обучить несколько машин опорных векторов (SVM) для классификации объектов, где каждая машина определяет, принадлежит ли пример определённому классу;
- Использовать признаки каждой предложенной области вместе с её размеченной ограничивающей рамкой как обучающий пример. Обучить модель линейной регрессии, которая предсказывает истинную ограничивающую рамку.
Хотя модель R-CNN эффективно извлекает признаки изображения с помощью предобученной свёрточной сети, она работает медленно. Представим, что из одного изображения выбирается тысяча предложенных областей. Тогда для обнаружения объектов потребуется тысяча прямых распространений свёрточной сети. Такой большой объём вычислений затрудняет широкое применение R-CNN на практике.
13.8.2 Fast R-CNN
Главное узкое место R-CNN в том, что прямое распространение свёрточной сети для каждой предложенной области выполняется независимо, без совместного использования вычислений. Поскольку эти области часто перекрываются, независимое извлечение признаков приводит к повторным вычислениям. Одно из главных улучшений в Fast R-CNN (Girshick, 2015) по сравнению с R-CNN состоит в том, что прямое распространение свёрточной сети выполняется только один раз — для всего изображения.
Рис. 13.8.2. Модель Fast R-CNN
На рис. 13.8.2 показана модель Fast R-CNN. Её основные вычисления таковы:
- По сравнению с R-CNN свёрточная сеть, которая извлекает признаки в Fast R-CNN, получает на вход всё изображение, а не отдельные предложенные области. Кроме того, эта сеть обычно обучается вместе с остальной моделью. Пусть входом служит одно изображение, а форма выхода свёрточной сети — ;
- Пусть выборочный поиск выдал предложенных областей. Эти области разной формы на выходе свёрточной сети задают области интереса (RoI) разной формы. Затем из этих областей интереса нужно извлечь признаки одинаковой формы (например, с заданной высотой и шириной ), чтобы их можно было объединить на выходе. Для этого Fast R-CNN вводит пулинг по областям интереса (RoI pooling): на вход он получает выход свёрточной сети и предложенные области, а на выход выдаёт объединённые признаки каждой предложенной области формы ;
- С помощью полносвязного слоя форма выхода приводится к , где гиперпараметр зависит от архитектуры модели;
- Для каждой из предложенных областей предсказываются класс и ограничивающая рамка. Точнее, при предсказании класса и рамки выход полносвязного слоя преобразуется в выход формы ( — число классов) и выход формы соответственно. Классы предсказываются с помощью softmax-регрессии.
Пулинг по областям интереса, введённый в Fast R-CNN, отличается от пулинга из раздела 6.5. В обычном пулинге форма выхода задаётся косвенно — через размер окна, заполнение и шаг. Пулинг по областям интереса позволяет напрямую задать форму выхода для каждой области.
Например, зададим высоту и ширину выхода для каждой области равными и . Для любой области интереса формы её делят на сетку подокон , где размер каждого подокна примерно равен . На практике высоту и ширину каждого подокна округляют вверх, а максимальный элемент подокна становится его выходом. Поэтому пулинг по областям интереса извлекает признаки одинаковой формы из областей интереса разной формы.
Для иллюстрации на рис. 13.8.3 показан вход , из которого мы выбрали область интереса в левом верхнем углу. Для этой области с помощью пулинга по областям интереса мы получаем выход . Обратите внимание: четыре разделённых подокна содержат элементы 0, 1, 4, 5 (максимум 5); 2, 6 (максимум 6); 8, 9 (максимум 9); и 10.
Рис. 13.8.3. Пулинг по областям интереса
Ниже мы показываем, как вычисляется пулинг по областям интереса. Пусть признаки X, которые извлекла свёрточная сеть, имеют высоту и ширину 4 и один канал.
MXNet:
from mxnet import np, npx
npx.set_np()
X = np.arange(16).reshape(1, 1, 4, 4)
X
PyTorch:
import torch
import torchvision
X = torch.arange(16.).reshape(1, 1, 4, 4)
X
PaddlePaddle:
import warnings
warnings.filterwarnings("ignore")
import paddle
import paddle.vision as paddlevision
X = paddle.reshape(paddle.arange(16, dtype='float32'), (1,1,4,4))
X
Допустим также, что высота и ширина входного изображения равны 40 пикселям, а выборочный поиск выдал на нём две предложенные области. Каждая область описывается пятью элементами: классом области и координатами левого верхнего и правого нижнего углов.
MXNet:
rois = np.array([[0, 0, 0, 20, 20], [0, 0, 10, 30, 30]])
PyTorch:
rois = torch.Tensor([[0, 0, 0, 20, 20], [0, 0, 10, 30, 30]])
PaddlePaddle:
rois = paddle.to_tensor([[0, 0, 20, 20], [0, 10, 30, 30]]).astype('float32')
Поскольку высота и ширина X в 10 раз меньше, чем у входного изображения, координаты двух предложенных областей сначала умножаются на spatial_scale, равный 0.1. Затем на X отмечаются две области интереса X[:, :, 0:3, 0:3] и X[:, :, 1:4, 0:4]. Наконец, в пулинге по областям интереса каждая область делится на сетку подокон, и из неё извлекаются признаки одной и той же формы .
MXNet:
npx.roi_pooling(X, rois, pooled_size=(2, 2), spatial_scale=0.1)
PyTorch:
torchvision.ops.roi_pool(X, rois, output_size=(2, 2), spatial_scale=0.1)
PaddlePaddle:
boxes_num = paddle.to_tensor([len(rois)]).astype('int32')
paddlevision.ops.roi_pool(X, rois, boxes_num, output_size=(2, 2), spatial_scale=0.1)
13.8.3 Faster R-CNN
Чтобы точно обнаруживать объекты, модели Fast R-CNN обычно требуется много предложенных областей, которые создаёт выборочный поиск. Faster R-CNN (Ren et al., 2015) предлагает заменить выборочный поиск на сеть предложения областей (region proposal network). Это позволяет уменьшить число предложенных областей и сохранить точность обнаружения.
Рис. 13.8.4. Модель Faster R-CNN
На рис. 13.8.4 показана модель Faster R-CNN. По сравнению с Fast R-CNN в Faster R-CNN меняется только способ создания предложенных областей: вместо выборочного поиска используется сеть предложения областей, а остальная часть модели остаётся прежней. Конкретно, вычисления в сети предложения областей такие:
- Преобразовать выход свёрточной сети с помощью свёрточного слоя с заполнением 1, а число выходных каналов обозначить . Тогда каждый элемент карты признаков, которую извлекла свёрточная сеть для изображения, получает новый признак длины ;
- С центром в каждом пикселе карты признаков создать несколько якорных рамок разного размера и соотношения сторон и разметить их;
- По признаку длины в центральном элементе якорной рамки предсказать её бинарный класс (объект или фон) и ограничивающую рамку;
- С помощью подавления немаксимумов удалить похожие результаты среди предсказанных ограничивающих рамок, класс которых — объект. Оставшиеся предсказанные ограничивающие рамки и являются предложенными областями, которые нужны пулингу по областям интереса.
Стоит отметить, что сеть предложения областей — часть модели Faster R-CNN и обучается вместе со всей моделью. Иными словами, целевая функция Faster R-CNN включает не только предсказание классов и ограничивающих рамок для обнаружения объектов, но и предсказание бинарных классов и ограничивающих рамок якорных рамок в сети предложения областей. В результате сквозного обучения сеть предложения областей учится генерировать качественные предложенные области. Благодаря этому модель сохраняет точность обнаружения даже при меньшем числе предложенных областей.
13.8.4 Mask R-CNN
Если в обучающем наборе для каждого объекта также размечено его положение на уровне пикселей изображения, то Mask R-CNN (He et al., 2017) может эффективно использовать эту подробную разметку, чтобы дополнительно повысить точность обнаружения.
Рис. 13.8.5. Модель Mask R-CNN
Как показано на рис. 13.8.5, Mask R-CNN построена на основе Faster R-CNN. Конкретно, Mask R-CNN заменяет пулинг по областям интереса на слой выравнивания областей интереса (RoI align), который использует билинейную интерполяцию (bilinear interpolation), чтобы сохранить пространственную информацию карты признаков. Это делает модель более пригодной для предсказаний на уровне пикселей. Выход слоя выравнивания содержит признаки одинаковой формы для всех областей интереса. Они используются не только для предсказания класса и ограничивающей рамки каждой области интереса, но и для предсказания положения объекта на уровне пикселей с помощью дополнительной полносвёрточной сети. Следующие разделы главы подробнее расскажут, как с помощью полносвёрточных сетей предсказывать семантику на уровне пикселей изображения.
Резюме
- R-CNN выбирает из изображения несколько предложенных областей, для каждой из них выполняет прямое распространение свёрточной сети, чтобы извлечь признаки, а затем по этим признакам предсказывает класс и ограничивающую рамку предложенной области.
- Fast R-CNN — главное улучшение R-CNN: прямое распространение свёрточной сети выполняется только для всего изображения. Кроме того, он вводит пулинг по областям интереса, который извлекает признаки одинаковой формы из областей интереса разной формы.
- Faster R-CNN заменяет выборочный поиск из Fast R-CNN на обучаемую сеть предложения областей. Благодаря этому число предложенных областей уменьшается, а точность обнаружения сохраняется.
- Mask R-CNN добавляет к Faster R-CNN полносвёрточную сеть, которая использует положения объектов на уровне пикселей и дополнительно повышает точность обнаружения.
Упражнения
- Можно ли рассматривать обнаружение объектов как задачу регрессии, например предсказывать ограничивающие рамки и вероятности классов? Можно опереться на архитектуру YOLO (Redmon et al., 2016).
- Сравните одноступенчатое обнаружение с несколькими окнами и методы из этого раздела. В чём их главное различие? Можно посмотреть рисунок 2 в статье (Zhao et al., 2019).
MXNet: Обсуждение
PyTorch: Обсуждение
PaddlePaddle: Обсуждение
Литература
- Girshick, R. (2015). Fast R-CNN. Proceedings of the IEEE International Conference on Computer Vision, 1440–1448.
- Girshick, R., Donahue, J., Darrell, T., & Malik, J. (2014). Rich feature hierarchies for accurate object detection and semantic segmentation. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 580–587.
- Zhao, Z.-Q., Zheng, P., Xu, S.-T., & Wu, X. (2019). Object detection with deep learning: A review. IEEE Transactions on Neural Networks and Learning Systems, 30(11), 3212–3232.
- He, K., Gkioxari, G., Dollár, P., & Girshick, R. (2017). Mask R-CNN. Proceedings of the IEEE International Conference on Computer Vision, 2961–2969.
- Ren, S., He, K., Girshick, R., & Sun, J. (2015). Faster R-CNN: Towards real-time object detection with region proposal networks. Advances in Neural Information Processing Systems, 91–99.
- Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. (2016). You only look once: Unified, real-time object detection. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 779–788.
- Uijlings, J. R. R., Van De Sande, K. E. A., Gevers, T., & Smeulders, A. W. M. (2013). Selective search for object recognition. International Journal of Computer Vision, 104(2), 154–171.