Этот проект размещает код для реализации алгоритма FCOS для обнаружения объектов, как представлено в нашей статье:
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
Полная бумага доступна по адресу: https://arxiv.org/abs/1904.01355.
Реализация на основе Detectron2 включена в Adelaidet.
Модель в реальном времени с 46 кадров в секунду и 40,3 в AP на Coco Minival также доступна здесь.
Мы используем 8 графических процессоров NVIDIA V100.
Но 4 1080TI графические процессоры также могут обучать полностью отработанные FCO на основе RESNET-50-FPN, поскольку FCOS экономит память.
Для пользователей, которые хотят использовать FCOS в качестве детектора объектов в своих проектах, они могут установить его на PIP. Для этого беги:
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
Пожалуйста, проверьте здесь использование интерфейса.
Эта реализация FCOS основана на Maskrcnn-Benchmark. Поэтому установка такая же, как и оригинальная Maskrcnn-Benchmark.
Пожалуйста, проверьте install.md для инструкций по установке. Вы также можете увидеть оригинальный readme.md из Maskrcnn-Benchmark.
После того, как установка будет сделана, вы можете выполнить следующие шаги, чтобы запустить быстрое демонстрацию.
# 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
Командная строка ловушки на Coco Minival Split:
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
Обратите внимание, что:
FCOS_imprv_R_50_FPN_1x.pth на свои собственные.TEST.IMS_PER_BATCH до 1.--config-file в его файл конфигурации (в конфигурации/fcos) и MODEL.WEIGHT . Веса в его файл веса.Для вашего удобства мы предоставляем следующие обученные модели (скоро появится больше моделей).
Resne (x) ts:
Все модели Resne (x) T обучаются с 16 изображениями в мини-партии и нормализации замороженной партии (то есть в соответствии с моделями в maskrcnn_benchmark).
| Модель | Многомасштабное обучение | Время тестирования / im | AP (Minival) | Связь |
|---|---|---|---|---|
| Fcos_imprv_r_50_fpn_1x | Нет | 44 мс | 38.7 | скачать |
| Fcos_imprv_dcnv2_r_50_fpn_1x | Нет | 54 мс | 42.3 | скачать |
| Fcos_imprv_r_101_fpn_2x | Да | 57 мс | 43,0 | скачать |
| Fcos_imprv_dcnv2_r_101_fpn_2x | Да | 73 мс | 45,6 | скачать |
| Fcos_imprv_x_101_32x8d_fpn_2x | Да | 110 мс | 44,0 | скачать |
| Fcos_imprv_dcnv2_x_101_32x8d_fpn_2x | Да | 143 мс | 46.4 | скачать |
| Fcos_imprv_x_101_64x4d_fpn_2x | Да | 112 мс | 44,7 | скачать |
| Fcos_imprv_dcnv2_x_101_64x4d_fpn_2x | Да | 144 мс | 46.6 | скачать |
Обратите внимание, что imprv обозначает improvements в нашей бумаге Таблица 3. Эти почти бесплатные изменения улучшают производительность на ~ 1,5% в общей сложности. Таким образом, мы настоятельно рекомендуем использовать их. Ниже приведены оригинальные модели, представленные в нашей первой статье.
| Модель | Многомасштабное обучение | Время тестирования / im | AP (Minival) | AP (Test-Dev) | Связь |
|---|---|---|---|---|---|
| Fcos_r_50_fpn_1x | Нет | 45 мс | 37.1 | 37.4 | скачать |
| Fcos_r_101_fpn_2x | Да | 59 мс | 41.4 | 41,5 | скачать |
| Fcos_x_101_32x8d_fpn_2x | Да | 110 мс | 42,5 | 42,7 | скачать |
| Fcos_x_101_64x4d_fpn_2x | Да | 113 мс | 43,0 | 43.2 | скачать |
Mobilenets:
Мы обновляем нормализацию партии для моделей на основе Mobilenet. Если вы хотите использовать Syncbn, установите Pytorch 1.1 или более поздней.
| Модель | Обучающий размер партии | Многомасштабное обучение | Время тестирования / im | AP (Minival) | Связь |
|---|---|---|---|---|---|
| Fcos_syncbn_bs32_c128_mnv2_fpn_1x | 32 | Нет | 26 мс | 30.9 | скачать |
| Fcos_syncbn_bs32_mnv2_fpn_1x | 32 | Нет | 33 мс | 33.1 | скачать |
| Fcos_bn_bs16_mnv2_fpn_1x | 16 | Нет | 44 мс | 31.0 | скачать |
[1] 1x и 2x среднее. Модель обучена для итераций 90K и 180K соответственно.
[2] Все результаты получены с помощью одной модели и без какого-либо увеличения данных о времени теста, таких как многомасштабное, переворот и т. Д.
[3] c128 обозначает, что модель имеет 128 (вместо 256) каналы в башнях (то есть MODEL.RESNETS.BACKBONE_OUT_CHANNELS в config).
[4] dcnv2 обозначает деформируемые сверточные сети v2. Обратите внимание, что для моделей на основе Resnet мы применяем деформируемые свертывание от стадии C3 до C5 в основе. Для моделей на основе Resnext только этап C4 и C5 используют деформируемые свертыватели. Все модели используют деформируемые свертки в последнем слое башен детекторов.
[5] Модель FCOS_imprv_dcnv2_X_101_64x4d_FPN_2x с многомасштабным тестированием достигает 49,0% в AP на COCO Test-DEV. Пожалуйста, используйте TEST.BBOX_AUG.ENABLED True , чтобы включить многомасштабное тестирование.
Следующая командная строка будет обучать FCOS_IMPRV_R_50_FPN_1X на 8 графических процессорах с синхронным стохастическим градиентом происхождения (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
Обратите внимание, что:
--nproc_per_node на количество графических процессоров. Никакие другие настройки не должны быть изменены. Общий размер партии не зависит от nproc_per_node . Если вы хотите изменить общий размер партии, измените SOLVER.IMS_PER_BATCH в configs/fcos/fcos_r_50_fpn_1x.yaml.OUTPUT_DIR .--config-file .num_pos между графическими процессорами при вычислении потерь. Пожалуйста, обратитесь к каталогу ONNX для примера экспорта модели в ONNX. Конвертированная модель может быть загружена здесь. Мы рекомендуем вам использовать Pytorch> = 1.4.0 (или ночи) и Torchvision> = 0,5.0 (или ночью) для моделей ONNX.
Любые запросы на тягу или проблемы приветствуются.
Пожалуйста, рассмотрите возможность ссылаться на нашу статью в ваших публикациях, если проект поможет вашему исследованию. Ссылка на Bibtex выглядит следующим образом.
@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}
}
Мы хотели бы поблагодарить @yqyao за уловки центральной выборки и giou. Мы также благодарим @bearcatt за его предложение о позиционировании центральной ветви с регрессией коробки (см. № 89).
Для академического использования этот проект лицензируется по лицензии BSD 2 пункта - для получения подробной информации см. Файл лицензии. Для коммерческого использования, пожалуйста, свяжитесь с авторами.