Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/ts/misc/run_long.py
16344 views
1
#!/usr/bin/env python
2
from __future__ import print_function
3
import xml.etree.ElementTree as ET
4
from glob import glob
5
from pprint import PrettyPrinter as PP
6
7
LONG_TESTS_DEBUG_VALGRIND = [
8
('calib3d', 'Calib3d_InitUndistortRectifyMap.accuracy', 2017.22),
9
('dnn', 'Reproducibility*', 1000), # large DNN models
10
('dnn', '*RCNN*', 1000), # very large DNN models
11
('dnn', '*RFCN*', 1000), # very large DNN models
12
('dnn', '*EAST*', 1000), # very large DNN models
13
('dnn', '*VGG16*', 1000), # very large DNN models
14
('dnn', '*ZFNet*', 1000), # very large DNN models
15
('dnn', '*ResNet101_DUC_HDC*', 1000), # very large DNN models
16
('dnn', '*LResNet100E_IR*', 1000), # very large DNN models
17
('dnn', '*read_yolo_voc_stream*', 1000), # very large DNN models
18
('dnn', '*eccv16*', 1000), # very large DNN models
19
('dnn', '*OpenPose*', 1000), # very large DNN models
20
('dnn', '*SSD/*', 1000), # very large DNN models
21
('face', 'CV_Face_FacemarkLBF.test_workflow', 10000.0), # >40min on i7
22
('features2d', 'Features2d/DescriptorImage.no_crash/3', 1000),
23
('features2d', 'Features2d/DescriptorImage.no_crash/4', 1000),
24
('features2d', 'Features2d/DescriptorImage.no_crash/5', 1000),
25
('features2d', 'Features2d/DescriptorImage.no_crash/6', 1000),
26
('features2d', 'Features2d/DescriptorImage.no_crash/7', 1000),
27
('imgcodecs', 'Imgcodecs_Png.write_big', 1000), # memory limit
28
('imgcodecs', 'Imgcodecs_Tiff.decode_tile16384x16384', 1000), # memory limit
29
('ml', 'ML_RTrees.regression', 1423.47),
30
('optflow', 'DenseOpticalFlow_DeepFlow.ReferenceAccuracy', 1360.95),
31
('optflow', 'DenseOpticalFlow_DeepFlow_perf.perf/0', 1881.59),
32
('optflow', 'DenseOpticalFlow_DeepFlow_perf.perf/1', 5608.75),
33
('optflow', 'DenseOpticalFlow_GlobalPatchColliderDCT.ReferenceAccuracy', 5433.84),
34
('optflow', 'DenseOpticalFlow_GlobalPatchColliderWHT.ReferenceAccuracy', 5232.73),
35
('optflow', 'DenseOpticalFlow_SimpleFlow.ReferenceAccuracy', 1542.1),
36
('photo', 'Photo_Denoising.speed', 1484.87),
37
('photo', 'Photo_DenoisingColoredMulti.regression', 2447.11),
38
('rgbd', 'Rgbd_Normals.compute', 1156.32),
39
('shape', 'Hauss.regression', 2625.72),
40
('shape', 'ShapeEMD_SCD.regression', 61913.7),
41
('shape', 'Shape_SCD.regression', 3311.46),
42
('tracking', 'AUKF.br_mean_squared_error', 10764.6),
43
('tracking', 'UKF.br_mean_squared_error', 5228.27),
44
('tracking', '*DistanceAndOverlap*/1', 1000.0), # dudek
45
('tracking', '*DistanceAndOverlap*/2', 1000.0), # faceocc2
46
('videoio', 'Videoio_Video.ffmpeg_writebig', 1000),
47
('xfeatures2d', 'Features2d_RotationInvariance_Descriptor_BoostDesc_LBGM.regression', 1124.51),
48
('xfeatures2d', 'Features2d_RotationInvariance_Descriptor_VGG120.regression', 2198.1),
49
('xfeatures2d', 'Features2d_RotationInvariance_Descriptor_VGG48.regression', 1958.52),
50
('xfeatures2d', 'Features2d_RotationInvariance_Descriptor_VGG64.regression', 2113.12),
51
('xfeatures2d', 'Features2d_RotationInvariance_Descriptor_VGG80.regression', 2167.16),
52
('xfeatures2d', 'Features2d_ScaleInvariance_Descriptor_BoostDesc_LBGM.regression', 1511.39),
53
('xfeatures2d', 'Features2d_ScaleInvariance_Descriptor_VGG120.regression', 1222.07),
54
('xfeatures2d', 'Features2d_ScaleInvariance_Descriptor_VGG48.regression', 1059.14),
55
('xfeatures2d', 'Features2d_ScaleInvariance_Descriptor_VGG64.regression', 1163.41),
56
('xfeatures2d', 'Features2d_ScaleInvariance_Descriptor_VGG80.regression', 1179.06),
57
('ximgproc', 'L0SmoothTest.SplatSurfaceAccuracy', 6382.26),
58
('ximgproc', 'perf*/1*:perf*/2*:perf*/3*:perf*/4*:perf*/5*:perf*/6*:perf*/7*:perf*/8*:perf*/9*', 1000.0), # only first 10 parameters
59
('ximgproc', 'TypicalSet1/RollingGuidanceFilterTest.MultiThreadReproducibility/5', 1086.33),
60
('ximgproc', 'TypicalSet1/RollingGuidanceFilterTest.MultiThreadReproducibility/7', 1405.05),
61
('ximgproc', 'TypicalSet1/RollingGuidanceFilterTest.SplatSurfaceAccuracy/5', 1253.07),
62
('ximgproc', 'TypicalSet1/RollingGuidanceFilterTest.SplatSurfaceAccuracy/7', 1599.98),
63
('ximgproc', '*MultiThreadReproducibility*/1:*MultiThreadReproducibility*/2:*MultiThreadReproducibility*/3:*MultiThreadReproducibility*/4:*MultiThreadReproducibility*/5:*MultiThreadReproducibility*/6:*MultiThreadReproducibility*/7:*MultiThreadReproducibility*/8:*MultiThreadReproducibility*/9:*MultiThreadReproducibility*/1*', 1000.0),
64
('ximgproc', '*AdaptiveManifoldRefImplTest*/1:*AdaptiveManifoldRefImplTest*/2:*AdaptiveManifoldRefImplTest*/3', 1000.0),
65
('ximgproc', '*JointBilateralFilterTest_NaiveRef*', 1000.0),
66
('ximgproc', '*RollingGuidanceFilterTest_BilateralRef*/1*:*RollingGuidanceFilterTest_BilateralRef*/2*:*RollingGuidanceFilterTest_BilateralRef*/3*', 1000.0),
67
('ximgproc', '*JointBilateralFilterTest_NaiveRef*', 1000.0),
68
]
69
70
71
def longTestFilter(data, module=None):
72
res = ['*', '-'] + [v for m, v, _time in data if module is None or m == module]
73
return '--gtest_filter={}'.format(':'.join(res))
74
75
76
# Parse one xml file, filter out tests which took less than 'timeLimit' seconds
77
# Returns tuple: ( <module_name>, [ (<module_name>, <test_name>, <test_time>), ... ] )
78
def parseOneFile(filename, timeLimit):
79
tree = ET.parse(filename)
80
root = tree.getroot()
81
82
def guess(s, delims):
83
for delim in delims:
84
tmp = s.partition(delim)
85
if len(tmp[1]) != 0:
86
return tmp[0]
87
return None
88
module = guess(filename, ['_posix_', '_nt_', '__']) or root.get('cv_module_name')
89
if not module:
90
return (None, None)
91
res = []
92
for elem in root.findall('.//testcase'):
93
key = '{}.{}'.format(elem.get('classname'), elem.get('name'))
94
val = elem.get('time')
95
if float(val) >= timeLimit:
96
res.append((module, key, float(val)))
97
return (module, res)
98
99
100
# Parse all xml files in current folder and combine results into one list
101
# Print result to the stdout
102
if __name__ == '__main__':
103
LIMIT = 1000
104
res = []
105
xmls = glob('*.xml')
106
for xml in xmls:
107
print('Parsing file', xml, '...')
108
module, testinfo = parseOneFile(xml, LIMIT)
109
if not module:
110
print('SKIP')
111
continue
112
res.extend(testinfo)
113
114
print('========= RESULTS =========')
115
PP(indent=4, width=100).pprint(sorted(res))
116
117