/AutoScale

An implementation of AutoScale localization-based method

Primary LanguagePython

AutoScale_localization

  • An officical implementation of AutoScale localization-based method, you can find regression-based method from here.
  • AutoScale leverages a simple yet effective Learning to Scale (L2S) module to cope with significant scale variations in both regression and localization.

Structure

AutoScale_localization
|-- data            # generate target
|-- model           # model path 
|-- README.md       # README
|-- centerloss.py           
|-- config.py          
|-- dataset.py       
|-- find_contours.py           
|-- fpn.py         
|-- image.py
|-- make_npydata.py
|-- rate_model.py
|-- val.py        

Visualizations

Some localization-based results.

avatar

Qualitative visualization of distance label maps given by the proposed AutoScale.

Result of detected person locations

. avatar

Red points are the ground-truth. To more clearly present our localization results, we generate bounding boxes (green boxes) according to the KNN distance of each point, which follows and compares with LSC-CNN.

Environment

python >=3.6
pytorch >=1.0
opencv-python >=4.0
scipy >=1.4.0
h5py >=2.10
pillow >=7.0.0
imageio >=1.18

Datasets

  • Download ShanghaiTech dataset from Baidu-Disk, passward:cjnx
  • Download UCF-QNRF dataset from Google-Drive
  • Download JHU-CROWD ++ dataset from here
  • Download NWPU-CROWD dataset from Baidu-Disk, passward:3awa

Generate target

cd data
Edit "distance_generate_xx.py" to change the path to your original dataset folder.
python distance_generate_xx.py

“xx” means the dataset name, including sh, jhu, qnrf, and nwpu.

Model

  • QNRF link, passward:bbpr
  • NWPU link, passward:gupa
  • JHU link, passward:qr07
  • ShanghaiA link, passward : ge32
  • ShanghaiB link, passward : 2pq0

Quickly test

  • git clone https://github.com/dk-liang/AutoScale.git
    cd AutoScale
    chmod -R 777 ./count_localminma

  • Download Dataset and Model

  • Generate target

  • Generate images list

Edit "make_npydata.py" to change the path to your original dataset folder.
Run python make_npydata.py

  • Test
    python val.py --test_dataset qnrf --pre ./model/QNRF/model_best.pth --gpu_id 0
    python val.py --test_dataset jhu --pre ./model/JHU/model_best.pth --gpu_id 0
    python val.py --test_dataset nwpu --pre ./model/NWPU/model_best.pth --gpu_id 0
    python val.py --test_dataset ShanghaiA --pre ./model/ShanghaiA/model_best.pth --gpu_id 0
    python val.py --test_dataset ShanghaiB --pre ./model/ShanghaiB/model_best.pth --gpu_id 0
    More config information is provided in config.py

Training

coming soon.

References

If you are interested in AutoScale, please cite our work:

@article{xu2019autoscale,
  title={AutoScale: Learning to Scale for Crowd Counting},
  author={Xu, Chenfeng and Liang, Dingkang and Xu, Yongchao and Bai, Song and Zhan, Wei and Tomizuka, Masayoshi and Bai, Xiang},
  journal={arXiv preprint arXiv:1912.09632},
  year={2019}
}

and

@inproceedings{xu2019learn,
  title={Learn to Scale: Generating Multipolar Normalized Density Maps for Crowd Counting},
  author={Xu, Chenfeng and Qiu, Kai and Fu, Jianlong and Bai, Song and Xu, Yongchao and Bai, Xiang},
  booktitle={Proceedings of the IEEE International Conference on Computer Vision},
  pages={8382--8390},
  year={2019}
}