Skip to content

Commit 8987fa8

Browse files
[UnitTest] mmocr unittest (open-mmlab#130)
* WIP test_mmocr 8 out of 20 * test_mmocr_export * test mmocr apis * add test data * add mmocr model unittest 5 passed 1 failed * finish mmocr unittest * fix lint * fix yapf * fix isort * fix flake8 * fix docformatter * fix docformatter * try to fix unittest after merge master * Change test.py for backend.DEFAULT * fix flake8 * fix ut * fix yapf * fix ut build * fix yapf * fix mmocr_export ut * fix mmocr_apis ort not cuda * remove explicit .forward * remove backendwrapper * simplify the crnn and dbnet config * simplify instance_test.json * add another case of decoder * increase coverage of test_mmocr_models base_recognizer * improve coverage * improve encode_decoder coverage * reply for grimoire codereview * what if not check cuda? * remove image data * reply to runningleon code review * fix fpnc * fix lint * try to fix CI UT error * fix fpnc with and wo custom ops * fix yapf * skip fpnc when cuda is not ready in ci * reply for code review * reply for code review * fix yapf * reply for code review * fix yapf * fix conflict * remove unmatched data path * remove unnecessary comments
1 parent 0150c2d commit 8987fa8

File tree

8 files changed

+909
-5
lines changed

8 files changed

+909
-5
lines changed

mmdeploy/mmocr/apis/inference.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from typing import Iterable, Sequence, Union
22

33
import mmcv
4+
import numpy as np
45
import torch
56
from mmdet.models.builder import DETECTORS
67
from mmocr.datasets import DATASETS
@@ -60,6 +61,8 @@ def simple_test(self,
6061
list: A list of predictions.
6162
"""
6263
pred = self.forward_of_backend(img, img_metas, *args, **kwargs)
64+
if isinstance(pred, np.ndarray):
65+
pred = torch.from_numpy(pred[0])
6366
if len(img_metas) > 1:
6467
boundaries = [
6568
self.bbox_head.get_boundary(
@@ -187,7 +190,6 @@ def forward_of_backend(self, img: torch.Tensor, img_metas: Iterable, *args,
187190
np.ndarray: Prediction of input model.
188191
"""
189192
onnx_pred = self.model({'input': img})
190-
onnx_pred = torch.from_numpy(onnx_pred[0])
191193
return onnx_pred
192194

193195

@@ -223,7 +225,6 @@ def forward_of_backend(self, img: torch.Tensor, img_metas: Sequence[dict],
223225
np.ndarray: Prediction of input model.
224226
"""
225227
onnx_pred = self.model({'input': img})
226-
onnx_pred = torch.from_numpy(onnx_pred[0])
227228
return onnx_pred
228229

229230

@@ -403,8 +404,8 @@ def forward_of_backend(self, img: torch.Tensor, img_metas: Sequence[dict],
403404
"""
404405
with torch.cuda.device(self.device_id), torch.no_grad():
405406
ppl_pred = self.model({'input': img})
406-
407-
ppl_pred = torch.from_numpy(ppl_pred[0])
407+
if isinstance(ppl_pred[0], np.ndarray):
408+
ppl_pred = torch.from_numpy(ppl_pred[0])
408409
return ppl_pred
409410

410411

@@ -442,7 +443,8 @@ def forward_of_backend(self, img: torch.Tensor, img_metas: Sequence[dict],
442443
"""
443444
with torch.cuda.device(self.device_id), torch.no_grad():
444445
ppl_pred = self.model({'input': img})[0]
445-
ppl_pred = torch.from_numpy(ppl_pred[0])
446+
if isinstance(ppl_pred[0], np.ndarray):
447+
ppl_pred = torch.from_numpy(ppl_pred[0])
446448
return ppl_pred
447449

448450

mmdeploy/utils/test.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,8 @@ def get_rewrite_outputs(wrapped_model: nn.Module,
295295
backend_model = openvino_apis.OpenVINOWrapper(openvino_file_path)
296296

297297
backend_feats = flatten_model_inputs
298+
elif backend == Backend.DEFAULT:
299+
return ctx_outputs, False
298300
else:
299301
raise NotImplementedError(
300302
f'Unimplemented backend type: {backend.value}')
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
_base_ = []
2+
3+
# model
4+
label_convertor = dict(
5+
type='CTCConvertor', dict_type='DICT36', with_unknown=False, lower=True)
6+
7+
model = dict(
8+
type='CRNNNet',
9+
preprocessor=None,
10+
backbone=dict(type='VeryDeepVgg', leaky_relu=False, input_channels=1),
11+
encoder=None,
12+
decoder=dict(type='CRNNDecoder', in_channels=512, rnn_flag=True),
13+
loss=dict(type='CTCLoss'),
14+
label_convertor=label_convertor,
15+
pretrained=None)
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
model = dict(
2+
type='DBNet',
3+
backbone=dict(
4+
type='mmdet.ResNet',
5+
depth=18,
6+
num_stages=4,
7+
out_indices=(0, 1, 2, 3),
8+
frozen_stages=-1,
9+
norm_cfg=dict(type='BN', requires_grad=True),
10+
init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet18'),
11+
norm_eval=False,
12+
style='caffe'),
13+
neck=dict(type='FPNC', in_channels=[2, 4, 8, 16], lateral_channels=8),
14+
bbox_head=dict(
15+
type='DBHead',
16+
text_repr_type='quad',
17+
in_channels=8,
18+
loss=dict(type='DBLoss', alpha=5.0, beta=10.0, bbce_loss=True)),
19+
train_cfg=None,
20+
test_cfg=None)
21+
22+
dataset_type = 'IcdarDataset'
23+
data_root = 'data/icdar2015'
24+
img_norm_cfg = dict(
25+
mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
26+
27+
test_pipeline = [
28+
dict(type='LoadImageFromFile', color_type='color_ignore_orientation'),
29+
dict(
30+
type='MultiScaleFlipAug',
31+
img_scale=(128, 64),
32+
flip=False,
33+
transforms=[
34+
dict(type='Resize', img_scale=(256, 128), keep_ratio=True),
35+
dict(type='Normalize', **img_norm_cfg),
36+
dict(type='Pad', size_divisor=32),
37+
dict(type='ImageToTensor', keys=['img']),
38+
dict(type='Collect', keys=['img']),
39+
])
40+
]
41+
data = dict(
42+
samples_per_gpu=16,
43+
test_dataloader=dict(samples_per_gpu=1),
44+
test=dict(
45+
type=dataset_type,
46+
ann_file=data_root + '/instances_test.json',
47+
img_prefix=data_root + '/imgs',
48+
pipeline=test_pipeline))
49+
evaluation = dict(interval=100, metric='hmean-iou')
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"images": [], "categories": [], "annotations": []}

0 commit comments

Comments
 (0)