Mask R-CNN
O Mask R-CNN (He et al., 2017) é a extensão natural do faster-r-cnn, criado não apenas para detectar objetos (desenhar caixas), mas para realizar Segmentação de Instância (Instance Segmentation) — identificando os pixels exatos que pertencem a cada objeto de forma individualizada.
Como Funciona
A genialidade do Mask R-CNN foi manter o fluxo veloz do Faster R-CNN e adicionar uma pequena rede paralela (branch) encarregada exclusivamente de predizer uma máscara binária (pixel a pixel) para o objeto delimitado pela região proposta.
- Backbone e RPN: Idêntico ao faster-r-cnn. Extrai features da imagem e gera propostas de região (Region Proposals).
- RoI Align: Onde antes se usava roi-pooling (que sofria com erros de quantização severos para alinhamento em nível de pixel), o Mask R-CNN introduziu o RoIAlign. O RoIAlign usa interpolação bilinear espacial para calcular com precisão de sub-pixel o valor exato no mapa de features, mantendo o alinhamento perfeito sem arredondamentos destrutivos.
- Cabeças Paralelas (Heads): A região extraída alimenta dois caminhos independentes:
- Branch Principal: O caminho clássico para classificação e bounding box regression.
- Branch de Máscara: Uma pequena rede totalmente convolucional (FCN) que gera máscaras binárias independentes para cada uma das classes possíveis.
🧮 Fundamentação Matemática (Loss Tripartite)
O treinamento ocorre otimizando simultaneamente três tarefas distintas através de uma função de perda global combinada:
Eq. 1: Função de perda tripartite do Mask R-CNN.
Onde:
- : perda total da rede.
- : perda de classificação da ROI (o que é o objeto).
- : perda de regressão da bounding box (onde estão os limites estritos da caixa).
- : perda média de entropia cruzada binária (BCE) focada especificamente em predizer a máscara correta para a região.
A Matemática da Branch de Máscara
A branch de máscara gera uma saída de dimensão , indicando máscaras binárias de resolução (uma máscara autônoma para cada uma das classes conhecidas).
Ao contrário da segmentação semântica tradicional (onde todas as classes competem pelo mesmo pixel em um Softmax global multinomial), o Mask R-CNN desacopla completamente a classificação da máscara, aplicando Sigmoid isoladamente.
Eq. 2: Entropia cruzada binária (BCE) por pixel isolada para a classe verdadeira.
Onde:
- : a classe real (ground truth) do objeto (identificada na marcação de treino).
- : rótulo real binário do pixel ( se o pixel for do objeto, se for fundo).
- : probabilidade (saída do ativador Sigmoid) de o pixel pertencer ao objeto na máscara da classe .
- : número total de pixels na grade da máscara gerada ().
Apenas a máscara associada à classe verdadeira do objeto () contribui ativamente para a perda , ignorando totalmente as máscaras geradas para as outras classes. Esse desacoplamento evita interferências matemáticas e foi o segredo dos resultados espetaculares de segmentação do modelo.
Estrutura Interna da Branch de Máscara
Na configuração de referência para o backbone ResNet-C4, a RoI alinhada pelo roi-align chega à branch de máscara com resolução 14×14 e atravessa 4 camadas convolucionais (3×3, 256 canais, ReLU) que preservam essa resolução. Uma camada de convolução transposta (2×2, stride 2) então dobra a resolução para 28×28, e uma convolução final 1×1 produz a saída (isto é, ). Na inferência, apenas o canal correspondente à classe prevista pela branch principal é usado; a máscara de 28×28 é redimensionada por interpolação bilinear ao tamanho da caixa final e binarizada com limiar 0,5.
Resultados e Generalidade
O artigo demonstra que o framework vai além da segmentação de instância:
- Estado da arte no COCO: superou os vencedores dos desafios COCO 2015 (MNC) e 2016 (FCIS+++), atingindo 35.7 de mask AP com ResNet-101-FPN — sem nenhum truque de engenharia (“without bells and whistles”).
- Detecção de caixas como subproduto: mesmo ignorando a branch de máscara na inferência, o treinamento multi-tarefa melhora o box AP em +0.9 pontos sobre o Faster R-CNN equivalente — evidência de que as tarefas auxiliares regularizam o modelo.
- Estimativa de pose humana: modelando cada keypoint como uma máscara binária one-hot, a mesma arquitetura superou o vencedor do desafio COCO 2016 de keypoints, rodando a 5 fps. Uma única rede unificada passa a prever caixas, máscaras e poses simultaneamente.
- Generalização para Cityscapes: +30% de melhoria relativa sobre o melhor resultado anterior; o artigo ainda diagnostica honestamente um domain shift nas classes com poucos dados (truck, bus, train), onde o AP de validação diverge sistematicamente do de teste.
Referências e ferramentas
- He, K., Gkioxari, G., Dollár, P., Girshick, R. “Mask R-CNN” (2017). arXiv:1703.06870 — artigo original, código disponível no Detectron (FAIR).
Relacionadas: faster-r-cnn · roi-pooling · roi-align · evolucao-mask-rcnn