Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Did you use https://github.com/clovaai/synthtiger before? #7339

Closed
nissansz opened this issue Aug 14, 2023 · 8 comments
Closed

Did you use https://github.com/clovaai/synthtiger before? #7339

nissansz opened this issue Aug 14, 2023 · 8 comments

Comments

@nissansz
Copy link

I tested performance for single line and single image generation, 20 lines, result as before,
pure pillow, about 2s
synthtiger: 40s

I wonder how to improve speed for synthtiger, not considering worker number.

@nissansz
Copy link
Author

    6090675 function calls (6043707 primitive calls) in 72.690 seconds

Ordered by: internal time

ncalls tottime percall cumtime percall filename:lineno(function)
2892831 34.393 0.000 34.393 0.000 {floodFill}
104 10.388 0.100 46.299 0.445 template_cnjpkr_str.py:295(_check_visibility)
2284 2.987 0.001 2.987 0.001 {method 'getsize' of 'FontFamily' objects}
17726 2.218 0.000 2.218 0.000 {method 'astype' of 'numpy.ndarray' objects}
115572/77434 1.928 0.000 5.748 0.000 {built-in method numpy.core._multiarray_umath.implement_array_function}
150664 1.924 0.000 2.687 0.000 {built-in method numpy.array}
181 1.322 0.007 1.322 0.007 {method 'round' of 'numpy.ndarray' objects}
4434 0.745 0.000 0.745 0.000 {built-in method PIL._imaging.alpha_composite}
6 0.618 0.103 0.789 0.132 blending_functions.py:518(hard_light)
4118 0.557 0.000 4.356 0.001 image_util.py:32(paste_image)
286 0.534 0.002 0.534 0.002 {method 'decode' of 'ImagingDecoder' objects}
1910 0.500 0.000 0.500 0.000 {built-in method PIL._imagingft.getfont}
13686 0.490 0.000 0.491 0.000 {built-in method builtins.max}
4475 0.484 0.000 0.484 0.000 {built-in method builtins.min}
9 0.456 0.051 0.634 0.070 blending_functions.py:139(soft_light)
9 0.451 0.050 0.587 0.065 blending_functions.py:839(overlay)
1329 0.449 0.000 0.449 0.000 {method 'render' of 'FontFamily' objects}
955 0.419 0.000 0.419 0.000 {built-in method PIL._imagingft.getfamily}
141 0.413 0.003 0.413 0.003 {method 'repeat' of 'numpy.ndarray' objects}
54 0.385 0.007 1.911 0.035 arithmetic.py:264(_add_elementwise_to_uint8)
1974 0.378 0.000 0.378 0.000 {warpPerspective}
95 0.358 0.004 0.360 0.004 blending_functions.py:61(_compose_alpha)
16109 0.333 0.000 0.333 0.000 {method 'encode' of 'ImagingEncoder' objects}
54 0.324 0.006 0.324 0.006 {method 'normal' of 'numpy.random._generator.Generator' objects}
41720 0.321 0.000 0.321 0.000 {method 'reduce' of 'numpy.ufunc' objects}
4529 0.320 0.000 8.439 0.002 image_util.py:126(blend_image)
108 0.306 0.003 0.601 0.006 image_util.py:262(to_rgb)
10 0.259 0.026 0.405 0.040 blending_functions.py:786(divide)
95 0.218 0.002 0.218 0.002 ufunclike.py:127(isposinf)
43 0.214 0.005 1.001 0.023 gray.py:38(apply)
151 0.210 0.001 0.211 0.001 {method 'permutation' of 'numpy.random.mtrand.RandomState' objects}
16614 0.210 0.000 0.210 0.000 _methods.py:106(_clip_dep_invoke_with_casting)
9 0.208 0.023 0.359 0.040 blending_functions.py:306(dodge)
16 0.207 0.013 0.207 0.013 {method 'convert' of 'ImagingCore' objects}
11 0.206 0.019 0.418 0.038 blending_functions.py:412(darken_only)
5417 0.206 0.000 0.206 0.000 {method 'join' of 'bytes' objects}
955 0.184 0.000 0.184 0.000 {remap}
6 0.182 0.030 0.300 0.050 blending_functions.py:253(screen)
95 0.173 0.002 0.173 0.002 ufunclike.py:199(isneginf)
1952 0.166 0.000 0.166 0.000 {GaussianBlur}
11 0.161 0.015 0.362 0.033 blending_functions.py:359(addition)
8 0.156 0.020 0.339 0.042 blending_functions.py:465(multiply)
7 0.149 0.021 0.300 0.043 blending_functions.py:575(difference)
9 0.148 0.016 0.302 0.034 blending_functions.py:200(lighten_only)
207 0.136 0.001 8.625 0.042 switch.py:38(apply)
23 0.125 0.005 4.905 0.213 template_cnjpkr_str.py:228()
1979 0.124 0.000 0.124 0.000 {method 'nonzero' of 'numpy.ndarray' objects}
20 0.106 0.005 72.551 3.628 template_cnjpkr_str.py:108(generate)
1956 0.097 0.000 1.285 0.001 image_util.py:149(fit_image)
39820 0.096 0.000 0.450 0.000 fromnumeric.py:69(_wrapreduction)
8922 0.088 0.000 0.317 0.000 Image.py:3030(fromarray)
272030 0.088 0.000 0.088 0.000 {built-in method builtins.round}
16 0.081 0.005 1.793 0.112 base_texture.py:75(data)
2448 0.078 0.000 0.098 0.000 image_util.py:13(create_image)
33228 0.077 0.000 0.220 0.000 _methods.py:91(_clip_dep_is_scalar_nan)
16 0.075 0.005 1.712 0.107 base_texture.py:97(_read_texture)
16 0.074 0.005 0.074 0.005 {method 'copy' of 'ImagingCore' objects}
955 0.073 0.000 0.416 0.000 geometric.py:4556(_map_coordinates)
23 0.067 0.003 3.271 0.142 fit.py:16(apply)
27298 0.067 0.000 0.206 0.000 _dtype.py:328(_name_get)
9362 0.065 0.000 0.275 0.000 image_util.py:223(to_bbox)
6081 0.063 0.000 0.063 0.000 {method 'random' of 'numpy.random.generator.Generator' objects}
1955 0.062 0.000 0.442 0.000 blur.py:30(blur_gaussian
)
5405 0.062 0.000 0.756 0.000 Image.py:687(array_interface)
2105 0.062 0.000 3.458 0.002 layer.py:50(output)
16614 0.055 0.000 0.515 0.000 _methods.py:125(_clip)
955 0.053 0.000 0.529 0.001 geometric.py:4524(_generate_shift_maps)
23 0.052 0.002 51.403 2.235 template_cnjpkr_str.py:282(_blend_images)
955 0.051 0.000 4.780 0.005 text_layer.py:15(init)
185802/185200 0.051 0.000 0.083 0.000 {built-in method builtins.isinstance}
47 0.050 0.001 0.050 0.001 {resize}
23247 0.050 0.000 0.074 0.000 Image.py:543(_new)
11206 0.049 0.000 0.049 0.000 {built-in method PIL._imaging.fill}
127 0.049 0.000 0.051 0.000 arraypad.py:86(pad_simple)
5405 0.049 0.000 0.657 0.000 Image.py:729(tobytes)
95 0.047 0.000 0.629 0.007 type_check.py:404(nan_to_num)
33251 0.047 0.000 0.087 0.000 fromnumeric.py:3164(ndim)
34469 0.042 0.000 0.042 0.000 {built-in method numpy.asarray}
6357 0.042 0.000 0.059 0.000 image_util.py:208(to_quad)
18 0.041 0.002 2.829 0.157 additive_gaussian_noise.py:33(apply)
1329 0.041 0.000 0.041 0.000 {method 'draw_bitmap' of 'ImagingDraw' objects}
8922 0.039 0.000 0.225 0.000 Image.py:2973(frombuffer)
2907 0.039 0.000 0.044 0.000 blur.py:370(compute_gaussian_blur_ksize)
18 0.037 0.002 0.312 0.017 median_blur.py:30(apply)
9877 0.037 0.000 0.146 0.000 Image.py:2896(new)
1135/1117 0.037 0.000 4.062 0.004 meta.py:553(augment_batch
)
1 0.036 0.036 72.690 72.690 text2png_synthtiger_1line_horizontal_20230814_cprofile.py:229(test)
15 0.036 0.002 0.298 0.020 gussian_blur.py:30(apply)
27573 0.035 0.000 0.085 0.000 numerictypes.py:356(issubdtype)
2979 0.034 0.000 0.089 0.000 dtypes.py:285(gate_dtypes)
19276 0.033 0.000 0.222 0.000 fromnumeric.py:2800(amin)
54 0.032 0.001 0.032 0.001 {medianBlur}
33172 0.032 0.000 0.032 0.000 Image.py:512(init)
55146 0.031 0.000 0.046 0.000 numerictypes.py:282(issubclass
)
19277 0.028 0.000 0.184 0.000 fromnumeric.py:2675(amax)
27298 0.028 0.000 0.111 0.000 _dtype.py:314(_name_includes_bit_suffix)
275 0.028 0.000 0.041 0.000 {method 'choice' of 'numpy.random.mtrand.RandomState' objects}
1933 0.027 0.000 0.035 0.000 stride_tricks.py:339(_broadcast_to)
33251 0.027 0.000 0.143 0.000 <array_function internals>:177(ndim)
320 0.027 0.000 1.054 0.003 layer.py:289(output)
337 0.027 0.000 0.027 0.000 {built-in method nt.stat}
39820 0.026 0.000 0.026 0.000 fromnumeric.py:70()
1117 0.026 0.000 4.099 0.004 meta.py:1689(augment)
16614 0.025 0.000 0.581 0.000 fromnumeric.py:2083(clip)
114571 0.025 0.000 0.027 0.000 {built-in method builtins.issubclass}
20 0.025 0.001 1.335 0.067 template_cnjpkr_str.py:259(_generate_background)
190 0.025 0.000 0.416 0.002 ufunclike.py:48(func)
2013 0.024 0.000 0.024 0.000 {getPerspectiveTransform}
51310 0.024 0.000 0.024 0.000 {built-in method builtins.getattr}
19276 0.024 0.000 0.276 0.000 <array_function internals>:177(amin)
56121 0.024 0.000 0.078 0.000 layer.py:72(quad)
3424 0.024 0.000 0.024 0.000 {built-in method numpy.zeros}
5126 0.023 0.000 0.023 0.000 random.py:1379(set_generator_state_np117)
33228 0.022 0.000 0.030 0.000 _methods.py:101(_clip_dep_is_byte_swapped)
2823 0.022 0.000 0.121 0.000 layer.py:152(topleft)
5405 0.022 0.000 0.038 0.000 Image.py:248(_conv_type_shape)
13478/6739 0.021 0.000 0.077 0.000 configparser.py:765(get)
8904 0.021 0.000 0.021 0.000 {built-in method PIL._imaging.map_buffer}
5405 0.021 0.000 0.035 0.000 Image.py:417(_getencoder)
212 0.021 0.000 0.111 0.001 rgb.py:43(apply)
18817 0.021 0.000 0.029 0.000 Image.py:2875(_check_size)
19161 0.020 0.000 2.422 0.000 fromnumeric.py:51(_wrapfunc)
1329 0.020 0.000 0.919 0.001 ImageDraw.py:453(draw_text)
19277 0.019 0.000 0.229 0.000 <array_function internals>:177(amax)
116521/116483 0.019 0.000 0.019 0.000 {built-in method builtins.len}
9362 0.019 0.000 0.307 0.000 layer.py:76(quad)
16614 0.019 0.000 0.534 0.000 {method 'clip' of 'numpy.ndarray' objects}
15276 0.019 0.000 0.026 0.000 Image.py:835(load)
23 0.019 0.001 0.263 0.011 pad.py:57(apply)
1877 0.019 0.000 0.039 0.000 _methods.py:162(_mean)
16614 0.018 0.000 0.622 0.000 <array_function internals>:177(clip)
1910 0.018 0.000 0.524 0.000 ImageFont.py:217(init)
955 0.018 0.000 0.473 0.000 geometric.py:4361(_augment_image_by_samples)
23 0.018 0.001 15.046 0.654 template_cnjpkr_str.py:217(_generate_text)
5126 0.017 0.000 0.017 0.000 random.py:1351(_get_generator_state_np117)
5126/5018 0.017 0.000 0.570 0.000 parameters.py:389(draw_samples)
1329 0.016 0.000 0.856 0.001 ImageFont.py:1059(getmask2)
1117 0.016 0.000 0.125 0.000 batches.py:170(to_normalized_batch)
16 0.016 0.001 2.045 0.128 base_texture.py:64(apply)
2 0.016 0.008 0.608 0.304 text_extrusion.py:60(apply)
22 0.016 0.001 0.365 0.017 flow_layout.py:70(apply)
955 0.015 0.000 1.279 0.001 geometric.py:4308(augment_batch)
2118 0.015 0.000 0.015 0.000 {method 'copy' of 'numpy.ndarray' objects}
54 0.015 0.000 0.376 0.007 parameters.py:1074(_draw_samples)
54 0.015 0.000 1.930 0.036 arithmetic.py:207(add_elementwise)
27418 0.015 0.000 0.015 0.000 {method 'format' of 'str' objects}
6357 0.014 0.000 0.087 0.000 layer.py:85(bbox)
5054 0.014 0.000 0.082 0.000 parameters.py:666(_draw_samples)
3097 0.014 0.000 0.285 0.000 layer.py:16(init)
955 0.014 0.000 0.014 0.000 {convertMaps}
955 0.014 0.000 3.694 0.004 text_layer.py:160(_get_image)
13404 0.014 0.000 0.036 0.000 normalization.py:1186(estimate_normalization_type)
107 0.013 0.000 0.013 0.000 {dilate}
986 0.013 0.000 0.064 0.000 layer.py:305()
45 0.013 0.000 0.057 0.001 blur.py:459(augment_batch)
18992 0.013 0.000 0.021 0.000 {built-in method _abc._abc_instancecheck}
13404 0.013 0.000 0.018 0.000 normalization.py:1257(_nonempty_info_to_type_str)
7208 0.013 0.000 0.014 0.000 {built-in method builtins.any}
46 0.013 0.000 0.057 0.001 configparser.py:725(read_dict)
686 0.013 0.000 0.040 0.000 image_util.py:248(merge_bbox)
1500 0.012 0.000 0.012 0.000 {method 'randint' of 'numpy.random.mtrand.RandomState' objects}
4434 0.012 0.000 0.785 0.000 Image.py:3296(alpha_composite)
955 0.012 0.000 0.431 0.000 ImageFont.py:893(init)
23388 0.012 0.000 0.033 0.000 layer.py:81(bbox)
913 0.012 0.000 0.068 0.000 layer.py:238(centery)
6702 0.012 0.000 0.020 0.000 normalization.py:12(_preprocess_shapes)
320 0.011 0.000 1.127 0.004 layer.py:298(merge)
6739 0.011 0.000 0.039 0.000 configparser.py:406(_interpolate_some)
20 0.011 0.001 72.654 3.633 text2png_synthtiger_1line_horizontal_20230814_cprofile.py:59(text2png)
4468 0.011 0.000 0.022 0.000 normalization.py:1152(_estimate_polygons_and_line_segments_norm_type)
2099 0.011 0.000 0.017 0.000 batches.py:29(_get_columns)
13478 0.011 0.000 0.016 0.000 configparser.py:1139(_unify_values)
8490 0.010 0.000 0.010 0.000 {built-in method numpy.empty}
955 0.010 0.000 0.192 0.000 geometric.py:4297(_draw_samples)
13478 0.010 0.000 0.010 0.000 init.py:892(getitem)
1944 0.010 0.000 0.010 0.000 {method 'read' of 'io.BufferedReader' objects}
5054 0.010 0.000 0.040 0.000 numeric.py:289(full)
49784 0.010 0.000 0.010 0.000 {method 'append' of 'list' objects}
1117 0.010 0.000 0.071 0.000 batches.py:218(fill_from_augmented_normalized_batch
)
27048 0.010 0.000 0.016 0.000 configparser.py:874(optionxform)
27298 0.009 0.000 0.009 0.000 _dtype.py:24(_kind_name)
986 0.009 0.000 0.070 0.000 image_util.py:231(merge_quad)
5802 0.009 0.000 0.023 0.000 layer.py:148(topleft)
8214 0.009 0.000 0.080 0.000 <array_function internals>:177(copyto)
25 0.009 0.000 0.061 0.002 layer.py:307(quad)
2234 0.009 0.000 0.028 0.000 normalization.py:415(_normalize_polygons_and_line_strings)
6716 0.009 0.000 0.102 0.000 configparser.py:805(_get_conv)
16077 0.009 0.000 0.012 0.000 imgaug.py:201(is_np_array)
6716 0.009 0.000 0.094 0.000 configparser.py:802(_get)
41041 0.009 0.000 0.009 0.000 {method 'items' of 'dict' objects}
955 0.009 0.000 0.041 0.000 batches.py:753(get_rowwise_shapes)
6785 0.008 0.000 0.021 0.000 configparser.py:891(set)
955 0.008 0.000 0.973 0.001 text_layer.py:33(_read_font)
6785 0.008 0.000 0.037 0.000 configparser.py:1197(set)
6716 0.008 0.000 0.111 0.000 configparser.py:826(getboolean)
2961 0.008 0.000 0.026 0.000 imgaug.py:2147(normalize_cv2_input_arr)
40493 0.008 0.000 0.008 0.000 {method 'lower' of 'str' objects}
6739 0.008 0.000 0.119 0.000 configparser.py:1291(get)
5209 0.008 0.000 0.010 0.000 random.py:150(init)
18992 0.008 0.000 0.028 0.000 abc.py:96(instancecheck)
48 0.007 0.000 0.007 0.000 {built-in method io.open}
6413 0.007 0.000 0.007 0.000 Image.py:525(getattr)
1877 0.007 0.000 0.009 0.000 _methods.py:66(_count_reduce_items)
5126 0.007 0.000 0.066 0.000 random.py:1471(advance_generator_np117)
12860 0.007 0.000 0.031 0.000 imgaug.py:242(is_single_integer)
1117 0.007 0.000 0.016 0.000 normalization.py:159(normalize_heatmaps)
23 0.007 0.000 1.568 0.068 elastic_distortion.py:33(apply)
2234 0.007 0.000 0.021 0.000 normalization.py:882(_invert_normalize_polygons_and_line_strings)
23 0.007 0.000 0.124 0.005 arabic_reshaper.py:74(_ligatures_re)
3 0.007 0.002 0.085 0.028 resample.py:30(apply)
5126 0.007 0.000 0.048 0.000 random.py:1223(reset_generator_cache_np117)
955 0.007 0.000 0.081 0.000 function_base.py:4805(meshgrid)
5405 0.007 0.000 0.007 0.000 {built-in method PIL._imaging.raw_encoder}
15260 0.007 0.000 0.007 0.000 {method 'pixel_access' of 'ImagingCore' objects}
2872 0.007 0.000 0.007 0.000 {method 'dot' of 'numpy.ndarray' objects}
986 0.007 0.000 0.141 0.000 layer.py:303(quad)
5405 0.007 0.000 0.007 0.000 {method 'setimage' of 'ImagingEncoder' objects}
33251 0.007 0.000 0.007 0.000 fromnumeric.py:3160(_ndim_dispatcher)
5892/5294 0.006 0.000 0.007 0.000 {built-in method _abc.abc_subclasscheck}
10810 0.006 0.000 0.009 0.000 Image.py:535(height)
913 0.006 0.000 0.009 0.000 layer.py:156(topright)
22609 0.006 0.000 0.006 0.000 {method 'get' of 'dict' objects}
7 0.006 0.001 0.042 0.006 skew.py:38(apply)
5126 0.006 0.000 0.073 0.000 random.py:1447(advance_generator
)
6716 0.006 0.000 0.008 0.000 configparser.py:1159(_convert_to_boolean)
955 0.006 0.000 0.053 0.000 stride_tricks.py:479(broadcast_arrays)
6739 0.006 0.000 0.046 0.000 configparser.py:393(before_get)
955 0.006 0.000 0.006 0.000 stride_tricks.py:415(_broadcast_shape)
3934 0.006 0.000 0.011 0.000 dtypes.py:23(normalize_dtype)
749 0.006 0.000 0.006 0.000 {method 'uniform' of 'numpy.random.mtrand.RandomState' objects}
955 0.006 0.000 0.930 0.001 ImageDraw.py:405(text)
3991 0.006 0.000 0.100 0.000 <array_function internals>:177(copy)
1117 0.006 0.000 0.011 0.000 batches.py:186()
27265 0.006 0.000 0.006 0.000 Image.py:539(size)
3 0.006 0.002 0.256 0.085 text_shadow.py:59(apply)
1910 0.006 0.000 0.530 0.000 ImageFont.py:1308(freetype)
955 0.006 0.000 0.016 0.000 dtypes.py:192(get_value_range_of_dtype)
1117 0.006 0.000 0.012 0.000 normalization.py:525(invert_normalize_images)
1117 0.006 0.000 0.089 0.000 batches.py:433(to_batch_in_augmentation)
13478 0.006 0.000 0.006 0.000 init.py:882(init)
1910 0.005 0.000 0.005 0.000 {built-in method numpy.arange}
955 0.005 0.000 0.009 0.000 ImageDraw.py:51(init)
6831 0.005 0.000 0.008 0.000 configparser.py:1166(_validate_value_types)
10810 0.005 0.000 0.008 0.000 Image.py:531(width)
5405 0.005 0.000 0.005 0.000 ImageMode.py:36(getmode)
18 0.005 0.000 0.026 0.001 imgaug.py:1310(imresize_many_images)
955 0.005 0.000 2.622 0.003 text_layer.py:180(_get_bbox)
955 0.005 0.000 0.016 0.000 ImageDraw.py:849(Draw)
16765 0.005 0.000 0.005 0.000 {method 'endswith' of 'str' objects}
23247 0.005 0.000 0.005 0.000 {method 'copy' of 'dict' objects}
6785 0.005 0.000 0.009 0.000 configparser.py:398(before_set)
19276 0.005 0.000 0.005 0.000 fromnumeric.py:2795(_amin_dispatcher)
277 0.005 0.000 0.005 0.000 arraypad.py:129(_set_pad_area)
1877 0.004 0.000 0.043 0.000 fromnumeric.py:3356(mean)
13404 0.004 0.000 0.004 0.000 normalization.py:1214(find_first_nonempty)
3987 0.004 0.000 0.007 0.000 ImageFont.py:1151()
1117 0.004 0.000 0.079 0.000 utils.py:10(copy_augmentables)
2875 0.004 0.000 0.018 0.000 numeric.py:149(ones)
955 0.004 0.000 0.007 0.000 function_base.py:4936()
19277 0.004 0.000 0.004 0.000 fromnumeric.py:2670(_amax_dispatcher)
16614 0.004 0.000 0.004 0.000 fromnumeric.py:2079(clip_dispatcher)
1739 0.004 0.000 0.144 0.000 layer.py:45(copy)
1117 0.004 0.000 0.012 0.000 normalization.py:306(normalize_bounding_boxes)
1117 0.004 0.000 0.019 0.000 normalization.py:389(normalize_polygons)
955 0.004 0.000 0.004 0.000 getlimits.py:647(init)
1117 0.004 0.000 0.012 0.000 normalization.py:190(normalize_segmentation_maps)
955 0.004 0.000 2.615 0.003 ImageFont.py:995(getbbox)
127 0.004 0.000 0.069 0.001 arraypad.py:529(pad)
1117 0.004 0.000 4.103 0.004 meta.py:2006(call)
1117 0.004 0.000 0.011 0.000 normalization.py:233(normalize_keypoints)
6260 0.004 0.000 0.005 0.000 {built-in method builtins.all}
6013 0.004 0.000 0.005 0.000 imgaug.py:316(is_string)
5126 0.004 0.000 0.077 0.000 random.py:354(advance
)
1117 0.004 0.000 0.008 0.000 normalization.py:130(normalize_images)
2872 0.004 0.000 0.017 0.000 function_base.py:5337(append)
4 0.004 0.001 0.025 0.006 trapezoidate.py:51(apply)
320 0.004 0.000 0.035 0.000 :1431(find_spec)
3241 0.004 0.000 0.016 0.000 imgaug.py:259(is_single_float)
1910 0.004 0.000 0.533 0.000 ImageFont.py:1248(truetype)
3144 0.003 0.000 0.488 0.000 <array_function internals>:177(concatenate)
2234 0.003 0.000 0.013 0.000 normalization.py:1058(estimate_heatmaps_norm_type)
1117 0.003 0.000 0.016 0.000 normalization.py:402(normalize_line_strings)
1979 0.003 0.000 0.136 0.000 <array_function internals>:177(nonzero)
16 0.003 0.000 0.543 0.034 ImageFile.py:155(load)
955 0.003 0.000 3.697 0.004 text_layer.py:55(_render_hori_text)
2097 0.003 0.000 0.003 0.000 {method 'reshape' of 'numpy.ndarray' objects}
2979 0.003 0.000 0.011 0.000 dtypes.py:17(normalize_dtypes)
9 0.003 0.000 0.045 0.005 rotate.py:34(apply)
3991 0.003 0.000 0.086 0.000 function_base.py:846(copy)
2979 0.003 0.000 0.003 0.000 {method 'intersection' of 'set' objects}
12287 0.003 0.000 0.003 0.000 normalization.py:1051(_assert_is_of_norm_type)
3097 0.003 0.000 0.003 0.000 image_util.py:200(add_alpha_channel)
1027 0.003 0.000 0.004 0.000 random.py:400(duplicate)
2658 0.003 0.000 0.003 0.000 {built-in method math.ceil}
156 0.003 0.000 0.004 0.000 arraysetops.py:320(_unique1d)
686 0.003 0.000 0.012 0.000 layer.py:318()
2872 0.003 0.000 0.023 0.000 <array_function internals>:177(append)
2234 0.003 0.000 0.009 0.000 normalization.py:1091(estimate_keypoints_norm_type)
254 0.003 0.000 0.008 0.000 arraypad.py:454(_as_pairs)
3 0.003 0.001 0.019 0.006 perspective.py:62(apply)
2234 0.003 0.000 0.009 0.000 normalization.py:1072(estimate_segmaps_norm_type)
5892/5294 0.003 0.000 0.009 0.000 abc.py:100(subclasscheck)
6808 0.003 0.000 0.003 0.000 {method 'sub' of 're.Pattern' objects}
955 0.003 0.000 0.017 0.000 fromnumeric.py:2404(all)
7819 0.003 0.000 0.082 0.000 batches.py:444(_copy)
914 0.003 0.000 0.003 0.000 {method 'rand' of 'numpy.random.mtrand.RandomState' objects}
686 0.003 0.000 0.055 0.000 layer.py:316(bbox)
3 0.003 0.001 0.011 0.004 template_cnjpkr_str.py:326(_create_poly_mask)
955 0.002 0.000 0.037 0.000 stride_tricks.py:545()
913 0.002 0.000 0.155 0.000 layer.py:474(centery)
23 0.002 0.000 0.130 0.006 arabic_reshaper.py:100(reshape)
1877 0.002 0.000 0.048 0.000 <array_function internals>:177(mean)
2234 0.002 0.000 0.014 0.000 normalization.py:1142(estimate_polygons_norm_type)
32 0.002 0.000 0.080 0.002 base_texture.py:29(sample)
2658 0.002 0.000 0.002 0.000 {built-in method math.modf}
2108 0.002 0.000 0.003 0.000 batches.py:698(nb_rows)
342 0.002 0.000 0.097 0.000 switch.py:21(sample)
7784 0.002 0.000 0.002 0.000 {method 'replace' of 'str' objects}
1117 0.002 0.000 0.015 0.000 normalization.py:864(invert_normalize_polygons)
1117 0.002 0.000 0.002 0.000 batches.py:350(init)
6739 0.002 0.000 0.002 0.000 {method 'find' of 'str' objects}
1979 0.002 0.000 0.129 0.000 fromnumeric.py:1866(nonzero)
3 0.002 0.001 0.010 0.003 image_util.py:79(erase_image)
104 0.002 0.000 0.002 0.000 {getStructuringElement}
2006 0.002 0.000 0.003 0.000 _util.py:5(is_path)
1117 0.002 0.000 0.002 0.000 batches.py:133(init)
54 0.002 0.000 2.315 0.043 arithmetic.py:1709(augment_batch)
8214 0.002 0.000 0.002 0.000 multiarray.py:1071(copyto)
27 0.002 0.000 0.004 0.000 TiffImagePlugin.py:795(load)
955 0.002 0.000 0.084 0.000 <array_function internals>:177(meshgrid)
3 0.002 0.001 0.074 0.025 template_cnjpkr_str.py:266(erase_image)
9423 0.002 0.000 0.002 0.000 {method 'join' of 'str' objects}
3 0.002 0.001 0.002 0.001 {findContours}
1117 0.002 0.000 0.002 0.000 meta.py:1912()
1972 0.002 0.000 0.002 0.000 {method 'decode' of 'bytes' objects}
645 0.002 0.000 0.002 0.000 getlimits.py:457(new)
2234 0.002 0.000 0.012 0.000 normalization.py:1147(estimate_line_strings_norm_type)
2099 0.002 0.000 0.019 0.000 batches.py:719(columns)
1117 0.002 0.000 0.002 0.000 batches.py:460(fill_from_batch_in_augmentation
)
955 0.002 0.000 0.021 0.000 <array_function internals>:177(all)
23 0.002 0.000 0.002 0.000 {built-in method builtins.dir}
2099 0.002 0.000 0.003 0.000 :1(new)
212 0.002 0.000 0.009 0.000 rgb.py:20(sample)
2147 0.002 0.000 0.002 0.000 {built-in method new of type object at 0x00007FFA8589A810}
7161 0.002 0.000 0.002 0.000 {built-in method numpy.asanyarray}
18 0.002 0.000 0.028 0.002 imgaug.py:1583(imresize_single_image)
1117 0.002 0.000 0.002 0.000 base.py:41(_warn_on_suspicious_single_image_shape)
123 0.002 0.000 0.002 0.000 {convexHull}
1377 0.002 0.000 0.002 0.000 Image.py:3153(_decompression_bomb_check)
5799 0.002 0.000 0.002 0.000 stride_tricks.py:344()
955 0.002 0.000 0.003 0.000 ImageDraw.py:118(_getink)
1117 0.002 0.000 0.009 0.000 normalization.py:589(invert_normalize_heatmaps)
1597 0.002 0.000 0.004 0.000 :62(_path_join)
8 0.002 0.000 0.002 0.000 {built-in method marshal.loads}
6834 0.002 0.000 0.002 0.000 {method 'add' of 'set' objects}
955 0.001 0.000 0.010 0.000 function_base.py:4949()
2300 0.001 0.000 0.009 0.000 imgaug.py:297(is_iterable)
23 0.001 0.000 0.205 0.009 unicode_util.py:133(split_text)
1117 0.001 0.000 0.010 0.000 normalization.py:873(invert_normalize_line_strings)
955 0.001 0.000 0.056 0.000 <array_function internals>:177(broadcast_arrays)
955 0.001 0.000 0.054 0.000 random.py:1525(polyfill_random)
126 0.001 0.000 0.046 0.000 JpegImagePlugin.py:61(APP)
913 0.001 0.000 0.004 0.000 layer.py:124(bottom)
76 0.001 0.000 0.001 0.000 {built-in method builtins.print}
45 0.001 0.000 0.003 0.000 {method 'normal' of 'numpy.random.mtrand.RandomState' objects}
1933 0.001 0.000 0.002 0.000 function_base.py:346(iterable)
955 0.001 0.000 0.055 0.000 random.py:480(random)
1910 0.001 0.000 0.001 0.000 {method 'draw_ink' of 'ImagingDraw' objects}
1910 0.001 0.000 0.001 0.000 getlimits.py:671(max)
48 0.001 0.000 0.051 0.001 JpegImagePlugin.py:351(_open)
1117 0.001 0.000 0.004 0.000 normalization.py:1116(estimate_bounding_boxes_norm_type)
955 0.001 0.000 0.001 0.000 text_layer.py:214(_get_stroke_width)
955 0.001 0.000 3.698 0.004 text_layer.py:47(_render_text)
1135 0.001 0.000 0.001 0.000 meta.py:201(init)
23 0.001 0.000 0.008 0.000 base_font.py:119(_sample_font)
2979 0.001 0.000 0.001 0.000 {method 'match' of 're.Pattern' objects}
231 0.001 0.000 0.091 0.000 fromnumeric.py:2160(sum)
1933 0.001 0.000 0.001 0.000 stride_tricks.py:25(_maybe_view_as_subclass)
1597 0.001 0.000 0.002 0.000 :64()
1 0.001 0.001 0.002 0.002 {built-in method _imp.create_dynamic}
955 0.001 0.000 0.002 0.000 stride_tricks.py:537()
156 0.001 0.000 0.001 0.000 {method 'cumsum' of 'numpy.ndarray' objects}
955 0.001 0.000 0.001 0.000 ImageFont.py:1169(getmetrics)
955 0.001 0.000 0.001 0.000 ImageDraw.py:381(_multiline_check)
95 0.001 0.000 0.002 0.000 type_check.py:394(_getmaxmin)
3991 0.001 0.000 0.001 0.000 function_base.py:842(_copy_dispatcher)
1120 0.001 0.000 0.001 0.000 imgaug.py:333(is_single_bool)
1117 0.001 0.000 0.006 0.000 normalization.py:672(invert_normalize_keypoints)
1910 0.001 0.000 0.001 0.000 stride_tricks.py:541()
1117 0.001 0.000 0.001 0.000 batches.py:670(init)
23 0.001 0.000 0.001 0.000 algorithm.py:310(resolve_weak_types)
8 0.001 0.000 0.001 0.000 {built-in method io.open_code}
955 0.001 0.000 0.001 0.000 geometric.py:4020(init)
1117 0.001 0.000 0.006 0.000 normalization.py:629(invert_normalize_segmentation_maps)
1910 0.001 0.000 0.001 0.000 {method 'encode' of 'str' objects}
63 0.001 0.000 0.322 0.005 gray.py:20(sample)
955 0.001 0.000 0.004 0.000 ImageDraw.py:447(getink)
54 0.001 0.000 0.037 0.001 blur.py:786(augment_batch)
1135 0.001 0.000 0.003 0.000 batches.py:683(empty)
1663 0.001 0.000 0.001 0.000 {built-in method builtins.hasattr}
1027 0.001 0.000 0.001 0.000 random.py:425()
3 0.001 0.000 0.037 0.012 layer.py:65(erase)
23 0.001 0.000 0.001 0.000 {method 'findall' of '_regex.Pattern' objects}
23 0.001 0.000 0.062 0.003 reshaper_config.py:367(auto_config)
48 0.001 0.000 0.053 0.001 Image.py:3242(_open_core)
156 0.001 0.000 0.036 0.000 selector.py:25(sample)
173 0.001 0.000 0.002 0.000 TiffImagePlugin.py:574(_setitem)
9 0.001 0.000 0.036 0.004 :1302(_get_spec)
123 0.001 0.000 0.001 0.000 {fillConvexPoly}
95 0.001 0.000 0.001 0.000 shape_base.py:139(atleast_3d)
23 0.001 0.000 0.003 0.000 configparser.py:1317(init)
1117 0.001 0.000 0.003 0.000 normalization.py:765(invert_normalize_bounding_boxes)
602 0.001 0.000 0.004 0.000 typing.py:768(instancecheck)
20 0.001 0.000 0.289 0.014 gray_map.py:19(sample)
95 0.001 0.000 0.002 0.000 _ufunc_config.py:32(seterr)
104 0.001 0.000 1.231 0.012 image_util.py:257(to_gray)
602 0.001 0.000 0.003 0.000 typing.py:771(subclasscheck)
16 0.001 0.000 0.001 0.000 {built-in method PIL._imaging.new}
955 0.001 0.000 0.001 0.000 imgaug.py:221(is_np_scalar)
955 0.001 0.000 0.001 0.000 {built-in method PIL._imaging.draw}
83 0.001 0.000 0.002 0.000 meta.py:284(init)
955 0.001 0.000 0.003 0.000 dtypes.py:20()
1135 0.001 0.000 0.001 0.000 meta.py:217(exit)
277 0.001 0.000 0.001 0.000 arraypad.py:58(_view_roi)
320 0.001 0.000 0.024 0.000 layer.py:388(topleft)
32 0.001 0.000 0.070 0.002 base_texture.py:106(_get_size)
23 0.001 0.000 0.001 0.000 algorithm.py:153(get_embedding_levels)
231 0.001 0.000 0.092 0.000 <array_function internals>:177(sum)
23 0.001 0.000 0.070 0.003 template_cnjpkr_str.py:231()
390 0.001 0.000 0.003 0.000 layer.py:245(init)
190 0.001 0.000 0.001 0.000 type_checks.py:6(assert_image_format)
95 0.001 0.000 0.320 0.003 shape_base.py:663(dstack)
18 0.001 0.000 0.002 0.000 {method 'choice' of 'numpy.random._generator.Generator' objects}
208 0.001 0.000 0.003 0.000 parameters.py:655(init)
3144 0.001 0.000 0.001 0.000 multiarray.py:148(concatenate)
2872 0.001 0.000 0.001 0.000 function_base.py:5333(_append_dispatcher)
174 0.001 0.000 0.005 0.000 parameters.py:68(handle_continuous_param)
69 0.001 0.000 0.001 0.000 JpegImagePlugin.py:243(DQT)
212 0.001 0.000 0.004 0.000 layer.py:23(add)
104 0.001 0.000 0.001 0.000 {method 'astype' of 'numpy.generic' objects}
1117 0.001 0.000 0.001 0.000 batches.py:199()
1877 0.001 0.000 0.001 0.000 {built-in method numpy.core._multiarray_umath.normalize_axis_index}
1910 0.001 0.000 0.001 0.000 getlimits.py:658(min)
190 0.001 0.000 0.001 0.000 ufunclike.py:22(func)
46 0.001 0.000 0.001 0.000 shape_base.py:1171(tile)
1979 0.001 0.000 0.001 0.000 fromnumeric.py:1862(_nonzero_dispatcher)
23 0.001 0.000 0.001 0.000 algorithm.py:184(explicit_embed_and_overrides)
1117 0.001 0.000 0.001 0.000 meta.py:1918()
16 0.001 0.000 0.001 0.000 {method 'close' of '_io.BufferedReader' objects}
48 0.001 0.000 0.069 0.001 Image.py:3174(open)
2029 0.001 0.000 0.001 0.000 {built-in method builtins.iter}
156 0.001 0.000 0.005 0.000 arraysetops.py:138(unique)
46 0.001 0.000 0.001 0.000 configparser.py:1240(init)
1608 0.001 0.000 0.001 0.000 :222(_verbose_message)
404 0.001 0.000 0.001 0.000 arraypad.py:109()
48 0.001 0.000 0.001 0.000 JpegImagePlugin.py:193(SOF)
27 0.001 0.000 0.046 0.002 Image.py:3653(load)
362 0.001 0.000 0.001 0.000 layer.py:90(size)
127 0.001 0.000 0.071 0.001 <array_function internals>:177(pad)
543 0.001 0.000 0.001 0.000 ImageFile.py:555(_safe_read)
932 0.001 0.000 0.001 0.000 unicode_util.py:104(indic_syllabic_category)
95 0.001 0.000 0.414 0.004 fromnumeric.py:436(repeat)
192 0.001 0.000 0.005 0.000 Image.py:3862(getitem)
1257 0.001 0.000 0.001 0.000 binary.py:80(i16be)
199 0.001 0.000 1.325 0.007 fromnumeric.py:3764(round
)
95 0.001 0.000 0.001 0.000 _ufunc_config.py:131(geterr)
74 0.001 0.000 2.943 0.040 selector.py:39(apply)
199 0.001 0.000 1.324 0.007 fromnumeric.py:3257(around)
42 0.001 0.000 0.003 0.000 layer.py:220(center)
173 0.001 0.000 0.004 0.000 TiffImagePlugin.py:557(getitem)
173/168 0.000 0.000 0.047 0.000 :1017(handle_fromlist)
3210 0.000 0.000 0.000 0.000 {method 'rstrip' of 'str' objects}
199 0.000 0.000 1.326 0.007 <array_function internals>:177(round
)
1521 0.000 0.000 0.000 0.000 {built-in method _struct.unpack_from}
1910 0.000 0.000 0.000 0.000 text_layer.py:218(_get_direction)
23/6 0.000 0.000 0.001 0.000 sre_parse.py:493(_parse)
212 0.000 0.000 0.001 0.000 rgb.py:53(data)
23 0.000 0.000 0.001 0.000 algorithm.py:453(resolve_implicit_levels)
87 0.000 0.000 0.000 0.000 JpegImagePlugin.py:263()
1877 0.000 0.000 0.000 0.000 fromnumeric.py:3351(_mean_dispatcher)
156 0.000 0.000 0.029 0.000 selector.py:57(_sample_idx)
44 0.000 0.000 0.001 0.000 flow_layout.py:35(sample)
23 0.000 0.000 0.002 0.000 template_cnjpkr_str.py:252()
95 0.000 0.000 0.415 0.004 <array_function internals>:177(repeat)
457 0.000 0.000 0.003 0.000 imgaug.py:280(is_single_number)
935 0.000 0.000 0.000 0.000 layer.py:256(getitem)
48 0.000 0.000 0.051 0.001 ImageFile.py:88(init)
23 0.000 0.000 0.004 0.000 geometric.py:4234(init)
23 0.000 0.000 0.002 0.000 template_cnjpkr_str.py:255()
23 0.000 0.000 0.004 0.000 configparser.py:601(init)
104 0.000 0.000 1.230 0.012 <array_function internals>:177(dot)
23 0.000 0.000 0.000 0.000 algorithm.py:517(reorder_resolved_levels)
23 0.000 0.000 0.001 0.000 regex.py:453(_compile)
554 0.000 0.000 0.000 0.000 arraypad.py:33(_slice_at_axis)
156 0.000 0.000 0.001 0.000 <array_function internals>:177(count_nonzero)
1117 0.000 0.000 0.000 0.000 {method 'keys' of 'dict' objects}
156 0.000 0.000 0.002 0.000 fromnumeric.py:2495(cumsum)
404 0.000 0.000 0.000 0.000 arraypad.py:120()
567 0.000 0.000 0.001 0.000 TiffImagePlugin.py:662(_unpack)
23 0.000 0.000 0.000 0.000 algorithm.py:398(resolve_neutral_types)
179 0.000 0.000 0.000 0.000 {method 'flatten' of 'numpy.ndarray' objects}
22 0.000 0.000 0.067 0.003 layer.py:392(topleft)
1 0.000 0.000 0.004 0.004 curve_layout.py:44(apply)
9 0.000 0.000 0.001 0.000 size.py:1492(_compute_height_width)
1135 0.000 0.000 0.000 0.000 meta.py:213(enter)
46 0.000 0.000 0.002 0.000 pad.py:27(sample)
268 0.000 0.000 0.008 0.000 JpegImagePlugin.py:404(load_read)
156 0.000 0.000 0.003 0.000 <array_function internals>:177(cumsum)
23 0.000 0.000 0.006 0.000 algorithm.py:609(get_display)
156 0.000 0.000 0.005 0.000 <array_function internals>:177(unique)
23 0.000 0.000 0.001 0.000 base_font.py:132()
955 0.000 0.000 0.000 0.000 fromnumeric.py:2399(_all_dispatcher)
161 0.000 0.000 0.000 0.000 parameters.py:27(_check_value_range)
48 0.000 0.000 0.052 0.001 JpegImagePlugin.py:823(jpeg_factory)
57 0.000 0.000 0.046 0.001 Image.py:1435(getexif)
199 0.000 0.000 1.324 0.007 <array_function internals>:177(around)
16 0.000 0.000 0.208 0.013 Image.py:889(convert)
156 0.000 0.000 0.001 0.000 numeric.py:425(count_nonzero)
337 0.000 0.000 0.027 0.000 :80(_path_stat)
18 0.000 0.000 0.633 0.035 template_cnjpkr_str.py:278()
95 0.000 0.000 0.321 0.003 <array_function internals>:177(dstack)
23 0.000 0.000 0.000 0.000 algorithm.py:261(calc_level_runs)
18 0.000 0.000 3.532 0.196 iterator.py:34(apply)
95 0.000 0.000 0.000 0.000 type_checks.py:60(assert_opacity)
104 0.000 0.000 0.000 0.000 {method 'ravel' of 'numpy.generic' objects}
95 0.000 0.000 0.000 0.000 {built-in method numpy.seterrobj}
47 0.000 0.000 0.002 0.000 re.py:289(_compile)
955 0.000 0.000 0.000 0.000 function_base.py:4800(_meshgrid_dispatcher)
567 0.000 0.000 0.000 0.000 {built-in method _struct.unpack}
20 0.000 0.000 0.098 0.005 rect_layer.py:12(init)
15 0.000 0.000 0.001 0.000 {built-in method builtins.build_class}
323 0.000 0.000 0.000 0.000 :1265(_path_importer_cache)
23 0.000 0.000 0.008 0.000 base_font.py:39(sample)
95 0.000 0.000 0.231 0.002 <array_function internals>:177(isposinf)
69 0.000 0.000 0.001 0.000 elastic_distortion.py:19(sample)
95 0.000 0.000 0.663 0.007 <array_function internals>:177(nan_to_num)
410 0.000 0.000 0.000 0.000 TiffTags.py:36(lookup)
978 0.000 0.000 0.000 0.000 {built-in method unicodedata.bidirectional}
16 0.000 0.000 0.617 0.039 Image.py:1197(copy)
95 0.000 0.000 0.001 0.000 shape_base.py:659(_dstack_dispatcher)
9 0.000 0.000 0.034 0.004 size.py:4741(augment_batch)
955 0.000 0.000 0.000 0.000 stride_tricks.py:475(_broadcast_arrays_dispatcher)
18 0.000 0.000 0.002 0.000 iterator.py:19(sample)
18 0.000 0.000 0.086 0.005 template_cnjpkr_str.py:276()
291 0.000 0.000 0.000 0.000 TiffImagePlugin.py:785(_ensure_read)
20 0.000 0.000 0.334 0.017 template_cnjpkr_str.py:203(_generate_color)
156 0.000 0.000 0.000 0.000 {built-in method numpy.core._multiarray_umath.count_nonzero}
595 0.000 0.000 0.000 0.000 sre_parse.py:233(__next)
162 0.000 0.000 0.001 0.000 JpegImagePlugin.py:56(Skip)
16 0.000 0.000 0.619 0.039 ImageOps.py:581(exif_transpose)
23 0.000 0.000 0.063 0.003 arabic_reshaper.py:61(init)
32 0.000 0.000 0.006 0.000 base_texture.py:114(_sample_texture)
530 0.000 0.000 0.000 0.000 sre_parse.py:254(get)
320 0.000 0.000 0.000 0.000 :36(_relax_case)
23 0.000 0.000 0.000 0.000 algorithm.py:580(apply_mirroring)
20 0.000 0.000 0.006 0.000 color_map.py:50(_sample_colormap)
34 0.000 0.000 0.000 0.000 Image.py:393(_getdecoder)
66 0.000 0.000 0.000 0.000 gray.py:48(data)
18 0.000 0.000 4.252 0.236 template_cnjpkr_str.py:275(_postprocess_images)
58 0.000 0.000 0.000 0.000 enum.py:933(and)
108 0.000 0.000 0.005 0.000 parameters.py:369(draw_sample)
173 0.000 0.000 0.002 0.000 TiffImagePlugin.py:571(setitem)
156 0.000 0.000 0.000 0.000 {method 'argsort' of 'numpy.ndarray' objects}
173 0.000 0.000 0.000 0.000 TiffImagePlugin.py:654(delitem)
95 0.000 0.000 0.001 0.000 <array_function internals>:177(reshape)
23 0.000 0.000 0.194 0.008 unicode_util.py:171(reshape_text)
9 0.000 0.000 0.000 0.000 {getRotationMatrix2D}
29 0.000 0.000 0.032 0.001 image_util.py:143(resize_image)
39 0.000 0.000 0.001 0.000 TiffImagePlugin.py:746(load_rational)
23 0.000 0.000 0.000 0.000 algorithm.py:252()
230 0.000 0.000 0.001 0.000 pad.py:33()
95 0.000 0.000 0.000 0.000 shape_base.py:207(_arrays_for_stack_dispatcher)
34 0.000 0.000 0.000 0.000 {method 'setimage' of 'ImagingDecoder' objects}
23 0.000 0.000 0.000 0.000 configparser.py:198(init)
112 0.000 0.000 0.000 0.000 {method 'seek' of '_io.BufferedReader' objects}
33/2 0.000 0.000 0.000 0.000 sre_compile.py:71(_compile)
18 0.000 0.000 0.004 0.000 arithmetic.py:1833(init)
18 0.000 0.000 0.001 0.000 blur.py:765(init)
9 0.000 0.000 0.002 0.000 size.py:4857(_draw_samples)
450 0.000 0.000 0.000 0.000 {method 'rpartition' of 'str' objects}
54 0.000 0.000 0.001 0.000 additive_gaussian_noise.py:19(sample)
23 0.000 0.000 0.041 0.002 image_util.py:176(pad_image)
8 0.000 0.000 0.002 0.000 :969(get_data)
95 0.000 0.000 0.001 0.000 fromnumeric.py:198(reshape)
46 0.000 0.000 0.001 0.000 configparser.py:1203(add_section)
8 0.000 0.000 0.005 0.001 :849(get_code)
18 0.000 0.000 0.013 0.001 Image.py:2935(frombytes)
45 0.000 0.000 0.000 0.000 {method 'any' of 'numpy.generic' objects}
190 0.000 0.000 0.000 0.000 {built-in method numpy.geterrobj}
95 0.000 0.000 0.187 0.002 <array_function internals>:177(isneginf)
27 0.000 0.000 0.000 0.000 TiffImagePlugin.py:491(init)
346 0.000 0.000 0.000 0.000 TiffImagePlugin.py:619()
955 0.000 0.000 0.000 0.000 algorithm.py:54(_embedding_direction)
173 0.000 0.000 0.000 0.000 Image.py:3615(_fixup)
28 0.000 0.000 0.002 0.000 skew.py:22(sample)
83 0.000 0.000 0.000 0.000 random.py:965(normalize_generator_np117)
237 0.000 0.000 0.000 0.000 init.py:1420(debug)
14 0.000 0.000 0.001 0.000 text_shadow.py:30(sample)
156 0.000 0.000 0.000 0.000 arraysetops.py:125(_unpack_tuple)
41 0.000 0.000 0.001 0.000 parameters.py:105(handle_discrete_param)
952 0.000 0.000 0.000 0.000 {built-in method builtins.ord}
46 0.000 0.000 0.001 0.000 configparser.py:649(add_section)
36 0.000 0.000 0.000 0.000 rotate.py:20(sample)
39 0.000 0.000 0.000 0.000 TiffImagePlugin.py:317(init)
126 0.000 0.000 0.000 0.000 {boundingRect}
15 0.000 0.000 0.001 0.000 blur.py:443(init)
54 0.000 0.000 0.324 0.006 random.py:597(normal)
95 0.000 0.000 0.001 0.000 <array_function internals>:177(atleast_3d)
122 0.000 0.000 0.000 0.000 enum.py:313(call)
23 0.000 0.000 0.006 0.000 unicode_util.py:179(reorder_text)
955 0.000 0.000 0.000 0.000 {built-in method unicodedata.mirrored}
99 0.000 0.000 0.000 0.000 :389(parent)
23 0.000 0.000 0.000 0.000 os.py:670(getitem)
398 0.000 0.000 0.000 0.000 fromnumeric.py:3253(_around_dispatcher)
18 0.000 0.000 0.005 0.000 Image.py:807(frombytes)
9/5 0.000 0.000 0.041 0.008 {built-in method builtins.exec}
23 0.000 0.000 0.001 0.000 numeric.py:571(argwhere)
177 0.000 0.000 0.000 0.000 {built-in method builtins.setattr}
18 0.000 0.000 0.002 0.000 parameters.py:801(_draw_samples)
237 0.000 0.000 0.000 0.000 init.py:1685(isEnabledFor)
1 0.000 0.000 0.039 0.039 TiffImagePlugin.py:41()
23 0.000 0.000 0.000 0.000 fromnumeric.py:38(_wrapit)
45 0.000 0.000 0.001 0.000 fromnumeric.py:2305(any)
54 0.000 0.000 0.001 0.000 median_blur.py:18(sample)
72 0.000 0.000 0.000 0.000 TiffImagePlugin.py:694()
261 0.000 0.000 0.000 0.000 {built-in method builtins.repr}
9 0.000 0.000 0.013 0.001 size.py:1413(_augment_images_by_samples)
48 0.000 0.000 0.000 0.000 Image.py:3608(init)
39 0.000 0.000 0.000 0.000 fractions.py:84(new)
126 0.000 0.000 0.000 0.000 template_cnjpkr_str.py:332()
16 0.000 0.000 0.001 0.000 trapezoidate.py:23(sample)
530 0.000 0.000 0.000 0.000 {method 'pop' of 'dict' objects}
196 0.000 0.000 0.000 0.000 {built-in method builtins.callable}
45 0.000 0.000 0.001 0.000 gussian_blur.py:18(sample)
18 0.000 0.000 0.000 0.000 {method 'round' of 'numpy.generic' objects}
39 0.000 0.000 0.001 0.000 _collections_abc.py:657(get)
18 0.000 0.000 0.001 0.000 arithmetic.py:1695(init)
12 0.000 0.000 0.000 0.000 perspective.py:31(sample)
519 0.000 0.000 0.000 0.000 TiffImagePlugin.py:525()
48 0.000 0.000 0.000 0.000 JpegImagePlugin.py:512(_getmp)
231 0.000 0.000 0.000 0.000 fromnumeric.py:2155(_sum_dispatcher)
456 0.000 0.000 0.000 0.000 {method 'read' of '_io.BytesIO' objects}
9/5 0.000 0.000 0.047 0.009 :986(_find_and_load)
9 0.000 0.000 0.016 0.002 size.py:4784(_keep_size_images)
9 0.000 0.000 0.036 0.004 :890(_find_spec)
122 0.000 0.000 0.000 0.000 enum.py:631(new)
48 0.000 0.000 0.000 0.000 BmpImagePlugin.py:55(dib_accept)
45 0.000 0.000 0.001 0.000 <array_function internals>:177(any)
127 0.000 0.000 0.000 0.000 {method 'ravel' of 'numpy.ndarray' objects}
23 0.000 0.000 0.002 0.000 regex.py:331(findall)
83 0.000 0.000 0.000 0.000 random.py:943(normalize_generator
)
9 0.000 0.000 0.000 0.000 text_extrusion.py:31(sample)
36 0.000 0.000 0.001 0.000 fromnumeric.py:2970(prod)
9 0.000 0.000 0.015 0.002 meta.py:3116(augment_batch)
16 0.000 0.000 0.000 0.000 :294(cache_from_source)
1 0.000 0.000 0.000 0.000 init.py:313(namedtuple)
296 0.000 0.000 0.000 0.000 {method 'upper' of 'str' objects}
46 0.000 0.000 0.001 0.000 <array_function internals>:177(tile)
200 0.000 0.000 0.000 0.000 TiffImagePlugin.py:568(contains)
39 0.000 0.000 0.001 0.000 TiffImagePlugin.py:750(combine)
3 0.000 0.000 0.001 0.000 translate.py:51(apply)
62 0.000 0.000 0.000 0.000 TiffImagePlugin.py:731(load_string)
185 0.000 0.000 0.000 0.000 sre_parse.py:164(getitem)
190 0.000 0.000 0.000 0.000 _collections_abc.py:719(iter)
173 0.000 0.000 0.000 0.000 TiffTags.py:29(cvt_enum)
23 0.000 0.000 0.000 0.000 polys.py:2186(init)
9 0.000 0.000 0.000 0.000 size.py:4895()
32 0.000 0.000 0.000 0.000 Image.py:3882(iter)
17/2 0.000 0.000 0.001 0.001 sre_parse.py:435(_parse_sub)
23 0.000 0.000 0.000 0.000 algorithm.py:107(get_base_level)
20 0.000 0.000 0.003 0.000 color_map.py:57()
40/12 0.000 0.000 0.000 0.000 sre_parse.py:174(getwidth)
23 0.000 0.000 0.000 0.000 geometric.py:4271(_handle_order_arg)
23 0.000 0.000 0.000 0.000 <array_function internals>:177(may_share_memory)
216 0.000 0.000 0.000 0.000 _binary.py:84(i32be)
1 0.000 0.000 0.001 0.001 JpegImagePlugin.py:34()
23 0.000 0.000 0.000 0.000 {method 'finditer' of 're.Pattern' objects}
190 0.000 0.000 0.000 0.000 ufunclike.py:68(_dispatcher)
23 0.000 0.000 0.000 0.000 regex.py:475(complain_unused_args)
16 0.000 0.000 0.000 0.000 :68(_path_split)
9 0.000 0.000 0.000 0.000 :157(_get_module_lock)
23 0.000 0.000 0.000 0.000 os.py:766(getenv)
54 0.000 0.000 0.000 0.000 TiffImagePlugin.py:532(reset)
24 0.000 0.000 0.006 0.000 layer.py:330(size)
156 0.000 0.000 0.000 0.000 numeric.py:421(_count_nonzero_dispatcher)
48 0.000 0.000 0.006 0.000 Image.py:321(preinit)
9/5 0.000 0.000 0.045 0.009 :650(_load_unlocked)
316 0.000 0.000 0.000 0.000 _collections_abc.py:392(subclasshook)
36 0.000 0.000 0.001 0.000 <array_function internals>:177(prod)
9 0.000 0.000 0.000 0.000 :477(_init_module_attrs)
27 0.000 0.000 0.000 0.000 {method 'tell' of '_io.BufferedReader' objects}
23 0.000 0.000 0.000 0.000 algorithm.py:653()
22 0.000 0.000 0.000 0.000 flow_layout.py:105()
232 0.000 0.000 0.000 0.000 parameters.py:366(init)
24 0.000 0.000 0.000 0.000 types.py:171(get)
9 0.000 0.000 0.015 0.002 size.py:1381(augment_batch)
16 0.000 0.000 0.000 0.000 {built-in method PIL._imaging.jpeg_decoder}
48 0.000 0.000 0.000 0.000 PngImagePlugin.py:715(_accept)
156 0.000 0.000 0.000 0.000 fromnumeric.py:2491(_cumsum_dispatcher)
18 0.000 0.000 0.001 0.000 parameters.py:1067(init)
127 0.000 0.000 0.000 0.000 arraypad.py:521(_pad_dispatcher)
23 0.000 0.000 0.000 0.000 geometric.py:4279(_handle_mode_arg)
48 0.000 0.000 0.000 0.000 Image.py:3868(contains)
46 0.000 0.000 0.000 0.000 algorithm.py:277(calc_level_run)
48 0.000 0.000 0.000 0.000 _binary.py:60(i32le)
303 0.000 0.000 0.000 0.000 {method 'seek' of '_io.BytesIO' objects}
156 0.000 0.000 0.000 0.000 arraysetops.py:133(_unique_dispatcher)
18 0.000 0.000 0.000 0.000 {built-in method PIL._imaging.raw_decoder}
18 0.000 0.000 0.000 0.000 TiffImagePlugin.py:659(iter)
1 0.000 0.000 0.000 0.000 enum.py:157(new)
23 0.000 0.000 0.001 0.000 {method 'min' of 'numpy.ndarray' objects}
23 0.000 0.000 0.000 0.000 os.py:740(encodekey)
40 0.000 0.000 0.000 0.000 _collections_abc.py:72(_check_methods)
9/5 0.000 0.000 0.046 0.009 :956(_find_and_load_unlocked)
23 0.000 0.000 0.000 0.000 algorithm.py:599(get_empty_storage)
1 0.000 0.000 0.027 0.027 fractions.py:4()
3 0.000 0.000 0.000 0.000 {built-in method builtins.sorted}
8/5 0.000 0.000 0.044 0.009 :777(exec_module)
5 0.000 0.000 0.000 0.000 {built-in method _abc._abc_init}
32 0.000 0.000 0.000 0.000 _collections_abc.py:672(keys)
95 0.000 0.000 0.000 0.000 fromnumeric.py:432(_repeat_dispatcher)
83 0.000 0.000 0.000 0.000 random.py:834(get_global_rng)
16 0.000 0.000 0.001 0.000 ImageFile.py:292(load_prepare)
9 0.000 0.000 0.000 0.000 :629(spec_from_file_location)
23 0.000 0.000 0.001 0.000 <array_function internals>:177(argwhere)
78 0.000 0.000 0.001 0.000 TiffImagePlugin.py:753()
96 0.000 0.000 0.000 0.000 JpegImagePlugin.py:337(_accept)
48 0.000 0.000 0.000 0.000 JpegImagePlugin.py:487(_getmp)
69 0.000 0.000 0.000 0.000 {method 'group' of 're.Match' objects}
10 0.000 0.000 0.000 0.000 sre_compile.py:276(_optimize_charset)
18 0.000 0.000 0.000 0.000 {method 'update' of 'set' objects}
18 0.000 0.000 0.000 0.000 parameters.py:252(handle_probability_param)
23 0.000 0.000 0.000 0.000 configparser.py:171(init)
8 0.000 0.000 0.002 0.000 :578(_compile_bytecode)
16 0.000 0.000 0.000 0.000 ImageFile.py:229()
9 0.000 0.000 0.001 0.000 size.py:1477(_draw_samples)
95 0.000 0.000 0.000 0.000 type_check.py:400(_nan_to_num_dispatcher)
23 0.000 0.000 0.000 0.000 re.py:243(finditer)
45 0.000 0.000 0.000 0.000 _methods.py:54(_any)
1 0.000 0.000 0.000 0.000 GifImagePlugin.py:27()
46 0.000 0.000 0.000 0.000 configparser.py:1359(iter)
23 0.000 0.000 0.001 0.000 <array_function internals>:177(broadcast_to)
92 0.000 0.000 0.000 0.000 shape_base.py:1253()
1 0.000 0.000 0.000 0.000 PpmImagePlugin.py:18()
104 0.000 0.000 0.000 0.000 multiarray.py:736(dot)
92 0.000 0.000 0.000 0.000 shape_base.py:1243()
23 0.000 0.000 0.001 0.000 stride_tricks.py:366(broadcast_to)
18 0.000 0.000 0.000 0.000 {built-in method _thread.allocate_lock}
9 0.000 0.000 0.000 0.000 size.py:4841(_get_shapes)
23 0.000 0.000 0.000 0.000 configparser.py:983(contains)
9 0.000 0.000 0.000 0.000 :103(release)
23 0.000 0.000 0.000 0.000 <array_function internals>:177(transpose)
1 0.000 0.000 0.000 0.000 BmpImagePlugin.py:27()
24 0.000 0.000 0.000 0.000 enum.py:748(value)
18 0.000 0.000 0.000 0.000 batches.py:890(propagation_hooks_ctx)
126 0.000 0.000 0.000 0.000 {built-in method builtins.sum}
165 0.000 0.000 0.000 0.000 {method 'tell' of '_io.BytesIO' objects}
62 0.000 0.000 0.000 0.000 {method 'endswith' of 'bytes' objects}
18 0.000 0.000 0.000 0.000 parameters.py:802()
9 0.000 0.000 0.000 0.000 :78(acquire)
9 0.000 0.000 0.003 0.000 layer.py:456(center)
114 0.000 0.000 0.000 0.000 TiffImagePlugin.py:260()
8 0.000 0.000 0.000 0.000 :493(_classify_pyc)
18 0.000 0.000 0.000 0.000 imgaug.py:1420()
95 0.000 0.000 0.000 0.000 fromnumeric.py:193(_reshape_dispatcher)
23 0.000 0.000 0.000 0.000 geometric.py:125(_handle_cval_arg)
28 0.000 0.000 0.000 0.000 {method 'sort' of 'list' objects}
24 0.000 0.000 0.000 0.000 :51(_unpack_uint32)
48 0.000 0.000 0.000 0.000 GifImagePlugin.py:54(_accept)
18 0.000 0.000 0.000 0.000 imgaug.py:1575(_assert_two_or_three_dims)
3 0.000 0.000 0.000 0.000 size.py:1264(init)
3 0.000 0.000 0.000 0.000 translate.py:25(sample)
1 0.000 0.000 0.000 0.000 TiffImagePlugin.py:430(ImageFileDirectory_v2)
39 0.000 0.000 0.000 0.000 TiffImagePlugin.py:615()
36 0.000 0.000 0.000 0.000 perspective.py:43()
9 0.000 0.000 0.000 0.000 TiffImagePlugin.py:686(_register_basic)
9 0.000 0.000 0.000 0.000 :1426(_get_spec)
9 0.000 0.000 0.002 0.000 :549(module_from_spec)
75 0.000 0.000 0.000 0.000 sre_parse.py:249(match)
18 0.000 0.000 0.002 0.000 random.py:493(choice)
27 0.000 0.000 0.000 0.000 TiffImagePlugin.py:272(_accept)
48 0.000 0.000 0.000 0.000 BmpImagePlugin.py:51(_accept)
27 0.000 0.000 0.000 0.000 {method 'startswith' of 'bytes' objects}
23 0.000 0.000 0.000 0.000 {method 'tolist' of 'numpy.ndarray' objects}
9 0.000 0.000 0.000 0.000 size.py:4706(_validate_param)
1 0.000 0.000 0.000 0.000 enum.py:200()
24 0.000 0.000 0.002 0.000 re.py:250(compile)
95 0.000 0.000 0.000 0.000 shape_base.py:135(_atleast_3d_dispatcher)
3 0.000 0.000 0.001 0.000 size.py:4695(init)
68 0.000 0.000 0.000 0.000 sre_parse.py:160(len)
6 0.000 0.000 0.047 0.008 {built-in method builtins.import}
23 0.000 0.000 0.000 0.000 _methods.py:42(_amin)
9 0.000 0.000 0.000 0.000 :58(init)
1 0.000 0.000 0.012 0.012 decimal.py:2()
23 0.000 0.000 0.000 0.000 algorithm.py:486(reverse_contiguous_sequence)
15/5 0.000 0.000 0.047 0.009 :211(_call_with_frames_removed)
9 0.000 0.000 0.000 0.000 :424(_get_cached)
17 0.000 0.000 0.000 0.000 :376(cached)
23 0.000 0.000 0.000 0.000 fromnumeric.py:601(transpose)
23 0.000 0.000 0.000 0.000 configparser.py:958(getitem)
1 0.000 0.000 0.000 0.000 curve_layout.py:53()
32 0.000 0.000 0.000 0.000 _collections_abc.py:698(init)
45 0.000 0.000 0.000 0.000 sre_parse.py:286(tell)
9 0.000 0.000 0.000 0.000 :176(cb)
23 0.000 0.000 0.000 0.000 os.py:734(check_str)
27 0.000 0.000 0.000 0.000 :867(exit)
39 0.000 0.000 0.000 0.000 {built-in method builtins.divmod}
7 0.000 0.000 0.000 0.000 enum.py:75(setitem)
46 0.000 0.000 0.000 0.000 sre_parse.py:172(append)
9 0.000 0.000 0.000 0.000 resample.py:18(sample)
2 0.000 0.000 0.002 0.001 sre_compile.py:759(compile)
3 0.000 0.000 0.000 0.000 size.py:1274(_handle_size_arg)
6 0.000 0.000 0.000 0.000 Image.py:3398(register_open)
10 0.000 0.000 0.000 0.000 sre_parse.py:84(opengroup)
37 0.000 0.000 0.000 0.000 sre_parse.py:111(init)
23 0.000 0.000 0.000 0.000 {method 'insert' of 'list' objects}
8 0.000 0.000 0.000 0.000 {built-in method _imp._fix_co_filename}
9 0.000 0.000 0.000 0.000 :147(enter)
36 0.000 0.000 0.000 0.000 perspective.py:51()
8 0.000 0.000 0.000 0.000 enum.py:417(setattr)
10 0.000 0.000 0.000 0.000 sre_compile.py:249(_compile_charset)
46 0.000 0.000 0.000 0.000 configparser.py:1187(converters)
6 0.000 0.000 0.000 0.000 parameters.py:785(init)
18 0.000 0.000 0.000 0.000 batches.py:615(init)
9 0.000 0.000 0.000 0.000 {built-in method math.isnan}
9 0.000 0.000 0.001 0.000 :90(_path_is_mode_type)
9 0.000 0.000 0.000 0.000 numbers.py:283(float)
9 0.000 0.000 0.036 0.004 :1334(find_spec)
8 0.000 0.000 0.001 0.000 :1010(path_stats)
1 0.000 0.000 0.000 0.000 _regex_core.py:4281(_check_group_features)
1 0.000 0.000 0.000 0.000 fractions.py:60(Fraction)
18 0.000 0.000 0.000 0.000 batches.py:628(exit)
8 0.000 0.000 0.000 0.000 :526(_validate_timestamp_pyc)
81 0.000 0.000 0.000 0.000 {method 'clear' of 'dict' objects}
9 0.000 0.000 0.000 0.000 :342(init)
5 0.000 0.000 0.000 0.000 TiffImagePlugin.py:669(decorator)
45 0.000 0.000 0.000 0.000 fromnumeric.py:2300(_any_dispatcher)
56 0.000 0.000 0.000 0.000 _collections_abc.py:302(subclasshook)
23 0.000 0.000 0.000 0.000 {method 'transpose' of 'numpy.ndarray' objects}
2 0.000 0.000 0.001 0.001 sre_parse.py:937(parse)
13 0.000 0.000 0.000 0.000 Image.py:3448(register_extension)
46 0.000 0.000 0.000 0.000 shape_base.py:1167(_tile_dispatcher)
23 0.000 0.000 0.000 0.000 regex.py:480()
1 0.000 0.000 0.000 0.000 JpegPresets.py:1()
34 0.000 0.000 0.000 0.000 ImageMode.py:25(init)
3 0.000 0.000 0.000 0.000 meta.py:3085(init)
9 0.000 0.000 0.001 0.000 :99(_path_isfile)
27 0.000 0.000 0.000 0.000 :863(enter)
18 0.000 0.000 0.000 0.000 imgaug.py:1469()
1 0.000 0.000 0.000 0.000 TiffImagePlugin.py:303(IFDRational)
8 0.000 0.000 0.000 0.000 :35(_new_module)
18 0.000 0.000 0.000 0.000 iterator.py:23()
16 0.000 0.000 0.000 0.000 {method 'rsplit' of 'str' objects}
5 0.000 0.000 0.000 0.000 sre_parse.py:267(getuntil)
3 0.000 0.000 0.000 0.000 size.py:1361(_handle_interpolation_arg)
9 0.000 0.000 0.000 0.000 translate.py:37()
12 0.000 0.000 0.000 0.000 sre_parse.py:355(_escape)
3 0.000 0.000 0.000 0.000 meta.py:75(handle_children_list)
3 0.000 0.000 0.002 0.001 image_util.py:182(dilate_image)
8 0.000 0.000 0.000 0.000 :456(_check_name_wrapper)
2 0.000 0.000 0.000 0.000 curve_layout.py:24(sample)
45 0.000 0.000 0.000 0.000 {built-in method _imp.acquire_lock}
45 0.000 0.000 0.000 0.000 {built-in method _imp.release_lock}
5 0.000 0.000 0.000 0.000 abc.py:84(new)
8 0.000 0.000 0.000 0.000 _collections_abc.py:252(subclasshook)
46 0.000 0.000 0.000 0.000 configparser.py:663(has_section)
23 0.000 0.000 0.000 0.000 {method 'clear' of 'collections.deque' objects}
3 0.000 0.000 0.000 0.000 enum.py:927(or)
9 0.000 0.000 0.000 0.000 :151(exit)
36 0.000 0.000 0.000 0.000 fromnumeric.py:2965(_prod_dispatcher)
24 0.000 0.000 0.000 0.000 {built-in method from_bytes}
1 0.000 0.000 0.000 0.000 enum.py:143(prepare)
1 0.000 0.000 0.000 0.000 init.py:1280(getLogger)
7 0.000 0.000 0.000 0.000 fractions.py:302(_operator_fallbacks)
3 0.000 0.000 0.000 0.000 {built-in method _imp.is_builtin}
23 0.000 0.000 0.000 0.000 multiarray.py:1368(may_share_memory)
8 0.000 0.000 0.000 0.000 _collections_abc.py:349(subclasshook)
24 0.000 0.000 0.000 0.000 sre_parse.py:81(groups)
23 0.000 0.000 0.000 0.000 unicode_util.py:138()
11 0.000 0.000 0.000 0.000 sre_compile.py:423(_simple)
2 0.000 0.000 0.000 0.000 sre_compile.py:536(_compile_info)
9 0.000 0.000 0.000 0.000 :800(find_spec)
1 0.000 0.000 0.000 0.000 _regex_core.py:427(parse_sequence)
23 0.000 0.000 0.000 0.000 numeric.py:567(_argwhere_dispatcher)
9 0.000 0.000 0.000 0.000 size.py:4845()
1 0.000 0.000 0.000 0.000 BmpImagePlugin.py:62(BmpImageFile)
23 0.000 0.000 0.000 0.000 fit.py:12(sample)
10 0.000 0.000 0.000 0.000 sre_parse.py:96(closegroup)
1 0.000 0.000 0.000 0.000 {built-in method _locale._getdefaultlocale}
9 0.000 0.000 0.000 0.000 :725(find_spec)
2 0.000 0.000 0.000 0.000 sre_parse.py:224(init)
23 0.000 0.000 0.000 0.000 stride_tricks.py:362(_broadcast_to_dispatcher)
23 0.000 0.000 0.000 0.000 {method 'append' of 'collections.deque' objects}
8 0.000 0.000 0.000 0.000 :939(init)
1 0.000 0.000 0.000 0.000 init.py:1331(_fixupParents)
26 0.000 0.000 0.000 0.000 TiffImagePlugin.py:388(_delegate)
25 0.000 0.000 0.000 0.000 {built-in method nt.fspath}
9 0.000 0.000 0.000 0.000 :143(init)
1 0.000 0.000 0.000 0.000 enum.py:579(find_new)
23 0.000 0.000 0.000 0.000 fromnumeric.py:597(_transpose_dispatcher)
13 0.000 0.000 0.000 0.000 {method 'setdefault' of 'dict' objects}
16 0.000 0.000 0.000 0.000 ImageFile.py:232()
9 0.000 0.000 0.000 0.000 {built-in method _imp.is_frozen}
1 0.000 0.000 0.000 0.000 {built-in method regex._regex.compile}
7 0.000 0.000 0.000 0.000 enum.py:22(_is_dunder)
2 0.000 0.000 0.000 0.000 enum.py:543(_find_data_type)
3 0.000 0.000 0.000 0.000 Image.py:3459(register_extensions)
1 0.000 0.000 0.000 0.000 init.py:1400(init)
5/1 0.000 0.000 0.000 0.000 _regex_core.py:1904(compile)
2 0.000 0.000 0.000 0.000 sre_compile.py:598(_code)
16 0.000 0.000 0.000 0.000 {method 'cleanup' of 'ImagingDecoder' objects}
18 0.000 0.000 0.000 0.000 {method 'find' of 'bytearray' objects}
12 0.000 0.000 0.000 0.000 sre_parse.py:168(setitem)
16 0.000 0.000 0.000 0.000 ImageFile.py:75(_tilesort)
18 0.000 0.000 0.000 0.000 batches.py:622(enter)
18 0.000 0.000 0.000 0.000 {built-in method _thread.get_ident}
9 0.000 0.000 0.000 0.000 {built-in method _struct.calcsize}
1 0.000 0.000 0.000 0.000 _regex_core.py:2820(_compile)
7 0.000 0.000 0.000 0.000 enum.py:33(_is_sunder)
1 0.000 0.000 0.000 0.000 init.py:2014(getLogger)
23 0.000 0.000 0.000 0.000 unicode_util.py:141()
1 0.000 0.000 0.000 0.000 enum.py:522(_check_for_existing_members)
10 0.000 0.000 0.000 0.000 sre_compile.py:65(_combine_flags)
1 0.000 0.000 0.000 0.000 _regex_core.py:4219(init)
8 0.000 0.000 0.000 0.000 _collections_abc.py:271(subclasshook)
2 0.000 0.000 0.000 0.000 sre_parse.py:432(_uniq)
6 0.000 0.000 0.000 0.000 _regex_core.py:1854(init)
1 0.000 0.000 0.000 0.000 enum.py:68(init)
1 0.000 0.000 0.000 0.000 TiffImagePlugin.py:1874(AppendingTiffWriter)
1 0.000 0.000 0.002 0.002 :1099(create_module)
6 0.000 0.000 0.000 0.000 Image.py:3425(register_save)
1 0.000 0.000 0.000 0.000 GifImagePlugin.py:39(LoadingStrategy)
2 0.000 0.000 0.000 0.000 {built-in method _sre.compile}
16 0.000 0.000 0.000 0.000 ImageFile.py:300(load_end)
1 0.000 0.000 0.000 0.000 _regex_core.py:3489(_compile)
2 0.000 0.000 0.000 0.000 enum.py:532(get_mixins)
1 0.000 0.000 0.000 0.000 PpmImagePlugin.py:53(PpmImageFile)
1 0.000 0.000 0.000 0.000 GifImagePlugin.py:63(GifImageFile)
9 0.000 0.000 0.000 0.000 {method 'startswith' of 'str' objects}
2 0.000 0.000 0.000 0.000 init.py:214(_acquireLock)
1 0.000 0.000 0.000 0.000 six.py:96(get)
6 0.000 0.000 0.000 0.000 Image.py:3414(register_mime)
1 0.000 0.000 0.000 0.000 locale.py:622(getpreferredencoding)
1 0.000 0.000 0.000 0.000 TiffImagePlugin.py:962(ImageFileDirectory_v1)
3 0.000 0.000 0.000 0.000 size.py:4721()
1 0.000 0.000 0.000 0.000 _regex_core.py:1202(parse_escape)
9 0.000 0.000 0.000 0.000 TiffImagePlugin.py:343(numerator)
1 0.000 0.000 0.000 0.000 TiffImagePlugin.py:1061(TiffImageFile)
2 0.000 0.000 0.000 0.000 sre_parse.py:76(init)
1 0.000 0.000 0.000 0.000 _regex_core.py:2880(_compile)
2 0.000 0.000 0.000 0.000 sre_parse.py:921(fix_flags)
1 0.000 0.000 0.000 0.000 abc.py:89(register)
1 0.000 0.000 0.000 0.000 _regex_core.py:3996(init)
9 0.000 0.000 0.000 0.000 {method 'isidentifier' of 'str' objects}
1 0.000 0.000 0.000 0.000 _regex_core.py:417(_parse_pattern)
1 0.000 0.000 0.000 0.000 _regex_core.py:3410(optimise)
3 0.000 0.000 0.000 0.000 _regex_core.py:4008(get)
1 0.000 0.000 0.000 0.000 JpegImagePlugin.py:346(JpegImageFile)
1 0.000 0.000 0.000 0.000 _bootlocale.py:11(getpreferredencoding)
8 0.000 0.000 0.000 0.000 {method 'get' of 'mappingproxy' objects}
2 0.000 0.000 0.000 0.000 {built-in method fromkeys}
4 0.000 0.000 0.000 0.000 sre_compile.py:595(isstring)
2 0.000 0.000 0.000 0.000 init.py:223(_releaseLock)
1 0.000 0.000 0.000 0.000 _regex_core.py:4151(match)
1 0.000 0.000 0.000 0.000 PpmImagePlugin.py:149(PpmPlainDecoder)
9 0.000 0.000 0.000 0.000 :397(has_location)
1 0.000 0.000 0.000 0.000 six.py:164(_resolve)
1 0.000 0.000 0.000 0.000 six.py:85(_import_module)
1 0.000 0.000 0.000 0.000 _regex_core.py:2012(_compile)
8 0.000 0.000 0.000 0.000 :774(create_module)
3 0.000 0.000 0.000 0.000 enum.py:12(_is_descriptor)
1 0.000 0.000 0.000 0.000 TiffImagePlugin.py:138()
8 0.000 0.000 0.000 0.000 {built-in method _sre.unicode_iscased}
1 0.000 0.000 0.000 0.000 sre_compile.py:492(_get_charset_prefix)
1 0.000 0.000 0.000 0.000 _regex_core.py:4320(_get_required_string)
11 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}
4 0.000 0.000 0.000 0.000 {built-in method sys.intern}
1 0.000 0.000 0.000 0.000 :1107(exec_module)
8 0.000 0.000 0.000 0.000 :964(get_filename)
9 0.000 0.000 0.000 0.000 TiffImagePlugin.py:347(denominator)
1 0.000 0.000 0.000 0.000 init.py:1671(getEffectiveLevel)
1 0.000 0.000 0.000 0.000 _regex_core.py:376(_flatten_code)
2 0.000 0.000 0.000 0.000 _regex_core.py:3399(init)
5 0.000 0.000 0.000 0.000 {method 'items' of 'mappingproxy' objects}
4 0.000 0.000 0.000 0.000 init.py:385()
5 0.000 0.000 0.000 0.000 {built-in method _sre.unicode_tolower}
1 0.000 0.000 0.000 0.000 enum.py:370(getattr)
1 0.000 0.000 0.000 0.000 sre_compile.py:461(_get_literal_prefix)
4 0.000 0.000 0.000 0.000 {method 'contains' of 'frozenset' objects}
1 0.000 0.000 0.000 0.000 _regex_core.py:3406(fix_groups)
1 0.000 0.000 0.000 0.000 {built-in method _abc._abc_register}
6 0.000 0.000 0.000 0.000 {built-in method builtins.vars}
3 0.000 0.000 0.000 0.000 Image.py:3480(register_decoder)
1 0.000 0.000 0.000 0.000 _regex_core.py:2842(init)
2 0.000 0.000 0.000 0.000 {method 'rfind' of 'str' objects}
1 0.000 0.000 0.000 0.000 _regex_core.py:384(make_case_flags)
5 0.000 0.000 0.000 0.000 TiffImagePlugin.py:668(_register_loader)
3 0.000 0.000 0.000 0.000 enum.py:223()
1 0.000 0.000 0.000 0.000 init.py:189(_checkLevel)
2 0.000 0.000 0.000 0.000 Image.py:3436(register_save_all)
1 0.000 0.000 0.000 0.000 :1088(init)
1 0.000 0.000 0.000 0.000 enum.py:175()
5 0.000 0.000 0.000 0.000 TiffImagePlugin.py:680(decorator)
5 0.000 0.000 0.000 0.000 TiffImagePlugin.py:679(_register_writer)
1 0.000 0.000 0.000 0.000 init.py:772(init)
1 0.000 0.000 0.000 0.000 _regex_core.py:1919(get_required_string)
1 0.000 0.000 0.000 0.000 init.py:1226(append)
2 0.000 0.000 0.000 0.000 {method 'acquire' of '_thread.RLock' objects}
1 0.000 0.000 0.000 0.000 _regex_core.py:1957(_compile)
1 0.000 0.000 0.000 0.000 {method 'split' of 'str' objects}
1 0.000 0.000 0.000 0.000 _regex_core.py:1898(get_firstset)
1 0.000 0.000 0.000 0.000 _regex_core.py:1978(init)
1 0.000 0.000 0.000 0.000 PpmImagePlugin.py:279(PpmDecoder)
1 0.000 0.000 0.000 0.000 {method 'setter' of 'property' objects}
1 0.000 0.000 0.000 0.000 {built-in method builtins.delattr}
1 0.000 0.000 0.000 0.000 BmpImagePlugin.py:288(BmpRleDecoder)
1 0.000 0.000 0.000 0.000 _regex_core.py:1847(make_sequence)
1 0.000 0.000 0.000 0.000 _regex_core.py:2835(compile)
1 0.000 0.000 0.000 0.000 _regex_core.py:4194(at_end)
1 0.000 0.000 0.000 0.000 :1()
1 0.000 0.000 0.000 0.000 BmpImagePlugin.py:362(DibImageFile)
2 0.000 0.000 0.000 0.000 {method 'release' of '_thread.RLock' objects}
1 0.000 0.000 0.000 0.000 {built-in method sys._getframe}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
2 0.000 0.000 0.000 0.000 sre_compile.py:453(_get_iscased)
1 0.000 0.000 0.000 0.000 init.py:1272(disable)
1 0.000 0.000 0.000 0.000 _regex_core.py:508()
1 0.000 0.000 0.000 0.000 _regex_core.py:2831(max_width)
1 0.000 0.000 0.000 0.000 {built-in method _imp.exec_dynamic}
1 0.000 0.000 0.000 0.000 {method 'mro' of 'type' objects}
1 0.000 0.000 0.000 0.000 regex.py:646()
1 0.000 0.000 0.000 0.000 _regex_core.py:1877(fix_groups)
1 0.000 0.000 0.000 0.000 _regex_core.py:1880(optimise)
1 0.000 0.000 0.000 0.000 _regex_core.py:1901(has_simple_start)
1 0.000 0.000 0.000 0.000 _regex_core.py:1883(pack_characters)

