O py-R-FCN é um framework para detecção de objetos baseado em Redes Totalmente Convolucionais baseadas em Regiões (Region-based Fully Convolutional Networks - R-FCN). Ele suporta treinamento conjunto e uso com Python, oferecedno uma solução eficiente para pesquisadores e desenvolvedores de visão computacional. Este projeto é uma modificação da implementação oficial do R-FCN e do código do py-faster-rcnn, apresentando uma metodologia de uso semelhante, com o acréscimo de funcionalidades avançadas como regressão de caixa delimitadora indeepndente de classe e OHEM (Online Hard Example Mining).
Recursos e Vantagens Principais
Como ferramenta profissional de detecção de objetos, o py-R-FCN apresenta as seguintes características notáveis:
- Alta Precisão na Detecção: Alcança 79,4% de mAP@0.5 no conjunto de teste do PASCAL VOC 2007 usando a rede ResNet-101.
- Velocidade de Processamento Eficiente: O tempo de processamento por imagem é de apenas 0,099 a 0,136 segundos em uma GPU Titan X.
- Estratégias de Treinamento Flexíveis: Suporta treinamento conjunto e otimização alternada.
- Técnicas de Otimização Avançadas: Integra regressão de caixa delimitadora independente de classe e tecnologia OHEM para mineração de exemplos difíceis.
Requisitos de Ambiente e Instalação
Requisitos de Hardware
- GPU NVIDIA (com 6GB ou mais de memória; modelos ResNet-50 requerem pelo menos 4GB).
Requisitos de Software
- Versão Microsoft do Caffe (commit específico: 1a2be8e).
- Pacotes Python: cython, opencv-python, easydict.
- Opcional: MATLAB (para avaliação oficial do PASCAL VOC).
Guia de Instalação Rápida
- Clonar o Repositório Principal ```
git clone https://gitcode.com/gh_mirrors/py/py-R-FCN.git
- Clonar e Configurar o Caffe ```
cd py-R-FCN
git clone https://github.com/Microsoft/caffe.git
cd caffe
git reset --hard 1a2be8e
- Compilar os Módulos Cython ```
cd ../lib
make
- Compilar o Caffe e o pycaffe ```
cd ../caffe
Configurar o Makefile.config conforme as instruções de instalação do Caffe
make -j8 && make pycaffe
Desempenho e Métricas
A tabela abaixo resume os resultados do treinamento conjunto do py-R-FCN em diferentes conjuntos de dados e arquiteturas de rede.
| Arquitetura da Rede | Dados de Treinamento | Dados de Teste | mAP@0.5 | Tempo por Imagem |
|---|---|---|---|---|
| R-FCN, ResNet-50 | VOC 07+12 trainval | VOC 07 test | 77.6% | 0.099s |
| R-FCN, ResNet-101 | VOC 07+12 trainval | VOC 07 test | 79.4% | 0.136s |
O py-R-FCN é capaz de detectar múltiplos objetos, como um cão e um gato, em uma única cena.
Utilização do Framework
Executando a Demonstração
- Baixar os Modelos Pré-treinados: Obtenha os modelos fornecidos e coloque-os no diretório
data/rfcn_models/. - Executar o Script de Demonstração: ```
python tools/exemplo_rfcn.py
Treinamento e Avaliação
O py-R-FCN inclui diversos scripts de treinamento no diretório experiments/scripts/:
- Treinamento Conjunto (End-to-End):
rfcn_end2end.sh - Treinamento Conjunto com OHEM:
rfcn_end2end_ohem.sh - Otimização Alternada com OHEM:
rfcn_alt_opt_5stage_ohem.sh
Exemplo de comando para iniciar o treinamento:
./experiments/scripts/rfcn_end2end.sh 0 ResNet-101 pascal_voc
Detecção simultânea de pessoa, cavalo e cão em uma cena externa complexa.
Recursos Adicionais
- Arquivos de Configuração:
experiments/cfgs/ - Scripts de Treinamento:
experiments/scripts/ - Utilitários para Datasets:
lib/datasets/ - Implementação da RPN:
lib/rpn/
Referência Bibliográfica
Se você utilizar o py-R-FCN em sua pesquisa, por favor considere citar o seguinte trabalho:
@article{dai16rfcn,
Author = {Jifeng Dai, Yi Li, Kaiming He, Jian Sun},
Title = {{R-FCN}: Object Detection via Region-based Fully Convolutional Networks},
Journal = {arXiv preprint arXiv:1605.06409},
Year = {2016}
}