Este projeto hospeda o código para implementar o algoritmo FCOS para detecção de objetos, conforme apresentado em nosso artigo:
FCOS: Fully Convolutional One-Stage Object Detection;
Zhi Tian, Chunhua Shen, Hao Chen, and Tong He;
In: Proc. Int. Conf. Computer Vision (ICCV), 2019.
arXiv preprint arXiv:1904.01355
O papel completo está disponível em: https://arxiv.org/abs/1904.01355.
A implementação baseada no Detectron2 está incluída no Adelaidet.
Um modelo em tempo real com 46fps e 40,3 em AP no Coco Minival também está disponível aqui.
Usamos 8 GPUs NVIDIA V100.
Mas 4 1080TI GPUs também podem treinar um FCOS baseado em resnet-50-fpn de pleno direito, já que os FCOs são eficientes em termos de memória.
Para usuários que desejam apenas usar o FCOS como detector de objetos em seus projetos, eles podem instalá -lo por PIP. Para fazer isso, corra:
pip install torch # install pytorch if you do not have it
pip install git+https://github.com/tianzhi0549/FCOS.git
# run this command line for a demo
fcos https://github.com/tianzhi0549/FCOS/raw/master/demo/images/COCO_val2014_000000000885.jpg
Confira aqui o uso da interface.
Essa implementação do FCOS é baseada na marca MaskRCNN. Portanto, a instalação é a mesma que a benchmark original do MaskRCNN.
Por favor, verifique o install.md para obter instruções de instalação. Você também pode querer ver o readme.md original da benchmark maskrcnn.
Depois que a instalação for concluída, você pode seguir as etapas abaixo para executar uma demonstração rápida.
# assume that you are under the root directory of this project,
# and you have activated your virtual environment if needed.
wget https://huggingface.co/tianzhi/FCOS/resolve/main/FCOS_imprv_R_50_FPN_1x.pth?download=true -O FCOS_imprv_R_50_FPN_1x.pth
python demo/fcos_demo.py
A linha de comando de inferência na divisão de Coco Minival:
python tools/test_net.py
--config-file configs/fcos/fcos_imprv_R_50_FPN_1x.yaml
MODEL.WEIGHT FCOS_imprv_R_50_FPN_1x.pth
TEST.IMS_PER_BATCH 4
Observe que:
FCOS_imprv_R_50_FPN_1x.pth por seu próprio.TEST.IMS_PER_BATCH para 1.--config-file para o arquivo de configuração (em Configs/FCOs) e MODEL.WEIGHT em seu arquivo de pesos.Para sua conveniência, fornecemos os seguintes modelos treinados (mais modelos estão chegando em breve).
Resne (x) ts:
Todos os modelos baseados em resne (x) são treinados com 16 imagens em uma mini-lote e normalização de lote congelada (ou seja, consistente com os modelos em Maskrcnn_benchmark).
| Modelo | Treinamento em várias escalas | Tempo de teste / im | AP (Minival) | Link |
|---|---|---|---|---|
| FCOS_IMPRV_R_50_FPN_1X | Não | 44ms | 38.7 | download |
| FCOS_IMPRV_DCNV2_R_50_FPN_1X | Não | 54ms | 42.3 | download |
| FCOS_IMPRV_R_101_FPN_2X | Sim | 57ms | 43.0 | download |
| FCOS_IMPRV_DCNV2_R_101_FPN_2X | Sim | 73ms | 45.6 | download |
| FCOS_IMPRV_X_101_32X8D_FPN_2X | Sim | 110ms | 44.0 | download |
| FCOS_IMPRV_DCNV2_X_101_32X8D_FPN_2X | Sim | 143ms | 46.4 | download |
| FCOS_IMPRV_X_101_64X4D_FPN_2X | Sim | 112ms | 44.7 | download |
| FCOS_IMPRV_DCNV2_X_101_64X4D_FPN_2X | Sim | 144ms | 46.6 | download |
Observe que imprv denota improvements em nossa Tabela 3 de papel. Essas alterações quase livres de custo melhoram o desempenho em ~ 1,5% no total. Assim, é altamente recomendável usá -los. A seguir, são apresentados os modelos originais apresentados em nosso artigo inicial.
| Modelo | Treinamento em várias escalas | Tempo de teste / im | AP (Minival) | AP (teste-dev) | Link |
|---|---|---|---|---|---|
| FCOS_R_50_FPN_1X | Não | 45ms | 37.1 | 37.4 | download |
| FCOS_R_101_FPN_2X | Sim | 59ms | 41.4 | 41.5 | download |
| FCOS_X_101_32X8D_FPN_2X | Sim | 110ms | 42.5 | 42.7 | download |
| FCOS_X_101_64X4D_FPN_2X | Sim | 113ms | 43.0 | 43.2 | download |
Mobilenets:
Atualizamos a normalização do lote para modelos baseados em mobilenet. Se você deseja usar o SyncBN, instale o Pytorch 1.1 ou posterior.
| Modelo | TAMANHO DE TREINAMENTO TAMANHO | Treinamento em várias escalas | Tempo de teste / im | AP (Minival) | Link |
|---|---|---|---|---|---|
| Fcos_syncbn_bs32_c128_mnv2_fpn_1x | 32 | Não | 26ms | 30.9 | download |
| Fcos_syncbn_bs32_mnv2_fpn_1x | 32 | Não | 33ms | 33.1 | download |
| Fcos_bn_bs16_mnv2_fpn_1x | 16 | Não | 44ms | 31.0 | download |
[1] 1x e 2x significam que o modelo é treinado para iterações de 90k e 180k, respectivamente.
[2] Todos os resultados são obtidos com um único modelo e sem qualquer aumento de dados de tempo de teste, como multi-escala, inversão e etc.
[3] c128 indica que o modelo possui 128 (em vez de 256) canais em torres (ou seja, MODEL.RESNETS.BACKBONE_OUT_CHANNELS na configuração).
[4] dcnv2 denota redes convolucionais deformáveis v2. Observe que, para modelos baseados em resnet, aplicamos convoluções deformáveis do estágio C3 a C5 nos backbones. Para modelos baseados em resnexo, apenas o estágio C4 e C5 usam convoluções deformáveis. Todos os modelos usam convoluções deformáveis na última camada de torres de detector.
[5] O modelo FCOS_imprv_dcnv2_X_101_64x4d_FPN_2x com testes em várias escalas atinge 49,0% em AP no teste de Coco-Dev. Use TEST.BBOX_AUG.ENABLED True para ativar testes em várias escalas.
A seguinte linha de comando treinará FCOS_IMPRV_R_50_FPN_1X em 8 GPUS com descida de gradiente estocástico síncrono (SGD):
python -m torch.distributed.launch
--nproc_per_node=8
--master_port=$((RANDOM + 10000))
tools/train_net.py
--config-file configs/fcos/fcos_imprv_R_50_FPN_1x.yaml
DATALOADER.NUM_WORKERS 2
OUTPUT_DIR training_dir/fcos_imprv_R_50_FPN_1x
Observe que:
--nproc_per_node para o número de GPUs. Nenhuma outra configuração precisa ser alterada. O tamanho total do lote não depende do nproc_per_node . Se você deseja alterar o tamanho total do lote, altere SOLVER.IMS_PER_BATCH em configs/fcos/fcos_r_50_fpn_1x.yaml.OUTPUT_DIR .--config-file .num_pos entre as GPUs ao calcular a perda. Consulte o diretório ONNX para um exemplo de exportação do modelo para o ONNX. Um modelo convertido pode ser baixado aqui. Recomendamos que você use Pytorch> = 1.4.0 (ou noturno) e Torchvision> = 0.5.0 (ou noturno) para modelos ONNX.
Quaisquer solicitações ou problemas de tração são bem -vindos.
Por favor, considere citar nosso artigo em suas publicações se o projeto ajudar sua pesquisa. A referência Bibtex é a seguinte.
@inproceedings{tian2019fcos,
title = {{FCOS}: Fully Convolutional One-Stage Object Detection},
author = {Tian, Zhi and Shen, Chunhua and Chen, Hao and He, Tong},
booktitle = {Proc. Int. Conf. Computer Vision (ICCV)},
year = {2019}
}
@article{tian2021fcos,
title = {{FCOS}: A Simple and Strong Anchor-free Object Detector},
author = {Tian, Zhi and Shen, Chunhua and Chen, Hao and He, Tong},
booktitle = {IEEE T. Pattern Analysis and Machine Intelligence (TPAMI)},
year = {2021}
}
Gostaríamos de agradecer @yqyao pelos truques de amostragem central e giou. Agradecemos também a @Bearcatt por sua sugestão de posicionar o ramo central com regressão de caixa (consulte o #89).
Para uso acadêmico, este projeto é licenciado sob a licença BSD de 2 cláusulas - consulte o arquivo de licença para obter detalhes. Para uso comercial, entre em contato com os autores.