@radarhere
Copy link
Member

synthtiger has only ever had commits from one GitHub user, who hasn't made any GitHub contributions in 8 months, and hasn't responded to any synthtiger issues since January.

So I'm not convinced that this library is maintained - meaning that even if we were to figure out how to improve speed for it, it seems entirely possible that such a suggestion would never be merged.

@nissansz
Copy link
Author

Don't know whether this is pillow or cv2 function: 2892831 34.393 0.000 34.393 0.000 {floodFill}

When I turn off visibility check, time is shortened half, but it may lead to image without text visible, any fast function to check text visibility? 104 10.388 0.100 46.299 0.445 template_cnjpkr_str.py:295(_check_visibility)

@radarhere
Copy link
Member

The fact that it has a capital F would lead me to conclude that floodFill is cv2 - https://docs.opencv.org/3.4/d7/d1b/group__imgproc__misc.html#gaf1f55a048f8a45bc3383586e80b1f0d0

Would you be able to post a copy of your code?

@radarhere
Copy link
Member

To connect the two issues, clovaai/synthtiger#62 has been created as a synthtiger issue to ask their community about a speed increase.

@nissansz
Copy link
Author

nissansz commented Aug 14, 2023

Would you be able to post a copy of your code?

template_cnjpkr_str code as follows.

