|
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