This repository is built on the pytorch [maskrcnn_benchmark]. The method is the foundation of our ReCTs-competition method [link], which won the championship.
- This code currently only supports quadrilateral bounding box detection. The method can now be well generated to the curved text detection, which will also be released in this repository in the future.
Please see our paper at [link].
The advantages:
- BDN can directly produce compact quadrilateral detection box. (segmentation-based methods need additional steps to group pixels & such steps usually sensitive to outliers)
- BDN can avoid label confusion (non-segmentation-based methods are mostly sensitive to label sequence, which can significantly undermine the detection result). Comparison on ICDAR 2015 dataset showing different methods’ ability of resistant to the label confusion issue (by adding rotated pseudo samples). Textboxes++, East, and CTD are all Sesitive-to-Label-Sequence methods.
Textboxes++ [code] | East [code] | CTD [code] | Ours | |
---|---|---|---|---|
Variances (Hmean) | ↓ 9.7% | ↓ 13.7% | ↓ 24.6% | ↑ 0.3% |
A basic example for training and testing. This mini example offers a pure baseline that takes less than 4 hours (with 4 1080 ti) to finalize training with only official training data.
Link:https://pan.baidu.com/s/1TGy6O3LBHGQFzC20yJo8tg psw:vggx
conda create --name mb
conda activate mb
conda install ipython
pip install ninja yacs cython matplotlib tqdm scipy shapely
conda install pytorch=1.0 torchvision=0.2 cudatoolkit=9.0 -c pytorch
conda install -c menpo opencv
export INSTALL_DIR=$PWD
cd $INSTALL_DIR
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
python setup.py build_ext install
cd $INSTALL_DIR
git clone https://github.com/Yuliang-Liu/Box_Discretization_Network.git
cd Box_Discretization_Network
python setup.py build develop
[Link] unzip under project_root
Prepare data follow COCO format. [Link] unzip under datasets/
After downloading data and pretrained model, run
bash quick_train_guide.sh
Test with [TIoU]
Run
bash my_test.sh
Put kes.json to ic15_TIoU_metric/ inside ic15_TIoU_metric/
Run (conda deactivate; pip install Polygon2)
python2 to_eval.py
Example results:
- mask branch 79.4 (test segm.json by changing to_eval.py (line 10: mode=0) );
- kes branch 80.4;
- in .yaml, set RESCORING=True -> 80.8;
- Set RESCORING=True and RESCORING_GAMA=0.8 -> 81.0;
- One can try many other tricks such as CROP_PROB_TRAIN, ROTATE_PROB_TRAIN, USE_DEFORMABLE, DEFORMABLE_PSROIPOOLING, PNMS, MSR, PAN in the project, whcih were all tested effective to improve the results. To achieve state-of-the-art performance, extra data (syntext, MLT, etc.) and proper training strategies are necessary.
Run
bash single_image_demo.sh
If you find our method useful for your reserach, please cite
@article{liu2019omnidirectional,
title={Omnidirectional Scene Text Detection with Sequential-free Box Discretization},
author={Liu, Yuliang and Zhang, Sheng and Jin, Lianwen and Xie, Lele and Wu, Yaqiang and Wang, Zhepeng},
journal={IJCAI},
year={2019}
}
Suggestions and discussions are greatly welcome. Please contact the authors by sending email to
[email protected]
or [email protected]
. For commercial usage, please contact Prof. Lianwen Jin via [email protected].