|
1 | 1 | using Microsoft.ML.OnnxRuntime.Tensors; |
| 2 | +using NumSharp; |
2 | 3 | using OnnxStack.Core; |
3 | 4 | using OnnxStack.StableDiffusion.Config; |
4 | 5 | using OnnxStack.StableDiffusion.Enums; |
5 | 6 | using OnnxStack.StableDiffusion.Helpers; |
6 | 7 | using System; |
7 | 8 | using System.Collections.Generic; |
8 | 9 | using System.Linq; |
| 10 | +using System.Net; |
9 | 11 |
|
10 | 12 | namespace OnnxStack.StableDiffusion.Schedulers.LatentConsistency |
11 | 13 | { |
@@ -67,19 +69,16 @@ protected override int[] SetTimesteps() |
67 | 69 | var timeIncrement = Options.TrainTimesteps / Options.OriginalInferenceSteps; |
68 | 70 |
|
69 | 71 | //# LCM Training Steps Schedule |
70 | | - var lcmOriginTimesteps = Enumerable.Range(0, Options.OriginalInferenceSteps) |
71 | | - .Select(x => x * (timeIncrement - 1)) |
| 72 | + var lcmOriginTimesteps = Enumerable.Range(1, Options.OriginalInferenceSteps) |
| 73 | + .Select(x => x * timeIncrement - 1) |
72 | 74 | .ToArray(); |
73 | 75 |
|
74 | | - var skippingStep = lcmOriginTimesteps.Length / Options.InferenceSteps; |
75 | | - |
76 | | - // LCM Inference Steps Schedule |
77 | | - var steps = lcmOriginTimesteps |
78 | | - .Where((t, index) => index % skippingStep == 0) |
79 | | - .Take(Options.InferenceSteps) |
80 | | - .OrderByDescending(x => x) |
81 | | - .ToArray(); |
82 | | - return steps; |
| 76 | + var steps = ArrayHelpers.Linspace(0, lcmOriginTimesteps.Length - 1, Options.InferenceSteps) |
| 77 | + .Select(x => (int)Math.Floor(x)) |
| 78 | + .Select(x => lcmOriginTimesteps[x]) |
| 79 | + .OrderByDescending(x => x) |
| 80 | + .ToArray(); |
| 81 | + return steps; |
83 | 82 | } |
84 | 83 |
|
85 | 84 |
|
|
0 commit comments