From 271129f812dbfab2acdd777db18da1fb1d9b3b06 Mon Sep 17 00:00:00 2001 From: quincylin1 <33197366+quincylin1@users.noreply.github.com> Date: Tue, 8 Jun 2021 21:13:22 +0800 Subject: [PATCH] Feature/iss 262 (#266) * fix issue#262 * fix #262: modified totaltext_converter and added totaltext for datasets.md * fix issue#262: modified datasets.md * fix issue#262: removed download json * Update totaltext_converter.py Co-authored-by: Hongbin Sun --- docs/datasets.md | 27 +++++++++++++++++++++++ tools/data/textdet/totaltext_converter.py | 14 ++++++------ 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/docs/datasets.md b/docs/datasets.md index b5403814..a82b015a 100644 --- a/docs/datasets.md +++ b/docs/datasets.md @@ -33,6 +33,10 @@ The structure of the text detection dataset directory is organized as follows. ├── synthtext │   ├── imgs │   └── instances_training.lmdb +├── totaltext +│   ├── imgs +│   ├── instances_test.json +│   └── instances_training.json ``` | Dataset | Images | | | Annotation Files | | @@ -42,6 +46,7 @@ The structure of the text detection dataset directory is organized as follows. | ICDAR2015 | [homepage](https://rrc.cvc.uab.es/?ch=4&com=downloads) | | [instances_training.json](https://download.openmmlab.com/mmocr/data/icdar2015/instances_training.json) | - | [instances_test.json](https://download.openmmlab.com/mmocr/data/icdar2015/instances_test.json) | | ICDAR2017 | [homepage](https://rrc.cvc.uab.es/?ch=8&com=downloads) | [renamed_imgs](https://download.openmmlab.com/mmocr/data/icdar2017/renamed_imgs.tar) | [instances_training.json](https://download.openmmlab.com/mmocr/data/icdar2017/instances_training.json) | [instances_val.json](https://download.openmmlab.com/mmocr/data/icdar2017/instances_val.json) | - | | | | Synthtext | [homepage](https://www.robots.ox.ac.uk/~vgg/data/scenetext/) | | [instances_training.lmdb](https://download.openmmlab.com/mmocr/data/synthtext/instances_training.lmdb) | - | +| Totaltext | [homepage](https://github.com/cs-chan/Total-Text-Dataset) | | - | - | - - For `icdar2015`: - Step1: Download `ch4_training_images.zip`, `ch4_test_images.zip`, `ch4_training_localization_transcription_gt.zip`, `Challenge4_Test_Task1_GT.zip` from [homepage](https://rrc.cvc.uab.es/?ch=4&com=downloads) @@ -90,7 +95,29 @@ The structure of the text detection dataset directory is organized as follows. ```bash python tools/data/textdet/ctw1500_converter.py /path/to/ctw1500 -o /path/to/ctw1500 --split-list training test ``` +- For `Totaltext`: + - Step1: Download `totaltext.zip` from [github dataset](https://github.com/cs-chan/Total-Text-Dataset/tree/master/Dataset) and `groundtruth_text.zip` from [github Groundtruth](https://github.com/cs-chan/Total-Text-Dataset/tree/master/Groundtruth/Text) (We recommend downloading the text groundtruth with .mat format since our totaltext_converter.py supports groundtruth with .mat format only). + ```bash + mkdir totaltext && cd totaltext + mkdir imgs && mkdir annotations + # For images + # in ./totaltext + unzip totaltext.zip + mv Images/Train imgs/training + mv Images/Test imgs/test + + # For annotations + unzip groundtruth_text.zip + cd Groundtruth + mv Polygon/Train ../annotations/training + mv Polygon/Test ../annotations/test + + ``` + - Step2: Generate `instances_training.json` and `instances_test.json` with following command: + ```bash + python tools/data/textdet/totaltext_converter.py /path/to/totaltext -o /path/to/totaltext --split-list training test + ``` ## Text Recognition **The structure of the text recognition dataset directory is organized as follows.** diff --git a/tools/data/textdet/totaltext_converter.py b/tools/data/textdet/totaltext_converter.py index c22f025e..eb4b35d6 100644 --- a/tools/data/textdet/totaltext_converter.py +++ b/tools/data/textdet/totaltext_converter.py @@ -44,17 +44,17 @@ def collect_files(img_dir, gt_dir, split): files = [] if split == 'training': for img_file in imgs_list: - gt_file = gt_dir + '/gt_' + osp.splitext( - osp.basename(img_file))[0] + '.mat' - # gt_file = gt_dir + '/' + osp.splitext( - # osp.basename(img_file))[0] + '.png' + gt_file = osp.join( + gt_dir, + 'poly_gt_' + osp.splitext(osp.basename(img_file))[0] + '.mat') files.append((img_file, gt_file)) assert len(files), f'No images found in {img_dir}' print(f'Loaded {len(files)} images from {img_dir}') elif split == 'test': for img_file in imgs_list: - gt_file = gt_dir + '/poly_gt_' + osp.splitext( - osp.basename(img_file))[0] + '.mat' + gt_file = osp.join( + gt_dir, + 'poly_gt_' + osp.splitext(osp.basename(img_file))[0] + '.mat') files.append((img_file, gt_file)) assert len(files), f'No images found in {img_dir}' print(f'Loaded {len(files)} images from {img_dir}') @@ -107,7 +107,7 @@ def get_contours(gt_path, split): words = [] data = scio.loadmat(gt_path) if split == 'training': - data_polygt = data['gt'] + data_polygt = data['polygt'] elif split == 'test': data_polygt = data['polygt']