https://github.com/princeton-vl/CornerNet
https://github.com/princeton-vl/CornerNet
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/princeton-vl/CornerNet
- Owner: princeton-vl
- License: bsd-3-clause
- Created: 2018-08-03T02:02:39.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2020-09-18T18:59:28.000Z (over 4 years ago)
- Last Synced: 2025-01-02T13:34:01.439Z (4 months ago)
- Language: Python
- Size: 38.1 KB
- Stars: 2,361
- Watchers: 61
- Forks: 473
- Open Issues: 133
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-anchor-free-object-detection - CornerNet - vl/CornerNet?style=social"/> : "CornerNet: Detecting Objects as Paired Keypoints". (**[ECCV 2018](https://openaccess.thecvf.com/content_ECCV_2018/html/Hei_Law_CornerNet_Detecting_Objects_ECCV_2018_paper.html)**) (Frameworks)
README
# CornerNet: Training and Evaluation Code
Update (4/18/2019): please check out [CornerNet-Lite](https://github.com/princeton-vl/CornerNet-Lite), more efficient variants of CornerNetCode for reproducing the results in the following paper:
[**CornerNet: Detecting Objects as Paired Keypoints**](https://arxiv.org/abs/1808.01244)
Hei Law, Jia Deng
*European Conference on Computer Vision (ECCV), 2018*## Getting Started
Please first install [Anaconda](https://anaconda.org) and create an Anaconda environment using the provided package list.
```
conda create --name CornerNet --file conda_packagelist.txt
```After you create the environment, activate it.
```
source activate CornerNet
```Our current implementation only supports GPU so you need a GPU and need to have CUDA installed on your machine.
### Compiling Corner Pooling Layers
You need to compile the C++ implementation of corner pooling layers.
```
cd /models/py_utils/_cpools/
python setup.py install --user
```### Compiling NMS
You also need to compile the NMS code (originally from [Faster R-CNN](https://github.com/rbgirshick/py-faster-rcnn/blob/master/lib/nms/cpu_nms.pyx) and [Soft-NMS](https://github.com/bharatsingh430/soft-nms/blob/master/lib/nms/cpu_nms.pyx)).
```
cd /external
make
```### Installing MS COCO APIs
You also need to install the MS COCO APIs.
```
cd /data
git clone [email protected]:cocodataset/cocoapi.git coco
cd /data/coco/PythonAPI
make
```### Downloading MS COCO Data
- Download the training/validation split we use in our paper from [here](https://drive.google.com/file/d/1dop4188xo5lXDkGtOZUzy2SHOD_COXz4/view?usp=sharing) (originally from [Faster R-CNN](https://github.com/rbgirshick/py-faster-rcnn/tree/master/data))
- Unzip the file and place `annotations` under `/data/coco`
- Download the images (2014 Train, 2014 Val, 2017 Test) from [here](http://cocodataset.org/#download)
- Create 3 directories, `trainval2014`, `minival2014` and `testdev2017`, under `/data/coco/images/`
- Copy the training/validation/testing images to the corresponding directories according to the annotation files## Training and Evaluation
To train and evaluate a network, you will need to create a configuration file, which defines the hyperparameters, and a model file, which defines the network architecture. The configuration file should be in JSON format and placed in `config/`. Each configuration file should have a corresponding model file in `models/`. i.e. If there is a `.json` in `config/`, there should be a `.py` in `models/`. There is only one exception which we will mention later.To train a model:
```
python train.py
```We provide the configuration file (`CornerNet.json`) and the model file (`CornerNet.py`) for CornerNet in this repo.
To train CornerNet:
```
python train.py CornerNet
```
We also provide a trained model for `CornerNet`, which is trained for 500k iterations using 10 Titan X (PASCAL) GPUs. You can download it from [here](https://drive.google.com/open?id=16bbMAyykdZr2_7afiMZrvvn4xkYa-LYk) and put it under `/cache/nnet/CornerNet` (You may need to create this directory by yourself if it does not exist). If you want to train you own CornerNet, please adjust the batch size in `CornerNet.json` to accommodate the number of GPUs that are available to you.To use the trained model:
```
python test.py CornerNet --testiter 500000 --split
```If you want to test different hyperparameters in testing and do not want to overwrite the original configuration file, you can do so by creating a configuration file with a suffix (`-.json`). You **DO NOT** need to create `-.py` in `models/`.
To use the new configuration file:
```
python test.py --testiter --split --suffix
```We also include a configuration file for multi-scale evaluation, which is `CornerNet-multi_scale.json`, in this repo.
To use the multi-scale configuration file:
```
python test.py CornerNet --testiter --split --suffix multi_scale
```