"""
SynthTIGER
Copyright (c) 2021-present NAVER Corp.
MIT license
"""

import os

import cv2
import numpy as np
from PIL import Image

from synthtiger import components, layers, templates, utils

BLEND_MODES = [
    "normal",
    "multiply",
    "screen",
    "overlay",
    "hard_light",
    "soft_light",
    "dodge",
    "divide",
    "addition",
    "difference",
    "darken_only",
    "lighten_only",
]


class SynthTiger(templates.Template):
    def __init__(self, config=None):
        if config is None:
            config = {}

        self.coord_output = config.get("coord_output", True)
        self.mask_output = config.get("mask_output", True)
        self.glyph_coord_output = config.get("glyph_coord_output", True)
        self.glyph_mask_output = config.get("glyph_mask_output", True)
        self.vertical = config.get("vertical", False)
        self.quality = config.get("quality", [95, 95])
        # self.visibility_check = config.get("visibility_check", False)
        self.visibility_check = False
        self.midground = config.get("midground", 0)
        self.midground_offset = components.Translate(
            **config.get("midground_offset", {})
        )
        self.foreground_mask_pad = config.get("foreground_mask_pad", 0)
        self.corpus = components.Selector(
            [
                components.LengthAugmentableCorpus(),
                components.CharAugmentableCorpus(),
            ],
            **config.get("corpus", {}),
        )
        self.font = components.BaseFont(**config.get("font", {}))
        self.texture = components.Switch(
            components.BaseTexture(), **config.get("texture", {})
        )
        self.colormap2 = components.GrayMap(**config.get("colormap2", {}))
        self.colormap3 = components.GrayMap(**config.get("colormap3", {}))
        self.color = components.Gray(**config.get("color", {}))
        self.shape = components.Switch(
            components.Selector(
                [components.ElasticDistortion(), components.ElasticDistortion()]
            ),
            **config.get("shape", {}),
        )
        self.layout = components.Selector(
            [components.FlowLayout(), components.CurveLayout()],
            **config.get("layout", {}),
        )
        self.style = components.Switch(
            components.Selector(
                [
                    components.TextBorder(),
                    components.TextShadow(),
                    components.TextExtrusion(),
                ]
            ),
            **config.get("style", {}),
        )
        self.transform = components.Switch(
            components.Selector(
                [
                    components.Perspective(),
                    components.Perspective(),
                    components.Trapezoidate(),
                    components.Trapezoidate(),
                    components.Skew(),
                    components.Skew(),
                    components.Rotate(),
                ]
            ),
            **config.get("transform", {}),
        )
        self.fit = components.Fit()
        self.pad = components.Switch(components.Pad(), **config.get("pad", {}))
        self.postprocess = components.Iterator(
            [
                components.Switch(components.AdditiveGaussianNoise()),
                components.Switch(components.GaussianBlur()),
                components.Switch(components.Resample()),
                components.Switch(components.MedianBlur()),
            ],
            **config.get("postprocess", {}),
        )

    def generate(self,  line):
        quality = np.random.randint(self.quality[0], self.quality[1] + 1)
        midground = np.random.rand() < self.midground
        fg_color, fg_style, mg_color, mg_style, bg_color = self._generate_color()

        fg_image, label, bboxes, glyph_fg_image, glyph_bboxes = self._generate_text(
            fg_color, fg_style, line
        )
        bg_image = self._generate_background(fg_image.shape[:2][::-1], bg_color)

        if midground:
            mg_image, _, _, _, _ = self._generate_text(mg_color, mg_style, line)
            mg_image = self._erase_image(mg_image, fg_image)
            bg_image = _blend_images(mg_image, bg_image, self.visibility_check)

        image = _blend_images(fg_image, bg_image, self.visibility_check)
        image, fg_image, glyph_fg_image = self._postprocess_images(
            [image, fg_image, glyph_fg_image]
        )

        data = {
            "image": image,
            "label": label,
            "quality": quality,
            "mask": fg_image[..., 3],
            "bboxes": bboxes,
            "glyph_mask": glyph_fg_image[..., 3],
            "glyph_bboxes": glyph_bboxes,
        }

        return data

    def init_save(self, root):
        os.makedirs(root, exist_ok=True)

        gt_path = os.path.join(root, "gt.txt")
        coords_path = os.path.join(root, "coords.txt")
        glyph_coords_path = os.path.join(root, "glyph_coords.txt")

        self.gt_file = open(gt_path, "w", encoding="utf-8")
        if self.coord_output:
            self.coords_file = open(coords_path, "w", encoding="utf-8")
        if self.glyph_coord_output:
            self.glyph_coords_file = open(glyph_coords_path, "w", encoding="utf-8")

    def save(self, root, data, idx):
        image = data["image"]
        label = data["label"]
        quality = data["quality"]
        mask = data["mask"]
        bboxes = data["bboxes"]
        glyph_mask = data["glyph_mask"]
        glyph_bboxes = data["glyph_bboxes"]

        image = Image.fromarray(image[..., :3].astype(np.uint8))
        mask = Image.fromarray(mask.astype(np.uint8))
        glyph_mask = Image.fromarray(glyph_mask.astype(np.uint8))

        coords = [[x, y, x + w, y + h] for x, y, w, h in bboxes]
        coords = "\t".join([",".join(map(str, map(int, coord))) for coord in coords])
        glyph_coords = [[x, y, x + w, y + h] for x, y, w, h in glyph_bboxes]
        glyph_coords = "\t".join(
            [",".join(map(str, map(int, coord))) for coord in glyph_coords]
        )

        shard = str(idx // 10000)
        image_key = os.path.join("images", shard, f"{idx}.jpg")
        mask_key = os.path.join("masks", shard, f"{idx}.png")
        glyph_mask_key = os.path.join("glyph_masks", shard, f"{idx}.png")
        image_path = os.path.join(root, image_key)
        mask_path = os.path.join(root, mask_key)
        glyph_mask_path = os.path.join(root, glyph_mask_key)

        os.makedirs(os.path.dirname(image_path), exist_ok=True)
        image.save(image_path, quality=quality)
        if self.mask_output:
            os.makedirs(os.path.dirname(mask_path), exist_ok=True)
            mask.save(mask_path)
        if self.glyph_mask_output:
            os.makedirs(os.path.dirname(glyph_mask_path), exist_ok=True)
            glyph_mask.save(glyph_mask_path)

        self.gt_file.write(f"{image_key}\t{label}\n")
        if self.coord_output:
            self.coords_file.write(f"{image_key}\t{coords}\n")
        if self.glyph_coord_output:
            self.glyph_coords_file.write(f"{image_key}\t{glyph_coords}\n")

    def end_save(self, root):
        self.gt_file.close()
        if self.coord_output:
            self.coords_file.close()
        if self.glyph_coord_output:
            self.glyph_coords_file.close()

    def _generate_color(self):
        mg_color = self.color.sample()
        fg_style = self.style.sample()
        mg_style = self.style.sample()

        if fg_style["state"]:
            fg_color, bg_color, style_color = self.colormap3.sample()
            fg_style["meta"]["meta"]["rgb"] = style_color["rgb"]
        else:
            fg_color, bg_color = self.colormap2.sample()

        return fg_color, fg_style, mg_color, mg_style, bg_color

    # def _generate_text(self, color, style):
    def _generate_text(self, color, style, line):
        # label = self.corpus.data(self.corpus.sample())
        # label = r'我们大家二ホンてする사이드바 we are. 、'
        label = line

        # for script using diacritic, ligature and RTL
        chars = utils.split_text(label, reorder=True)

        text = "".join(chars)
        font = self.font.sample({"text": text, "vertical": self.vertical})

        char_layers = [layers.TextLayer(char, **font) for char in chars]
        self.shape.apply(char_layers)
        self.layout.apply(char_layers, {"meta": {"vertical": self.vertical}})
        char_glyph_layers = [char_layer.copy() for char_layer in char_layers]

        text_layer = layers.Group(char_layers).merge()
        text_glyph_layer = text_layer.copy()

        transform = self.transform.sample()
        self.color.apply([text_layer, text_glyph_layer], color)
        self.texture.apply([text_layer, text_glyph_layer])
        self.style.apply([text_layer, *char_layers], style)
        self.transform.apply(
            [text_layer, text_glyph_layer, *char_layers, *char_glyph_layers], transform
        )
        self.fit.apply([text_layer, text_glyph_layer, *char_layers, *char_glyph_layers])
        self.pad.apply([text_layer])

        for char_layer in char_layers:
            char_layer.topleft -= text_layer.topleft
        for char_glyph_layer in char_glyph_layers:
            char_glyph_layer.topleft -= text_layer.topleft

        out = text_layer.output()
        bboxes = [char_layer.bbox for char_layer in char_layers]

        glyph_out = text_glyph_layer.output(bbox=text_layer.bbox)
        glyph_bboxes = [char_glyph_layer.bbox for char_glyph_layer in char_glyph_layers]

        return out, label, bboxes, glyph_out, glyph_bboxes

    def _generate_background(self, size, color):
        layer = layers.RectLayer(size)
        self.color.apply([layer], color)
        self.texture.apply([layer])
        out = layer.output()
        return out

    def _erase_image(self, image, mask):
        mask = _create_poly_mask(mask, self.foreground_mask_pad)
        mask_layer = layers.Layer(mask)
        image_layer = layers.Layer(image)
        image_layer.bbox = mask_layer.bbox
        self.midground_offset.apply([image_layer])
        out = image_layer.erase(mask_layer).output(bbox=mask_layer.bbox)
        return out

    def _postprocess_images(self, images):
        image_layers = [layers.Layer(image) for image in images]
        self.postprocess.apply(image_layers)
        outs = [image_layer.output() for image_layer in image_layers]
        return outs


def _blend_images(src, dst, visibility_check=False):
    blend_modes = np.random.permutation(BLEND_MODES)

    for blend_mode in blend_modes:
        out = utils.blend_image(src, dst, mode=blend_mode)
        if not visibility_check or _check_visibility(out, src[..., 3]):
            break
    else:
        raise RuntimeError("Text is not visible")

    return out


def _check_visibility(image, mask):
    gray = utils.to_gray(image[..., :3]).astype(np.uint8)
    mask = mask.astype(np.uint8)
    height, width = mask.shape

    peak = (mask > 127).astype(np.uint8)

    kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (3, 3))
    bound = (mask > 0).astype(np.uint8)
    bound = cv2.dilate(bound, kernel, iterations=1)

    visit = bound.copy()
    visit ^= 1
    visit = np.pad(visit, 1, constant_values=1)

    border = bound.copy()
    border[mask > 0] = 0

    flag = 4 | cv2.FLOODFILL_FIXED_RANGE | cv2.FLOODFILL_MASK_ONLY

    for y in range(height):
        for x in range(width):
            if peak[y][x]:
                cv2.floodFill(gray, visit, (x, y), 1, 16, 16, flag)

    visit = visit[1:-1, 1:-1]
    count = np.sum(visit & border)
    total = np.sum(border)
    return total > 0 and count <= total * 0.1


