Skip to content

Commit ee0ae3d

Browse files
authored
Merge pull request #163 from SamitHuang/main
rm redundant packages and add ut to workflow
2 parents 295aa60 + 188fc32 commit ee0ae3d

File tree

8 files changed

+38
-112
lines changed

8 files changed

+38
-112
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ jobs:
3636
pip install pytest
3737
# MindSpore must be installed following the instruction from official web, but not from pypi.
3838
# That's why we exclude mindspore from requirements.txt. Does this work?
39-
pip install "mindspore>=1.8,<=1.10"
40-
#- name: Test with pytest (UT)
41-
# run: |
42-
# pytest tests/modules/*.py
39+
pip install "mindspore>=1.9,<=1.10"
40+
- name: Test with pytest (UT)
41+
run: |
42+
pytest tests/ut/*.py
4343
- name: Test with pytest (ST)
4444
run: |
4545
pytest tests/st/test_train_eval_dummy.py

tests/st/test_train_eval_dummy.py

Lines changed: 9 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -12,95 +12,29 @@
1212
import sys
1313
import glob
1414
import yaml
15+
import pytest
1516

1617
sys.path.append(".")
1718

18-
import pytest
19-
19+
from tests.ut._common import gen_dummpy_data, update_config_for_CI
2020
from mindocr.models.backbones.mindcv_models.download import DownLoad
2121

2222

2323
@pytest.mark.parametrize("task", ["det", "rec"])
2424
@pytest.mark.parametrize("val_while_train", [False, True])
2525
def test_train_eval(task, val_while_train):
26+
2627
# prepare dummy images
27-
data_dir = "data/Canidae"
28-
dataset_url = (
29-
"https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/intermediate/Canidae_data.zip"
30-
)
31-
if not os.path.exists(data_dir):
32-
DownLoad().download_and_extract_archive(dataset_url, "./")
33-
34-
# prepare dummy labels
35-
for split in ['train', 'val']:
36-
label_path = f'tests/st/dummy_labels/{task}_{split}_gt.txt'
37-
image_dir = f'{data_dir}/{split}/dogs'
38-
new_label_path = f'data/Canidae/{split}/{task}_gt.txt'
39-
img_paths = glob.glob(os.path.join(image_dir, '*.JPEG'))
40-
#print(len(img_paths))
41-
with open(new_label_path, 'w') as f_w:
42-
with open(label_path, 'r') as f_r:
43-
i = 0
44-
for line in f_r:
45-
_, label = line.strip().split('\t')
46-
#print(i)
47-
img_name = os.path.basename(img_paths[i])
48-
new_img_label = img_name + '\t' + label
49-
f_w.write(new_img_label + '\n')
50-
i += 1
51-
print(f'Dummpy annotation file is generated in {new_label_path}')
52-
53-
# modify ocr predefined yaml for minimum test
28+
data_dir = gen_dummpy_data(task)
29+
30+
# modify ocr predefined yaml for minimum test
5431
if task == 'det':
5532
config_fp = 'configs/det/dbnet/db_r50_icdar15.yaml'
5633
elif task=='rec':
5734
#config_fp = 'configs/rec/vgg7_bilstm_ctc.yaml' # TODO: change on lmdb datasset
5835
config_fp = 'configs/rec/crnn/crnn_icdar15.yaml'
5936

60-
with open(config_fp) as fp:
61-
config = yaml.safe_load(fp)
62-
config['system']['distribute'] = False
63-
config['system']['val_while_train'] = val_while_train
64-
#if 'common' in config:
65-
# config['batch_size'] = 8
66-
config['train']['dataset_sink_mode'] = False
67-
68-
config['train']['dataset']['dataset_root'] = 'data/Canidae/'
69-
config['train']['dataset']['data_dir'] = 'train/dogs'
70-
config['train']['dataset']['label_file'] = f'train/{task}_gt.txt'
71-
config['train']['dataset']['sample_ratio'] = 0.1 # TODO: 120 training samples in total, don't be larger than batchsize after sampling
72-
config['train']['loader']['num_workers'] = 1 # github server only support 2 workers at most
73-
#if config['train']['loader']['batch_size'] > 120:
74-
config['train']['loader']['batch_size'] = 2 # to save memory
75-
config['train']['loader']['max_rowsize'] = 16 # to save memory
76-
config['train']['loader']['prefetch_size'] = 2 # to save memory
77-
if 'common' in config:
78-
config['common']['batch_size'] = 2
79-
if 'batch_size' in config['loss']:
80-
config['loss']['batch_size'] = 2
81-
82-
config['eval']['dataset']['dataset_root'] = 'data/Canidae/'
83-
config['eval']['dataset']['data_dir'] = 'val/dogs'
84-
config['eval']['dataset']['label_file'] = f'val/{task}_gt.txt'
85-
config['eval']['dataset']['sample_ratio'] = 0.1
86-
config['eval']['loader']['num_workers'] = 1 # github server only support 2 workers at most
87-
config['eval']['loader']['batch_size'] = 1
88-
config['eval']['loader']['max_rowsize'] = 16 # to save memory
89-
config['eval']['loader']['prefetch_size'] = 2 # to save memory
90-
91-
config['eval']['ckpt_load_path'] = os.path.join(config['train']['ckpt_save_dir'], 'best.ckpt')
92-
93-
config['scheduler']['num_epochs'] = 2
94-
config['scheduler']['warmup_epochs'] = 1
95-
config['scheduler']['decay_epochs'] = 1
96-
97-
dummpy_config_fp =os.path.join('tests/st', os.path.basename(config_fp.replace('.yaml', '_dummpy.yaml')))
98-
with open(dummpy_config_fp, 'w') as f:
99-
args_text = yaml.safe_dump(config, default_flow_style=False, sort_keys=False)
100-
f.write(args_text)
101-
print('Genearted yaml: ')
102-
print(args_text)
103-
37+
dummpy_config_fp = update_config_for_CI(config_fp, task)
10438

10539
#dummpy_config_fp = 'tests/st/rec_crnn_test.yaml'
10640
# ---------------- test running train.py using the toy data ---------
@@ -129,5 +63,5 @@ def test_train_eval(task, val_while_train):
12963

13064

13165
if __name__ == '__main__':
132-
test_train_eval('det', True)
133-
#test_train_eval('rec', True)
66+
#test_train_eval('det', True)
67+
test_train_eval('rec', True)

tests/ut/_common.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import sys
2+
sys.path.append('.')
13
import os
24
import glob
35
import yaml

tests/ut/test_datasets.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,13 @@
44
sys.path.append('.')
55

66
import yaml
7-
import glob
87
import pytest
9-
import numpy as np
108
import time
119

1210
import mindspore as ms
1311
import mindocr
1412
from mindocr.data import build_dataset
15-
from mindocr.data.det_dataset import DetDataset
16-
from mindocr.data.transforms.transforms_factory import transforms_dbnet_icdar15
17-
from mindocr.data.rec_dataset import RecDataset
18-
from mindspore import load_checkpoint, load_param_into_net
19-
from mindocr.utils.visualize import show_img, draw_bboxes, show_imgs, recover_image
13+
from mindocr.utils.visualize import show_img, draw_bboxes, recover_image
2014

2115

2216
@pytest.mark.parametrize('task', ['det', 'rec'])

tests/ut/test_loss.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22
sys.path.append('.')
33
import pytest
44
import yaml
5-
import numpy as np
6-
import mindspore as ms
75
from addict import Dict
8-
from mindocr.losses import build_loss
6+
from mindocr import build_loss
97

108

119
@pytest.mark.parametrize('task', ['det', 'rec'])

tests/ut/test_metrics.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,30 @@
11
import sys
22
sys.path.append('.')
3-
3+
import pytest
4+
import yaml
5+
from addict import Dict
46
import numpy as np
57
import mindspore as ms
8+
from mindocr import build_metric
69
from mindocr.metrics.det_metrics import DetMetric
710
from mindocr.metrics.rec_metrics import RecMetric
811

912

13+
@pytest.mark.parametrize('task', ['det', 'rec'])
14+
@pytest.mark.parametrize('device_num', [1, 8])
15+
def test_build_metric(task, device_num):
16+
if task == 'det':
17+
config_fp = 'configs/det/dbnet/db_r50_icdar15.yaml'
18+
elif task=='rec':
19+
config_fp = 'configs/rec/crnn/crnn_icdar15.yaml'
20+
21+
with open(config_fp) as fp:
22+
cfg = yaml.safe_load(fp)
23+
cfg = Dict(cfg)
24+
25+
metric = build_metric(cfg.metric, device_num=device_num)
26+
27+
1028
def test_det_metric():
1129
pred_polys = [
1230
[

tests/ut/test_models.py

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import sys
22
sys.path.append('.')
33

4+
import time
45
import yaml
5-
import glob
66
import pytest
77
import numpy as np
88
import mindspore as ms
99
import mindocr
10-
from mindocr.models.backbones import build_backbone
1110
from mindocr.models import build_model
12-
from mindspore import load_checkpoint, load_param_into_net
1311

1412
all_model_names = mindocr.list_models()
1513
print('Registered models: ', all_model_names)
@@ -20,10 +18,6 @@
2018
print('All config yamls: ', all_yamls)
2119

2220
def _infer_dummy(model, task='det', verbose=True):
23-
import mindspore as ms
24-
import time
25-
import numpy as np
26-
2721
print(task)
2822

2923
bs = 8
@@ -93,18 +87,5 @@ def test_model_by_yaml(yaml_fp):
9387

9488
if __name__ == '__main__':
9589
print(all_model_names)
96-
#test_model_by_name(all_model_names[0], True)
97-
#test_model_by_name(all_model_names[1], True)
9890
test_model_by_name(all_model_names[2], True)
99-
#test_model_by_yaml(all_yamls[1])
100-
'''
101-
import argparse
102-
parser = argparse.ArgumentParser(description='model config', add_help=False)
103-
parser.add_argument('-c', '--config', type=str, default='configs/det/dbnet/db_r50_icdar15.yaml',
104-
help='YAML config file specifying default arguments (default='')')
105-
args = parser.parse_args()
106-
#test_registry()
107-
#test_backbone()
108-
#test_model_by_name('dbnet_r50')
109-
test_model_by_yaml(args.config)
110-
'''
91+
#test_model_by_yaml(all_yamls[1])

tests/ut/test_postprocess.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import sys
22
sys.path.append('.')
33
import pytest
4-
import numpy as np
54
import yaml
65
from addict import Dict
76
from mindocr.postprocess import build_postprocess

0 commit comments

Comments
 (0)