feat: Add GPU support options and enhance UI for Face Encoder and Matcher functionalities
This commit is contained in:
parent
af74c90ce7
commit
6e05869b04
9 changed files with 160 additions and 115 deletions
|
|
@ -100,7 +100,7 @@
|
||||||
<Setter Property="MinHeight" Value="16" />
|
<Setter Property="MinHeight" Value="16" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<StyleInclude Source="avares://IconPacks.Avalonia/Icons.axaml" />
|
<StyleInclude Source="avares://IconPacks.Avalonia/Icons.axaml"/>
|
||||||
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/>
|
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/>
|
||||||
</Application.Styles>
|
</Application.Styles>
|
||||||
</Application>
|
</Application>
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
xmlns:views="clr-namespace:ImageCatalog_2.AvaloniaViews"
|
xmlns:views="clr-namespace:ImageCatalog_2.AvaloniaViews"
|
||||||
xmlns:iconPacks="https://github.com/MahApps/IconPacks.Avalonia"
|
xmlns:iconPacks="https://github.com/MahApps/IconPacks.Avalonia"
|
||||||
x:Class="ImageCatalog_2.AvaloniaMainWindow"
|
x:Class="ImageCatalog_2.AvaloniaMainWindow"
|
||||||
|
x:CompileBindings="False"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="Image Catalog - Avalonia" Height="540" Width="800">
|
Title="Image Catalog - Avalonia" Height="540" Width="800">
|
||||||
|
|
||||||
|
|
@ -106,7 +107,7 @@
|
||||||
</Button>
|
</Button>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Border Grid.Row="1" BorderThickness="1" Padding="10" MaxWidth="280" MinWidth="0">
|
<Border Grid.Row="1" BorderThickness="1" Padding="10" MaxWidth="280" MinWidth="0">
|
||||||
<Grid RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,*" RowSpacing="8" MinWidth="0">
|
<Grid RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,*" MinWidth="0">
|
||||||
<StackPanel Grid.Row="0">
|
<StackPanel Grid.Row="0">
|
||||||
<Button HorizontalAlignment="Stretch" Margin="0,0,0,4" Command="{Binding LoadSettingsCommand}">
|
<Button HorizontalAlignment="Stretch" Margin="0,0,0,4" Command="{Binding LoadSettingsCommand}">
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,11 @@ public partial class AvaloniaMainWindow : Window
|
||||||
private bool _isDarkTheme;
|
private bool _isDarkTheme;
|
||||||
private bool _startupSettingsRestoreAttempted;
|
private bool _startupSettingsRestoreAttempted;
|
||||||
|
|
||||||
|
public AvaloniaMainWindow()
|
||||||
|
: this(Program.ServiceProvider.GetRequiredService<DataModel>())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public AvaloniaMainWindow(DataModel model)
|
public AvaloniaMainWindow(DataModel model)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,8 @@
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:avaloniaDataGrid="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls.DataGrid"
|
xmlns:avaloniaDataGrid="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls.DataGrid"
|
||||||
xmlns:iconPacks="https://github.com/MahApps/IconPacks.Avalonia"
|
xmlns:iconPacks="https://github.com/MahApps/IconPacks.Avalonia"
|
||||||
x:Class="ImageCatalog_2.AvaloniaViews.AiTabView">
|
x:Class="ImageCatalog_2.AvaloniaViews.AiTabView"
|
||||||
|
x:CompileBindings="False">
|
||||||
<TabControl Margin="4">
|
<TabControl Margin="4">
|
||||||
<TabItem Header="Esecuzione">
|
<TabItem Header="Esecuzione">
|
||||||
<Grid RowDefinitions="Auto,*">
|
<Grid RowDefinitions="Auto,*">
|
||||||
|
|
|
||||||
|
|
@ -3,117 +3,139 @@
|
||||||
xmlns:avaloniaDataGrid="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls.DataGrid"
|
xmlns:avaloniaDataGrid="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls.DataGrid"
|
||||||
xmlns:iconPacks="https://github.com/MahApps/IconPacks.Avalonia"
|
xmlns:iconPacks="https://github.com/MahApps/IconPacks.Avalonia"
|
||||||
xmlns:converters="clr-namespace:ImageCatalog_2.Converters"
|
xmlns:converters="clr-namespace:ImageCatalog_2.Converters"
|
||||||
x:Class="ImageCatalog_2.AvaloniaViews.FaceAiTabView">
|
x:Class="ImageCatalog_2.AvaloniaViews.FaceAiTabView"
|
||||||
|
x:CompileBindings="False">
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
<converters:FilePathToBitmapConverter x:Key="FilePathToBitmapConverter" />
|
<converters:FilePathToBitmapConverter x:Key="FilePathToBitmapConverter" />
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
|
|
||||||
<TabControl Margin="4">
|
<TabControl Margin="4">
|
||||||
<TabItem Header="Encoder">
|
<TabItem Header="Encoder">
|
||||||
<ScrollViewer>
|
<TabControl Margin="0,4,0,0">
|
||||||
<StackPanel Margin="4" Spacing="6">
|
<TabItem Header="Esecuzione">
|
||||||
<TextBlock Text="Face Recognition Encoder" FontWeight="Bold" />
|
<ScrollViewer>
|
||||||
<TextBlock Text="Esegue il face encoder usando la cartella Destinazione corrente come --images e genera automaticamente file .pkl e log nella cartella di output scelta."
|
<StackPanel Margin="4" Spacing="6">
|
||||||
TextWrapping="Wrap" Opacity="0.8" />
|
<TextBlock Text="Face Recognition Encoder" FontWeight="Bold" />
|
||||||
|
<TextBlock Text="Esegue il face encoder usando la cartella Destinazione corrente come --images e genera automaticamente file .pkl e log nella cartella di output scelta."
|
||||||
|
TextWrapping="Wrap" Opacity="0.8" />
|
||||||
|
|
||||||
<TextBlock Text="Cartella Face Encoder" FontWeight="Bold" Margin="0,4,0,0" />
|
<WrapPanel>
|
||||||
<Grid ColumnDefinitions="Auto,*,Auto,Auto" ColumnSpacing="6">
|
<CheckBox Content="Ricorsivo (--recursive)" IsChecked="{Binding FaceRecursive, Mode=TwoWay}" Margin="0,0,12,6" />
|
||||||
<TextBlock Grid.Column="0" Text="Percorso:" VerticalAlignment="Center" />
|
<CheckBox Content="Includi thumbnail (--include-tn)" IsChecked="{Binding FaceIncludeThumbnails, Mode=TwoWay}" Margin="0,0,12,6" />
|
||||||
<TextBox Grid.Column="1" Name="FaceExecutablePathTextBox" Text="{Binding FaceExecutablePath, Mode=TwoWay}" Watermark="C:\tools\Face_Recognition_Windows" />
|
<CheckBox Content="Upsample (--upsample)" IsChecked="{Binding FaceUpsample, Mode=TwoWay}" Margin="0,0,12,6" />
|
||||||
<Button Grid.Column="2" Name="FaceSelectExecutableButton" Click="SelectFaceExecutable_Click" Width="104" Margin="6,0,0,0">
|
<CheckBox Content="Usa GPU"
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
IsChecked="{Binding UseFaceGpu, Mode=TwoWay}"
|
||||||
<iconPacks:PackIconMaterial Kind="FolderOutline" Width="14" Height="14" />
|
IsEnabled="{Binding FaceGpuOptionEnabled}"
|
||||||
<TextBlock Text="Scegli..." />
|
Margin="0,0,12,6" />
|
||||||
|
</WrapPanel>
|
||||||
|
|
||||||
|
<Grid ColumnDefinitions="Auto,120,Auto,120,*" ColumnSpacing="6">
|
||||||
|
<TextBlock Grid.Column="0" Text="Parallelismo:" VerticalAlignment="Center" />
|
||||||
|
<ComboBox Grid.Column="1" ItemsSource="{Binding FaceParallelismOptions}" SelectedItem="{Binding FaceParallelism, Mode=TwoWay}" />
|
||||||
|
<TextBlock Grid.Column="2" Text="Min size:" VerticalAlignment="Center" />
|
||||||
|
<TextBox Grid.Column="3" Text="{Binding FaceMinSize, Mode=TwoWay}" Watermark="35" />
|
||||||
|
<TextBlock Grid.Column="4" Text="Usa --multicore in CPU e --multiprocess in GPU." VerticalAlignment="Center" TextWrapping="Wrap" Opacity="0.75" />
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<Grid ColumnDefinitions="Auto,*,Auto,Auto" ColumnSpacing="6">
|
||||||
|
<TextBlock Grid.Column="0" Text="Sorgente:" VerticalAlignment="Center" />
|
||||||
|
<TextBox Grid.Column="1" Name="FaceDestinationPathTextBox" Text="{Binding DestinationPath, Mode=OneWay}" IsReadOnly="True" />
|
||||||
|
<Button Grid.Column="3" Name="FaceOpenDestinationButton" Click="OpenFaceDestinationFolder_Click" Width="72" Margin="6,0,0,0">
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
||||||
|
<iconPacks:PackIconMaterial Kind="Folder" Width="14" Height="14" />
|
||||||
|
<TextBlock Text="Apri" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<TextBlock Text="Output encodings" FontWeight="Bold" Margin="0,4,0,0" />
|
||||||
|
<Grid ColumnDefinitions="Auto,*,Auto,Auto" ColumnSpacing="6">
|
||||||
|
<TextBlock Grid.Column="0" Text="Cartella out:" VerticalAlignment="Center" />
|
||||||
|
<TextBox Grid.Column="1" Name="FaceOutputFolderTextBox" Text="{Binding FaceOutputFolderPath, Mode=TwoWay}" Watermark="C:\output\face_encoder" />
|
||||||
|
<Button Grid.Column="2" Name="FaceSelectOutputButton" Click="SelectFaceOutputFolder_Click" Width="104" Margin="6,0,0,0">
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
||||||
|
<iconPacks:PackIconMaterial Kind="FolderOutline" Width="14" Height="14" />
|
||||||
|
<TextBlock Text="Scegli..." />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
<Button Grid.Column="3" Name="FaceOpenOutputButton" Click="OpenFaceOutputFolder_Click" Width="72" Margin="6,0,0,0">
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
||||||
|
<iconPacks:PackIconMaterial Kind="Folder" Width="14" Height="14" />
|
||||||
|
<TextBlock Text="Apri" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
</Grid>
|
||||||
|
<TextBlock Text="I file vengono creati come face_encodings_yyyyMMdd_HHmmss_nomecartella.pkl e encoder_log_yyyyMMdd_HHmmss_nomecartella.txt."
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Opacity="0.75" />
|
||||||
|
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Spacing="8" Margin="0,6,0,0">
|
||||||
|
<Button Name="FaceRunButton" Command="{Binding StartFaceEncoderCommand}" Width="176">
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6" VerticalAlignment="Center">
|
||||||
|
<iconPacks:PackIconMaterial Kind="PlayCircle" Width="16" Height="16" Foreground="#2E7D32" />
|
||||||
|
<ProgressBar Width="18"
|
||||||
|
Height="18"
|
||||||
|
IsIndeterminate="True"
|
||||||
|
IsVisible="{Binding IsFaceEncoderRunning}"
|
||||||
|
ShowProgressText="False"
|
||||||
|
VerticalAlignment="Center" />
|
||||||
|
<TextBlock Text="Esegui Face Encoder" VerticalAlignment="Center" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
<Button Command="{Binding StopFaceEncoderCommand}" Width="120">
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
||||||
|
<iconPacks:PackIconMaterial Kind="Cancel" Width="16" Height="16" Foreground="#C62828" />
|
||||||
|
<TextBlock Text="Stop" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
<TextBlock VerticalAlignment="Center" Text="{Binding FaceStatusMessage}" TextWrapping="Wrap" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Button>
|
|
||||||
<Button Grid.Column="3" Name="FaceOpenExecutableButton" Click="OpenFaceExecutableFolder_Click" Width="72" Margin="6,0,0,0">
|
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
|
||||||
<iconPacks:PackIconMaterial Kind="Folder" Width="14" Height="14" />
|
|
||||||
<TextBlock Text="Apri" />
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal" Spacing="12">
|
<TextBlock Text="Output comando" FontWeight="Bold" Margin="0,6,0,0" />
|
||||||
<CheckBox Content="Ricorsivo (--recursive)" IsChecked="{Binding FaceRecursive, Mode=TwoWay}" />
|
<TextBox Name="FaceOutputTextBox"
|
||||||
<CheckBox Content="Includi thumbnail (--include-tn)" IsChecked="{Binding FaceIncludeThumbnails, Mode=TwoWay}" />
|
Text="{Binding FaceCommandOutput}"
|
||||||
<CheckBox Content="Upsample (--upsample)" IsChecked="{Binding FaceUpsample, Mode=TwoWay}" />
|
IsReadOnly="True"
|
||||||
<CheckBox Content="Usa GPU"
|
AcceptsReturn="True"
|
||||||
IsChecked="{Binding UseFaceGpu, Mode=TwoWay}"
|
TextWrapping="Wrap"
|
||||||
IsEnabled="{Binding FaceGpuOptionEnabled}" />
|
FontFamily="Cascadia Mono, Consolas, monospace"
|
||||||
</StackPanel>
|
Height="220"
|
||||||
<TextBlock Text="Seleziona la cartella base di Face Recognition Windows: l'app sceglie automaticamente face_encoder_cpu.exe o face_encoder_gpu.exe in base al checkbox GPU."
|
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||||
TextWrapping="Wrap"
|
ScrollViewer.HorizontalScrollBarVisibility="Auto" />
|
||||||
Opacity="0.75" />
|
</StackPanel>
|
||||||
|
</ScrollViewer>
|
||||||
|
</TabItem>
|
||||||
|
|
||||||
<Grid ColumnDefinitions="Auto,120,Auto,120,*" ColumnSpacing="6">
|
<TabItem Header="Impostazioni">
|
||||||
<TextBlock Grid.Column="0" Text="Parallelismo:" VerticalAlignment="Center" />
|
<ScrollViewer>
|
||||||
<ComboBox Grid.Column="1" ItemsSource="{Binding FaceParallelismOptions}" SelectedItem="{Binding FaceParallelism, Mode=TwoWay}" />
|
<StackPanel Margin="4" Spacing="8">
|
||||||
<TextBlock Grid.Column="2" Text="Min size:" VerticalAlignment="Center" />
|
<TextBlock Text="Cartella Face Encoder" FontWeight="Bold" />
|
||||||
<TextBox Grid.Column="3" Text="{Binding FaceMinSize, Mode=TwoWay}" Watermark="35" />
|
<TextBlock Text="Seleziona la cartella base di face recognition"
|
||||||
<TextBlock Grid.Column="4" Text="Usa --multicore in CPU e --multiprocess in GPU." VerticalAlignment="Center" Opacity="0.75" />
|
TextWrapping="Wrap"
|
||||||
</Grid>
|
Opacity="0.8" />
|
||||||
|
<TextBlock Text="L'app sceglie automaticamente face_encoder_cpu.exe o face_encoder_gpu.exe in base al checkbox GPU."
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Opacity="0.75" />
|
||||||
|
|
||||||
<Grid ColumnDefinitions="Auto,*,Auto,Auto" ColumnSpacing="6">
|
<Grid ColumnDefinitions="Auto,*,Auto,Auto" ColumnSpacing="6">
|
||||||
<TextBlock Grid.Column="0" Text="Sorgente:" VerticalAlignment="Center" />
|
<TextBlock Grid.Column="0" Text="Percorso:" VerticalAlignment="Center" />
|
||||||
<TextBox Grid.Column="1" Name="FaceDestinationPathTextBox" Text="{Binding DestinationPath, Mode=OneWay}" IsReadOnly="True" />
|
<TextBox Grid.Column="1" Name="FaceExecutablePathTextBox" Text="{Binding FaceExecutablePath, Mode=TwoWay}" Watermark="C:\tools\Face_Recognition_Windows" />
|
||||||
<Button Grid.Column="3" Name="FaceOpenDestinationButton" Click="OpenFaceDestinationFolder_Click" Width="72" Margin="6,0,0,0">
|
<Button Grid.Column="2" Name="FaceSelectExecutableButton" Click="SelectFaceExecutable_Click" Width="104" Margin="6,0,0,0">
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
||||||
<iconPacks:PackIconMaterial Kind="Folder" Width="14" Height="14" />
|
<iconPacks:PackIconMaterial Kind="FolderOutline" Width="14" Height="14" />
|
||||||
<TextBlock Text="Apri" />
|
<TextBlock Text="Scegli..." />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Button>
|
</Button>
|
||||||
</Grid>
|
<Button Grid.Column="3" Name="FaceOpenExecutableButton" Click="OpenFaceExecutableFolder_Click" Width="72" Margin="6,0,0,0">
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
||||||
<TextBlock Text="Output encodings" FontWeight="Bold" Margin="0,4,0,0" />
|
<iconPacks:PackIconMaterial Kind="Folder" Width="14" Height="14" />
|
||||||
<Grid ColumnDefinitions="Auto,*,Auto,Auto" ColumnSpacing="6">
|
<TextBlock Text="Apri" />
|
||||||
<TextBlock Grid.Column="0" Text="Cartella out:" VerticalAlignment="Center" />
|
</StackPanel>
|
||||||
<TextBox Grid.Column="1" Name="FaceOutputFolderTextBox" Text="{Binding FaceOutputFolderPath, Mode=TwoWay}" Watermark="C:\output\face_encoder" />
|
</Button>
|
||||||
<Button Grid.Column="2" Name="FaceSelectOutputButton" Click="SelectFaceOutputFolder_Click" Width="104" Margin="6,0,0,0">
|
</Grid>
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
</StackPanel>
|
||||||
<iconPacks:PackIconMaterial Kind="FolderOutline" Width="14" Height="14" />
|
</ScrollViewer>
|
||||||
<TextBlock Text="Scegli..." />
|
</TabItem>
|
||||||
</StackPanel>
|
</TabControl>
|
||||||
</Button>
|
|
||||||
<Button Grid.Column="3" Name="FaceOpenOutputButton" Click="OpenFaceOutputFolder_Click" Width="72" Margin="6,0,0,0">
|
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
|
||||||
<iconPacks:PackIconMaterial Kind="Folder" Width="14" Height="14" />
|
|
||||||
<TextBlock Text="Apri" />
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
</Grid>
|
|
||||||
<TextBlock Text="I file vengono creati come face_encodings_yyyyMMdd_HHmmss_nomecartella.pkl e encoder_log_yyyyMMdd_HHmmss_nomecartella.txt."
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Opacity="0.75" />
|
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal" Spacing="6" Margin="0,6,0,0">
|
|
||||||
<Button Name="FaceRunButton" Command="{Binding StartFaceEncoderCommand}">
|
|
||||||
<StackPanel Orientation="Horizontal" Spacing="8" VerticalAlignment="Center">
|
|
||||||
<ProgressBar Width="18"
|
|
||||||
Height="18"
|
|
||||||
IsIndeterminate="True"
|
|
||||||
IsVisible="{Binding IsFaceEncoderRunning}"
|
|
||||||
ShowProgressText="False"
|
|
||||||
VerticalAlignment="Center" />
|
|
||||||
<TextBlock Text="Esegui Face Encoder" VerticalAlignment="Center" />
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
<Button Content="Stop" Command="{Binding StopFaceEncoderCommand}" />
|
|
||||||
<TextBlock VerticalAlignment="Center" Text="{Binding FaceStatusMessage}" />
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<TextBlock Text="Output comando" FontWeight="Bold" Margin="0,6,0,0" />
|
|
||||||
<TextBox Name="FaceOutputTextBox"
|
|
||||||
Text="{Binding FaceCommandOutput}"
|
|
||||||
IsReadOnly="True"
|
|
||||||
AcceptsReturn="True"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
FontFamily="Cascadia Mono, Consolas, monospace"
|
|
||||||
Height="220"
|
|
||||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
|
||||||
ScrollViewer.HorizontalScrollBarVisibility="Auto" />
|
|
||||||
</StackPanel>
|
|
||||||
</ScrollViewer>
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
<TabItem Header="Matcher Test">
|
<TabItem Header="Matcher Test">
|
||||||
|
|
@ -240,9 +262,10 @@
|
||||||
<TextBlock Grid.Column="2" Text="Range utile: 0.35 - 0.75. Più bassa = match più restrittivo, più alta = più permissivo." VerticalAlignment="Center" TextWrapping="Wrap" Opacity="0.75" />
|
<TextBlock Grid.Column="2" Text="Range utile: 0.35 - 0.75. Più bassa = match più restrittivo, più alta = più permissivo." VerticalAlignment="Center" TextWrapping="Wrap" Opacity="0.75" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal" Spacing="6" Margin="0,6,0,0">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Spacing="8" Margin="0,6,0,0">
|
||||||
<Button Command="{Binding StartFaceMatcherCommand}">
|
<Button Command="{Binding StartFaceMatcherCommand}" Width="176">
|
||||||
<StackPanel Orientation="Horizontal" Spacing="8" VerticalAlignment="Center">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6" VerticalAlignment="Center">
|
||||||
|
<iconPacks:PackIconMaterial Kind="PlayCircle" Width="16" Height="16" Foreground="#2E7D32" />
|
||||||
<ProgressBar Width="18"
|
<ProgressBar Width="18"
|
||||||
Height="18"
|
Height="18"
|
||||||
IsIndeterminate="True"
|
IsIndeterminate="True"
|
||||||
|
|
@ -252,7 +275,12 @@
|
||||||
<TextBlock Text="Avvia Face Matcher" VerticalAlignment="Center" />
|
<TextBlock Text="Avvia Face Matcher" VerticalAlignment="Center" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Button>
|
</Button>
|
||||||
<Button Content="Stop" Command="{Binding StopFaceMatcherCommand}" />
|
<Button Command="{Binding StopFaceMatcherCommand}" Width="120">
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
|
||||||
|
<iconPacks:PackIconMaterial Kind="Cancel" Width="16" Height="16" Foreground="#C62828" />
|
||||||
|
<TextBlock Text="Stop" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
<TextBlock VerticalAlignment="Center" Text="{Binding FaceMatcherStatusMessage}" TextWrapping="Wrap" />
|
<TextBlock VerticalAlignment="Center" Text="{Binding FaceMatcherStatusMessage}" TextWrapping="Wrap" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -331,8 +331,7 @@ public partial class FaceAiTabView : Avalonia.Controls.UserControl
|
||||||
var contentGrid = new Grid
|
var contentGrid = new Grid
|
||||||
{
|
{
|
||||||
Margin = new Avalonia.Thickness(0, 12, 0, 12),
|
Margin = new Avalonia.Thickness(0, 12, 0, 12),
|
||||||
RowDefinitions = new RowDefinitions("Auto,*,Auto"),
|
RowDefinitions = new RowDefinitions("Auto,*,Auto")
|
||||||
RowSpacing = 12
|
|
||||||
};
|
};
|
||||||
Grid.SetRow(contentGrid, 1);
|
Grid.SetRow(contentGrid, 1);
|
||||||
|
|
||||||
|
|
@ -371,7 +370,8 @@ public partial class FaceAiTabView : Avalonia.Controls.UserControl
|
||||||
var toolbar = new StackPanel
|
var toolbar = new StackPanel
|
||||||
{
|
{
|
||||||
Orientation = Orientation.Horizontal,
|
Orientation = Orientation.Horizontal,
|
||||||
Spacing = 8
|
Spacing = 8,
|
||||||
|
Margin = new Avalonia.Thickness(0, 0, 0, 12)
|
||||||
};
|
};
|
||||||
|
|
||||||
var zoomOutButton = new Button { Content = "Zoom -", MinWidth = 80, IsEnabled = imageControl is not null };
|
var zoomOutButton = new Button { Content = "Zoom -", MinWidth = 80, IsEnabled = imageControl is not null };
|
||||||
|
|
@ -427,7 +427,8 @@ public partial class FaceAiTabView : Avalonia.Controls.UserControl
|
||||||
AcceptsReturn = true,
|
AcceptsReturn = true,
|
||||||
TextWrapping = TextWrapping.Wrap,
|
TextWrapping = TextWrapping.Wrap,
|
||||||
FontFamily = new FontFamily("Cascadia Mono, Consolas, monospace"),
|
FontFamily = new FontFamily("Cascadia Mono, Consolas, monospace"),
|
||||||
MinHeight = 180
|
MinHeight = 180,
|
||||||
|
Margin = new Avalonia.Thickness(0, 12, 0, 0)
|
||||||
};
|
};
|
||||||
Grid.SetRow(debugBox, 2);
|
Grid.SetRow(debugBox, 2);
|
||||||
contentGrid.Children.Add(debugBox);
|
contentGrid.Children.Add(debugBox);
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
<TextBlock Text="Flusso: login admin, creazione gara, creazione punti foto, upload file processati da cartella destinazione locale, indicizzazione punti foto."
|
<TextBlock Text="Flusso: login admin, creazione gara, creazione punti foto, upload file processati da cartella destinazione locale, indicizzazione punti foto."
|
||||||
TextWrapping="Wrap" Opacity="0.8" />
|
TextWrapping="Wrap" Opacity="0.8" />
|
||||||
|
|
||||||
<Grid ColumnDefinitions="Auto,*" RowDefinitions="Auto,Auto" ColumnSpacing="6" RowSpacing="6">
|
<Grid ColumnDefinitions="Auto,*" RowDefinitions="Auto,Auto" ColumnSpacing="6">
|
||||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="Login:" VerticalAlignment="Center" />
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="Login:" VerticalAlignment="Center" />
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Name="ApiLoginTextBox" Text="{Binding ApiLogin, Mode=TwoWay}" Watermark="admin user" />
|
<TextBox Grid.Row="0" Grid.Column="1" Name="ApiLoginTextBox" Text="{Binding ApiLogin, Mode=TwoWay}" Watermark="admin user" />
|
||||||
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<TextBlock Text="Dati gara" FontWeight="Bold" Margin="0,4,0,0" />
|
<TextBlock Text="Dati gara" FontWeight="Bold" Margin="0,4,0,0" />
|
||||||
<Grid ColumnDefinitions="Auto,*,Auto,*" RowDefinitions="Auto,Auto,Auto,Auto" ColumnSpacing="6" RowSpacing="6">
|
<Grid ColumnDefinitions="Auto,*,Auto,*" RowDefinitions="Auto,Auto,Auto,Auto" ColumnSpacing="6">
|
||||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="Descrizione:" VerticalAlignment="Center" />
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="Descrizione:" VerticalAlignment="Center" />
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Name="ApiRaceDescriptionTextBox" Text="{Binding ApiRaceDescription, Mode=TwoWay}" Watermark="Nome gara" />
|
<TextBox Grid.Row="0" Grid.Column="1" Name="ApiRaceDescriptionTextBox" Text="{Binding ApiRaceDescription, Mode=TwoWay}" Watermark="Nome gara" />
|
||||||
|
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid ColumnDefinitions="Auto,*,Auto,*" RowDefinitions="Auto,Auto" ColumnSpacing="6" RowSpacing="6">
|
<Grid ColumnDefinitions="Auto,*,Auto,*" RowDefinitions="Auto,Auto" ColumnSpacing="6">
|
||||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="Evento Omaggio:" VerticalAlignment="Center" />
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="Evento Omaggio:" VerticalAlignment="Center" />
|
||||||
<ComboBox Grid.Row="0" Grid.Column="1" Name="ApiFreeEventComboBox" SelectedIndex="{Binding ApiFreeEventIndex, Mode=TwoWay}">
|
<ComboBox Grid.Row="0" Grid.Column="1" Name="ApiFreeEventComboBox" SelectedIndex="{Binding ApiFreeEventIndex, Mode=TwoWay}">
|
||||||
<ComboBoxItem Content="0 - No" />
|
<ComboBoxItem Content="0 - No" />
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||||
|
<AvaloniaUseCompiledBindingsByDefault>false</AvaloniaUseCompiledBindingsByDefault>
|
||||||
<!-- Default assembly name for regular builds -->
|
<!-- Default assembly name for regular builds -->
|
||||||
<AssemblyName>ImageCatalog</AssemblyName>
|
<AssemblyName>ImageCatalog</AssemblyName>
|
||||||
<LangVersion>default</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
|
|
@ -46,12 +47,16 @@
|
||||||
<DebugType>embedded</DebugType>
|
<DebugType>embedded</DebugType>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<AvaloniaXaml Remove="AvaloniaApp.axaml" />
|
||||||
<AvaloniaXaml Remove="Sorgenti\**" />
|
<AvaloniaXaml Remove="Sorgenti\**" />
|
||||||
<Compile Remove="Sorgenti\**" />
|
<Compile Remove="Sorgenti\**" />
|
||||||
<EmbeddedResource Remove="Sorgenti\**" />
|
<EmbeddedResource Remove="Sorgenti\**" />
|
||||||
<None Remove="Sorgenti\**" />
|
<None Remove="Sorgenti\**" />
|
||||||
<Page Remove="Sorgenti\**" />
|
<Page Remove="Sorgenti\**" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<AvaloniaResource Include="AvaloniaApp.axaml" />
|
||||||
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Update="Properties\Settings.settings">
|
<None Update="Properties\Settings.settings">
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
|
@ -71,10 +76,10 @@
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.8" />
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.8" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.8" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.8" />
|
||||||
<PackageReference Include="MinVer" Version="7.0.0" PrivateAssets="all" />
|
<PackageReference Include="MinVer" Version="7.0.0" PrivateAssets="all" />
|
||||||
<PackageReference Include="Avalonia" Version="12.0.3" />
|
<PackageReference Include="Avalonia" Version="11.3.13" />
|
||||||
<PackageReference Include="Avalonia.Desktop" Version="12.0.3" />
|
<PackageReference Include="Avalonia.Desktop" Version="11.3.13" />
|
||||||
<PackageReference Include="Avalonia.Themes.Fluent" Version="12.0.3" />
|
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.3.13" />
|
||||||
<PackageReference Include="Avalonia.Controls.DataGrid" Version="12.0.0" />
|
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.3.13" />
|
||||||
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.4.421302">
|
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.4.421302">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|
|
||||||
|
|
@ -314,6 +314,10 @@ namespace ImageCatalog_2.Models
|
||||||
[XmlElement("AI_FaceUpsample")]
|
[XmlElement("AI_FaceUpsample")]
|
||||||
public bool FaceUpsample { get; set; } = true;
|
public bool FaceUpsample { get; set; } = true;
|
||||||
|
|
||||||
|
[JsonPropertyName("UseFaceGpu")]
|
||||||
|
[XmlElement("AI_UsaGpuFace")]
|
||||||
|
public bool UseFaceGpu { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("FaceMatcherExecutablePath")]
|
[JsonPropertyName("FaceMatcherExecutablePath")]
|
||||||
[XmlElement("AI_FaceMatcherExecutablePath")]
|
[XmlElement("AI_FaceMatcherExecutablePath")]
|
||||||
public string FaceMatcherExecutablePath { get; set; } = string.Empty;
|
public string FaceMatcherExecutablePath { get; set; } = string.Empty;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue