@@ -74,10 +74,10 @@ def monthly_synthesis_inference(sources, sources_scales, pad, ts, savedmodel_dir
7474
7575 # Setup TensorFlowModelServe
7676 system .set_env_var ("OTB_TF_NSOURCES" , str (len (sources )))
77- infer = pyotb . App ( "TensorflowModelServe" , execute = False )
77+ infer_params = {}
7878
7979 # Setup BandMath for post processing
80- bm = pyotb . App ( "BandMath" , execute = False )
80+ bm_params = {}
8181 mask_expr = "0"
8282
8383 # Inputs
@@ -93,41 +93,42 @@ def get_key(key):
9393 if placeholder in sources_scales :
9494 src_rfield = int (rfield / sources_scales [placeholder ])
9595
96- infer . set_parameters ({get_key ("il" ): [source ]})
96+ infer_params . update ({get_key ("il" ): [source ]})
9797
9898 # Update post processing BandMath expression
9999 if placeholder != 'dem' and '20m' not in placeholder :
100100 nodatavalue = nodatavalues [placeholder ]
101101 n_channels = pyotb .get_nbchannels (source )
102102 mask_expr += "||"
103103 mask_expr += "&&" .join (["im{}b{}=={}" .format (k + 1 , b , nodatavalue ) for b in range (1 , 1 + n_channels )])
104- bm . set_parameters ( il = [ source ] )
104+ bm_params . update ({ 'il' : source } )
105105 k += 1
106106
107- infer . set_parameters ({get_key ("rfieldx" ): src_rfield ,
108- get_key ("rfieldy" ): src_rfield ,
109- get_key ("placeholder" ): placeholder })
107+ infer_params . update ({get_key ("rfieldx" ): src_rfield ,
108+ get_key ("rfieldy" ): src_rfield ,
109+ get_key ("placeholder" ): placeholder })
110110
111111 # Model
112- infer . set_parameters ({"model.dir" : savedmodel_dir , "model.fullyconv" : "on" ,
113- "output.names" : [padded_tensor_name (out_tensor , pad )],
114- "output.efieldx" : efield , "output.efieldy" : efield ,
115- "optim.tilesizex" : efield , "optim.tilesizey" : efield ,
116- "optim.disabletiling" : 1 })
117- infer . Execute ( )
112+ infer_params . update ({"model.dir" : savedmodel_dir , "model.fullyconv" : True ,
113+ "output.names" : [padded_tensor_name (out_tensor , pad )],
114+ "output.efieldx" : efield , "output.efieldy" : efield ,
115+ "optim.tilesizex" : efield , "optim.tilesizey" : efield ,
116+ "optim.disabletiling" : True })
117+ infer = pyotb . TensorflowModelServe ( infer_params )
118118
119119 # For ESA Sentinel-2, remove potential zeros the network may have introduced in the valid parts of the image
120120 if out_pixeltype == otbApplication .ImagePixelType_uint16 :
121- n_channels = pyotb .get_nbchannels (infer . out )
121+ n_channels = pyotb .get_nbchannels (infer )
122122 exp = ';' .join ([f'(im1b{ b } <=1 ? 1 : im1b{ b } )' for b in range (1 , 1 + n_channels )])
123- rmzeros = pyotb .App ("BandMathX" , il = [infer . out ], exp = exp )
123+ rmzeros = pyotb .App ("BandMathX" , il = [infer ], exp = exp )
124124 rmzeros .SetParameterOutputImagePixelType ("out" , out_pixeltype )
125125 else :
126126 rmzeros = infer
127127
128128 # Mask for post processing
129129 mask_expr += "?0:255"
130- bm .set_parameters (exp = mask_expr )
130+ bm_params .update ({'exp' : mask_expr })
131+ bm = pyotb .BandMath (bm_params )
131132
132133 # Closing post processing mask to remove small groups of NoData pixels
133134 closing = pyotb .App ("BinaryMorphologicalOperation" , bm , filter = "closing" , foreval = 255 , structype = "box" ,
0 commit comments