def _create_poly_mask(image, pad=0):
    height, width = image.shape[:2]
    alpha = image[..., 3].astype(np.uint8)
    mask = np.zeros((height, width), dtype=np.float32)

    cts, _ = cv2.findContours(alpha, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    cts = sorted(cts, key=lambda ct: sum(cv2.boundingRect(ct)[:2]))

    if len(cts) == 1:
        hull = cv2.convexHull(cts[0])
        cv2.fillConvexPoly(mask, hull, 255)

    for idx in range(len(cts) - 1):
        pts = np.concatenate((cts[idx], cts[idx + 1]), axis=0)
        hull = cv2.convexHull(pts)
        cv2.fillConvexPoly(mask, hull, 255)

    mask = utils.dilate_image(mask, pad)
    out = utils.create_image((width, height))
    out[..., 3] = mask
    return out

@radarhere
Copy link
Member

The code you've pasted is a slightly modified version of https://github.com/clovaai/synthtiger/blob/master/examples/synthtiger/template.py

In that code, Pillow is only used in save(). The rest of the time, it is synthtiger, cv2 and a bit of NumPy.

I think this is primarily a question for synthtiger. If you think floodFill is the main problem, then you can ask the cv2 community instead.

@nissansz
Copy link
Author

Thank you.

The profile shows 2892831 times of floodfill calls, too many times, not sure why synthtiger needs so many calls.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants