Skip to content
This repository was archived by the owner on Nov 27, 2024. It is now read-only.

Commit db29200

Browse files
committed
ModelView to accommodate Upscale modelsets
1 parent 19bb2e7 commit db29200

File tree

61 files changed

+3577
-3876
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+3577
-3876
lines changed

OnnxStack.Core/Config/OnnxModelType.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public enum OnnxModelType
88
TextEncoder = 20,
99
TextEncoder2 = 21,
1010
VaeEncoder = 30,
11-
VaeDecoder = 40
11+
VaeDecoder = 40,
12+
Upscaler = 1000
1213
}
1314
}

OnnxStack.ImageUpscaler/Services/UpscaleService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ private async Task<Image<Rgba32>> GenerateInternalAsync(UpscaleModelSet modelSet
205205
using (var image = inputImage.ToImage())
206206
{
207207
var upscaleInput = CreateInputParams(image, modelSet.SampleSize, modelSet.ScaleFactor);
208-
var metadata = _modelService.GetModelMetadata(modelSet, OnnxModelType.Unet);
208+
var metadata = _modelService.GetModelMetadata(modelSet, OnnxModelType.Upscaler);
209209

210210
var outputResult = new Image<Rgba32>(upscaleInput.OutputWidth, upscaleInput.OutputHeight);
211211
foreach (var tile in upscaleInput.ImageTiles)
@@ -219,7 +219,7 @@ private async Task<Image<Rgba32>> GenerateInternalAsync(UpscaleModelSet modelSet
219219
inferenceParameters.AddInputTensor(inputTensor);
220220
inferenceParameters.AddOutputBuffer(outputDimension);
221221

222-
var results = await _modelService.RunInferenceAsync(modelSet, OnnxModelType.Unet, inferenceParameters);
222+
var results = await _modelService.RunInferenceAsync(modelSet, OnnxModelType.Upscaler, inferenceParameters);
223223
using (var result = results.First())
224224
{
225225
outputResult.Mutate(x => x.DrawImage(result.ToImage(), tile.Destination.Location, 1f));
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,22 @@
1-
namespace OnnxStack.StableDiffusion.Enums
1+
using System.ComponentModel;
2+
3+
namespace OnnxStack.StableDiffusion.Enums
24
{
35
public enum DiffuserType
46
{
7+
[Description("Text To Image")]
58
TextToImage = 0,
9+
10+
[Description("Image To Image")]
611
ImageToImage = 1,
12+
13+
[Description("Image Inpaint")]
714
ImageInpaint = 2,
15+
16+
[Description("Image Inpaint Legacy")]
817
ImageInpaintLegacy = 3,
18+
19+
[Description("Image To Animation")]
920
ImageToAnimation = 4
1021
}
1122
}

OnnxStack.UI/App.xaml

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
<FontFamily x:Key="FontAwesomeRegular">pack://application:,,,/Fonts/fa-regular-400.ttf#Font Awesome 5 Pro Regular</FontFamily>
2727
<FontFamily x:Key="FontAwesomeSolid">pack://application:,,,/Fonts/fa-solid-900.ttf#Font Awesome 5 Pro Solid</FontFamily>
2828

29-
29+
<system:Boolean x:Key="True">True</system:Boolean>
30+
<system:Boolean x:Key="False">False</system:Boolean>
3031
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
3132
<converters:InverseBooleanToVisibilityConverter x:Key="InverseBooleanToVisibilityConverter" />
3233
<converters:InverseBoolConverter x:Key="InverseBoolConverter" />
@@ -37,6 +38,7 @@
3738
<converters:DiffuserVisibilityConverter x:Key="DiffuserVisibilityConverter" />
3839
<converters:PipelineVisibilityConverter x:Key="PipelineVisibilityConverter" />
3940
<converters:ComboBoxAllItemConverter x:Key="ComboBoxAllItemConverter" />
41+
<converters:EnumDescriptionConverter x:Key="EnumDescriptionConverter" />
4042

4143
<ObjectDataProvider x:Key="ListSortDirection" MethodName="GetValues" ObjectType="{x:Type system:Enum}">
4244
<ObjectDataProvider.MethodParameters>
@@ -56,6 +58,12 @@
5658
</ObjectDataProvider.MethodParameters>
5759
</ObjectDataProvider>
5860

61+
<ObjectDataProvider x:Key="TokenizerType" MethodName="GetValues" ObjectType="{x:Type system:Enum}">
62+
<ObjectDataProvider.MethodParameters>
63+
<x:Type TypeName="SD_Enums:TokenizerType"/>
64+
</ObjectDataProvider.MethodParameters>
65+
</ObjectDataProvider>
66+
5967
<ObjectDataProvider x:Key="AlphaTransformType" MethodName="GetValues" ObjectType="{x:Type system:Enum}">
6068
<ObjectDataProvider.MethodParameters>
6169
<x:Type TypeName="SD_Enums:AlphaTransformType"/>
@@ -787,14 +795,15 @@
787795

788796

789797

790-
791-
792-
793-
794-
795-
796-
797-
798+
<Style x:Key="EnumComboBox" TargetType="{x:Type ComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
799+
<Setter Property="ItemTemplate">
800+
<Setter.Value>
801+
<DataTemplate>
802+
<TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}"/>
803+
</DataTemplate>
804+
</Setter.Value>
805+
</Setter>
806+
</Style>
798807

799808

800809

OnnxStack.UI/App.xaml.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ public App()
3939
builder.Services.AddTransient<UpdateModelDialog>();
4040
builder.Services.AddTransient<AddUpscaleModelDialog>();
4141
builder.Services.AddTransient<UpdateUpscaleModelDialog>();
42+
builder.Services.AddTransient<UpdateModelSettingsDialog>();
43+
builder.Services.AddTransient<UpdateModelMetadataDialog>();
44+
builder.Services.AddTransient<ViewModelMetadataDialog>();
45+
builder.Services.AddTransient<UpdateUpscaleModelSettingsDialog> ();
4246
builder.Services.AddSingleton<IModelFactory, ModelFactory>();
4347
builder.Services.AddSingleton<IDialogService, DialogService>();
4448
builder.Services.AddSingleton<IModelDownloadService, ModelDownloadService>();
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.ComponentModel;
4+
using System.Globalization;
5+
using System.Reflection;
6+
using System.Text;
7+
using System.Windows.Data;
8+
9+
namespace OnnxStack.UI.Converters
10+
{
11+
public class EnumDescriptionConverter : IValueConverter
12+
{
13+
private string GetEnumDescription(Enum enumObj)
14+
{
15+
FieldInfo fieldInfo = enumObj.GetType().GetField(enumObj.ToString());
16+
object[] attribArray = fieldInfo.GetCustomAttributes(false);
17+
18+
if (attribArray.Length == 0)
19+
return enumObj.ToString();
20+
else
21+
{
22+
DescriptionAttribute attrib = null;
23+
24+
foreach (var att in attribArray)
25+
{
26+
if (att is DescriptionAttribute)
27+
attrib = att as DescriptionAttribute;
28+
}
29+
30+
if (attrib != null)
31+
return attrib.Description;
32+
33+
return enumObj.ToString();
34+
}
35+
}
36+
37+
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
38+
{
39+
if (value is not Enum myEnum)
40+
return value;
41+
42+
string description = GetEnumDescription(myEnum);
43+
return description;
44+
}
45+
46+
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
47+
{
48+
return string.Empty;
49+
}
50+
}
51+
}

OnnxStack.UI/Dialogs/AddModelDialog.xaml

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
55
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
66
xmlns:local="clr-namespace:OnnxStack.UI.Dialogs"
7+
xmlns:models="clr-namespace:OnnxStack.UI.Models"
78
xmlns:userControls="clr-namespace:OnnxStack.UI.UserControls"
89
mc:Ignorable="d"
910
Name="UI"
@@ -15,57 +16,47 @@
1516
UseLayoutRounding="True"
1617
Style="{StaticResource BaseWindow}"
1718
ContentRendered="OnContentRendered"
18-
Title="Add Model">
19+
Title="Add StableDiffusion Model">
1920
<DockPanel DataContext="{Binding ElementName=UI}" Margin="15, 15, 15, 10">
2021
<StackPanel DockPanel.Dock="Top">
2122

22-
<UniformGrid Columns="2">
23-
<StackPanel>
24-
<TextBlock Text="Model Pipeline"/>
25-
<ComboBox ItemsSource="{Binding Source={StaticResource DiffuserPipelineType}}" SelectedItem="{Binding PipelineType}" />
26-
</StackPanel>
27-
<StackPanel>
28-
<TextBlock Text="Model Type"/>
29-
<ComboBox ItemsSource="{Binding Source={StaticResource ModelType}}" SelectedItem="{Binding ModelType}" />
30-
<StackPanel.Style>
31-
<Style TargetType="{x:Type StackPanel}">
32-
<Setter Property="IsEnabled" Value="False" />
23+
<StackPanel Visibility="{Binding EnableTemplateSelection, Converter={StaticResource BooleanToVisibilityConverter}}">
24+
<TextBlock Text="Model Type"/>
25+
<ComboBox ItemsSource="{Binding ModelTemplates}" SelectedItem="{Binding ModelTemplate}" DisplayMemberPath="Name" >
26+
<ComboBox.ItemContainerStyle>
27+
<Style TargetType="{x:Type ComboBoxItem}" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
28+
<Setter Property="Visibility" Value="Visible" />
3329
<Style.Triggers>
34-
<DataTrigger Binding="{Binding PipelineType, ElementName=UI}" Value="StableDiffusionXL">
35-
<Setter Property="IsEnabled" Value="True" />
30+
<DataTrigger Binding="{Binding Category}" Value="Upscaler">
31+
<Setter Property="Visibility" Value="Collapsed"/>
3632
</DataTrigger>
37-
<DataTrigger Binding="{Binding PipelineType, ElementName=UI}" Value="LatentConsistencyXL">
38-
<Setter Property="IsEnabled" Value="True" />
33+
<DataTrigger Binding="{Binding IsUserTemplate}" Value="True">
34+
<Setter Property="Visibility" Value="Collapsed"/>
3935
</DataTrigger>
4036
</Style.Triggers>
41-
</Style>
42-
</StackPanel.Style>
43-
</StackPanel>
44-
</UniformGrid>
4537

46-
38+
</Style>
39+
</ComboBox.ItemContainerStyle>
40+
</ComboBox>
41+
</StackPanel>
4742

48-
4943

5044
<StackPanel Margin="0,10,0,0">
5145
<TextBlock Text="Model Folder"/>
5246
<userControls:FilePickerTextBox FileName="{Binding ModelFolder, Mode=TwoWay}" IsFolderPicker="True" />
5347
</StackPanel>
5448

55-
<StackPanel Margin="0,10,0,0">
49+
<StackPanel Margin="0,10,0,0" Visibility="{Binding EnableNameSelection, Converter={StaticResource BooleanToVisibilityConverter}}">
5650
<TextBlock Text="Model Name"/>
5751
<TextBox Text="{Binding ModelName, UpdateSourceTrigger=PropertyChanged}" />
5852
</StackPanel>
5953

6054
<StackPanel Margin="5">
61-
<StackPanel Orientation="Horizontal" Visibility="{Binding IsNameInvalid, Converter={StaticResource BooleanToVisibilityConverter}}">
62-
<userControls:FontAwesome Icon="&#xf00d;" Color="Red" />
63-
<TextBlock Text="Name" Margin="5,0,0,3" />
64-
</StackPanel>
55+
6556

6657
<ItemsControl ItemsSource="{Binding ValidationResults}">
6758
<ItemsControl.ItemTemplate>
68-
<DataTemplate DataType="{x:Type local:ValidationResult}">
59+
<DataTemplate DataType="{x:Type models:ValidationResult}">
6960
<StackPanel Orientation="Horizontal">
7061
<userControls:FontAwesome >
7162
<userControls:FontAwesome.Style>
@@ -81,7 +72,7 @@
8172
</Style>
8273
</userControls:FontAwesome.Style>
8374
</userControls:FontAwesome>
84-
<TextBlock Text="{Binding ModelType}" Margin="5,0,0,3" />
75+
<TextBlock Text="{Binding Name}" Margin="5,0,0,3" />
8576
</StackPanel>
8677
</DataTemplate>
8778
</ItemsControl.ItemTemplate>
@@ -93,7 +84,7 @@
9384
</StackPanel>
9485
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,20,0,0">
9586
<UniformGrid Columns="2" Height="30">
96-
<Button Content="Ok" Command="{Binding SaveCommand}" IsDefault="True"/>
87+
<Button Content="Save" Command="{Binding SaveCommand}" IsDefault="True"/>
9788
<Button Content="Cancel" Command="{Binding CancelCommand}" Width="100"/>
9889
</UniformGrid>
9990
</StackPanel>

0 commit comments

Comments
 (0)