{"id":18600821,"url":"https://github.com/autonomousvision/good","last_synced_at":"2025-04-10T18:31:41.182Z","repository":{"id":188034077,"uuid":"631966178","full_name":"autonomousvision/good","owner":"autonomousvision","description":"[ICLR'23] GOOD: Exploring Geometric Cues for Detecting Objects in an Open World","archived":false,"fork":false,"pushed_at":"2023-04-24T12:52:09.000Z","size":21194,"stargazers_count":41,"open_issues_count":5,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-25T03:01:35.661Z","etag":null,"topics":["class-agnostic-detection","object-detection","open-world","open-world-detection"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/autonomousvision.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-04-24T12:41:40.000Z","updated_at":"2024-11-18T11:03:05.000Z","dependencies_parsed_at":"2023-08-13T12:22:45.881Z","dependency_job_id":null,"html_url":"https://github.com/autonomousvision/good","commit_stats":null,"previous_names":["autonomousvision/good"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomousvision%2Fgood","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomousvision%2Fgood/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomousvision%2Fgood/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomousvision%2Fgood/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/autonomousvision","download_url":"https://codeload.github.com/autonomousvision/good/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248271769,"owners_count":21075800,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["class-agnostic-detection","object-detection","open-world","open-world-detection"],"created_at":"2024-11-07T02:05:45.534Z","updated_at":"2025-04-10T18:31:36.170Z","avatar_url":"https://github.com/autonomousvision.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GOOD: Exploring geometric cues for detecting objects in an open world\n\nThis repository is the official implementation of [GOOD: Exploring geometric cues for detecting objects in an open world](https://arxiv.org/abs/2212.11720) (ICLR 2023). \n\n## What is it?\n\nWe address the task of open-world class-agnostic object detection, i.e., detecting every object in an image by learning from a limited number of base object classes. State-of-the-art RGB-based models suffer from overfitting the training classes and often fail at detecting novel-looking objects. This is because RGB-based models primarily rely on appearance similarity to detect novel objects and are also prone to overfitting short-cut cues such as textures and discriminative parts. \nTo address these shortcomings of RGB-based object detectors, we propose ***incorporating geometric cues such as depth and normals***, predicted by  general-purpose monocular estimators.\n\nAs we can see from the following figure, geometric cues are much more generalizable across different categories, and can effectively narrow the generalization gap between base (known) and novel (unknown) categories.\nOur method has achieved **SOTA results** on many open-world detection benchmarks including COCO Person to non-Person, VOC to non-VOC, LVIS COCO to non-COCO, and COCO to UVO.\n\n![alt text](resources/fig2.png)\n\n## How we do it?\nAs shown in the following figure, we use the geometric cues to train an object proposal network for pseudo-labeling unannotated novel objects in the training set. The top-ranked pseudo boxes are added to the annotation pool for  Phase II training, i.e., a class-agnostic object detector is directly trained on the RGB input using both the base class and pseudo annotations. At inference time, we only need the model from Phase II.\n\n![alt text](resources/pipeline.png)\n\n\n\n## Pre-trained Weights\n\nYou can download pretrained weights here:\n\n| Training | Eval | url | OLN AR_N@100 | GOOD AR_N@100 |\n|:---:|:---:|:---:|:---:|:---:|\n| Person, COCO | Non-Person, COCO | [Pseudo-box](https://drive.google.com/drive/folders/1zJd6Lgm2dGbt3dzLmMOQ4G6V6dg_yeo6?usp=share_link)/[GOOD](https://drive.google.com/file/d/1CLknTPCfvxA2jNw9aYsIgORZgK78VmCE/view?usp=sharing) | 16.5 | 26.2 | \n| VOC, COCO | Non-VOC, COCO |  [Pseudo-box](https://drive.google.com/drive/folders/1KLEUkulebFo7ByKR6gTOnRre74hrlhgX?usp=sharing)/[GOOD](https://drive.google.com/file/d/1wVm9uFiCjY21oPyEvdw0bWqjrQ4cNLrw/view?usp=sharing) | 33.2 | 39.3 |\n| COCO | [Non-COCO, LVIS](https://drive.google.com/file/d/1k3blgwu76OrI8haQ8Z9PPB2NrPd98_PW/view?usp=sharing) | [Pseudo-box](https://drive.google.com/drive/folders/1yeibVXcyHcbCdXZbQJRpeJeOnunm8xJ_?usp=sharing)/[GOOD](https://drive.google.com/file/d/1mL3BvZDMAOms0et_CyShQwT7F_xfaNFi/view?usp=sharing) | 27.4 | 29.0 | \n\n\nFor all GOOD models, we find the optimal number k for pseudo labels is 1. Due to some modifications of the evaluation code, the numbers are slightly different from the papers.\n\n\n## Installation\n\nThis repository is based on [mmdetection](https://github.com/open-mmlab/mmdetection) and [OLN](https://github.com/mcahny/object_localization_network).\n\nYou can use following commands to create conda env with related dependencies.\n\n```setup\nconda create -n good python=3.8 -y\nconda activate good\nconda install pytorch=1.7.0 torchvision -c pytorch\nconda install cuda -c nvidia\npip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html\npip install -v -e . \n```\n\n\n## Extracting geometric cues\n\nPlease refer to [Omnidata repositories](https://github.com/EPFL-VILAB/omnidata/tree/main/omnidata_tools/torch) for the pretrained models. We provide an example code for extracting depth and normal [here](tools/extract_outputs.py). Please put it in the same repository as Omnidata repository to use it.\n\n\n## Phase-I training and generating pseudo-labels\n\nTo train the Phase-I model, run this command:\n\n```train\npython tools/train_good.py configs/good/phase1_depth.py\n```\n\nAfter training, you can run this command to extract pseudo labels and generate a COCO-format annotation file:\n\n```\npython tools/test_extract_proposals.py configs/good/phase1_depth.py path-to-checkpoint/latest.pth --eval bbox --modality depth --out path-to-save-pseudo-box-json\n```\n\n## Phase-II training\n\nTo train the Phase-II model, run this command:\n\n```train\npython tools/train_good.py configs/good/phase2_good.py\n```\n\nNote the difference of config files from Phase-I. You need to specify the filenames of the pseudo boxes in the config file.\n\n\n## Evaluation\n\nTo evaluate the model, run:\n\n```eval\npython tools/test_good.py configs/good/phase2_good.py path-to-checkpoint/latest.pth --eval bbox\n```\n\n## To cite this work:\n\n```bibtex\n@inproceedings{\n    huang2023good,\n    title={{GOOD}: Exploring geometric cues for detecting objects in an open world},\n    author={Haiwen Huang and Andreas Geiger and Dan Zhang},\n    booktitle={The Eleventh International Conference on Learning Representations },\n    year={2023},\n    url={https://openreview.net/forum?id=W-nZDQyuy8D}\n}\n```\n\n\n\n## License\n\nThis code repository is open-sourced under [MIT license](LICENSE).\n\n\nFor a list of other open source components included in this project, see the file [3rd-party-licenses.txt](3rd-party-licenses.txt).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautonomousvision%2Fgood","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautonomousvision%2Fgood","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautonomousvision%2Fgood/lists"}