@@ -45,7 +45,7 @@ public StableDiffusionXLDiffuser(IOnnxModelService onnxModelService, IPromptServ
4545 /// <param name="progressCallback">The progress callback.</param>
4646 /// <param name="cancellationToken">The cancellation token.</param>
4747 /// <returns></returns>
48- protected override async Task < DenseTensor < float > > SchedulerStepAsync ( IModelOptions modelOptions , PromptOptions promptOptions , SchedulerOptions schedulerOptions , DenseTensor < float > promptEmbeddings , bool performGuidance , Action < int , int > progressCallback = null , CancellationToken cancellationToken = default )
48+ protected override async Task < DenseTensor < float > > SchedulerStepAsync ( IModelOptions modelOptions , PromptOptions promptOptions , SchedulerOptions schedulerOptions , PromptEmbeddingsResult promptEmbeddings , bool performGuidance , Action < int , int > progressCallback = null , CancellationToken cancellationToken = default )
4949 {
5050 // Get Scheduler
5151 using ( var scheduler = GetScheduler ( schedulerOptions ) )
@@ -71,14 +71,17 @@ protected override async Task<DenseTensor<float>> SchedulerStepAsync(IModelOptio
7171 var inputLatent = performGuidance ? latents . Repeat ( 2 ) : latents ;
7272 var inputTensor = scheduler . ScaleInput ( inputLatent , timestep ) ;
7373 var timestepTensor = CreateTimestepTensor ( timestep ) ;
74+ var addTimeIds = GetAddTimeIds ( schedulerOptions , performGuidance ) ;
7475
7576 var outputChannels = performGuidance ? 2 : 1 ;
7677 var outputDimension = schedulerOptions . GetScaledDimension ( outputChannels ) ;
7778 using ( var inferenceParameters = new OnnxInferenceParameters ( metadata ) )
7879 {
7980 inferenceParameters . AddInputTensor ( inputTensor ) ;
8081 inferenceParameters . AddInputTensor ( timestepTensor ) ;
81- inferenceParameters . AddInputTensor ( promptEmbeddings ) ;
82+ inferenceParameters . AddInputTensor ( promptEmbeddings . PromptEmbeds ) ;
83+ inferenceParameters . AddInputTensor ( promptEmbeddings . PooledPromptEmbeds ) ;
84+ inferenceParameters . AddInputTensor ( addTimeIds ) ;
8285 inferenceParameters . AddOutputBuffer ( outputDimension ) ;
8386
8487 var results = await _onnxModelService . RunInferenceAsync ( modelOptions , OnnxModelType . Unet , inferenceParameters ) ;
@@ -105,6 +108,27 @@ protected override async Task<DenseTensor<float>> SchedulerStepAsync(IModelOptio
105108 }
106109
107110
111+ /// <summary>
112+ /// Gets the add AddTimeIds.
113+ /// </summary>
114+ /// <param name="schedulerOptions">The scheduler options.</param>
115+ /// <returns></returns>
116+ private DenseTensor < float > GetAddTimeIds ( SchedulerOptions schedulerOptions , bool performGuidance )
117+ {
118+ var addTimeIds = new float [ ]
119+ {
120+ schedulerOptions . Height , schedulerOptions . Width , //original_size
121+ 0 , 0 , //crops_coords_top_left
122+ schedulerOptions . Height , schedulerOptions . Width //negative_target_size
123+ } ;
124+ var result = TensorHelper . CreateTensor ( addTimeIds , new [ ] { 1 , addTimeIds . Length } ) ;
125+ if ( performGuidance )
126+ return result . Repeat ( 2 ) ;
127+
128+ return result ;
129+ }
130+
131+
108132 /// <summary>
109133 /// Gets the scheduler.
110134 /// </summary>
0 commit comments