diff --git a/.gitignore b/.gitignore index ef6e7f6..972b8d6 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,9 @@ venv *.c *.pyd cython_debug* -dist -AzaionSuiteInstaller.exe +dist-dlls +dist-azaion +Azaion*.exe +Azaion*.bin + azaion\.*\.big \ No newline at end of file diff --git a/Azaion.Common/DTO/Label.cs b/Azaion.Common/DTO/Label.cs index fab95f2..341ba1a 100644 --- a/Azaion.Common/DTO/Label.cs +++ b/Azaion.Common/DTO/Label.cs @@ -146,8 +146,11 @@ public class YoloLabel : Label return null; var strings = s.Replace(',', '.').Split(' '); - if (strings.Length != 5) + if (strings.Length < 5) throw new Exception("Wrong labels format!"); + if (strings.Length > 5) + strings = strings[..5]; + var res = new YoloLabel { diff --git a/Azaion.Dataset/DatasetExplorer.xaml.cs b/Azaion.Dataset/DatasetExplorer.xaml.cs index 110c272..8989eac 100644 --- a/Azaion.Dataset/DatasetExplorer.xaml.cs +++ b/Azaion.Dataset/DatasetExplorer.xaml.cs @@ -103,17 +103,18 @@ public partial class DatasetExplorer .Concat(_annotationConfig.DetectionClasses)); LvClasses.Init(AllDetectionClasses); - _dbFactory.Run(async db => + _dbFactory.Run(db => { - var allAnnotations = await db.Annotations + var allAnnotations = db.Annotations .LoadWith(x => x.Detections) .OrderBy(x => x.AnnotationStatus) .ThenByDescending(x => x.CreatedDate) - .ToListAsync(); + .ToList(); foreach (var annotation in allAnnotations) AddAnnotationToDict(annotation); - }).GetAwaiter().GetResult(); + return null!; + }); DataContext = this; } diff --git a/Azaion.Inference/build.cmd b/Azaion.Inference/build_inference.cmd similarity index 53% rename from Azaion.Inference/build.cmd rename to Azaion.Inference/build_inference.cmd index faf4e60..2d737f8 100644 --- a/Azaion.Inference/build.cmd +++ b/Azaion.Inference/build_inference.cmd @@ -1,18 +1,18 @@ echo Build Cython app - -cd %~dp0 +pushd %~dp0 echo remove dist folder: if exist dist rmdir dist /s /q if exist build rmdir build /s /q echo install python and dependencies -python -m venv venv +if not exist venv ( + python -m venv venv +) venv\Scripts\python -m pip install --upgrade pip venv\Scripts\pip install -r requirements.txt venv\Scripts\pip install --upgrade pyinstaller pyinstaller-hooks-contrib -REM Testing autobuild in Jenkins!!!Latest check venv\Scripts\python setup.py build_ext --inplace @@ -51,5 +51,13 @@ venv\Scripts\pyinstaller --name=azaion-inference ^ --hidden-import remote_command_handler ^ start.py -xcopy /E dist\azaion-inference ..\dist\ -copy config.production.yaml ..\dist\config.yaml +robocopy "dist\azaion-inference\_internal" "..\dist-azaion\_internal" "ai_config.cp312-win_amd64.pyd" "annotation.cp312-win_amd64.pyd" "api_client.cp312-win_amd64.pyd" /MOV +robocopy "dist\azaion-inference\_internal" "..\dist-azaion\_internal" "cdn_manager.cp312-win_amd64.pyd" "constants.cp312-win_amd64.pyd" "credentials.cp312-win_amd64.pyd" /MOV +robocopy "dist\azaion-inference\_internal" "..\dist-azaion\_internal" "file_data.cp312-win_amd64.pyd" "hardware_service.cp312-win_amd64.pyd" "inference.cp312-win_amd64.pyd" "inference_engine.cp312-win_amd64.pyd" /MOV +robocopy "dist\azaion-inference\_internal" "..\dist-azaion\_internal" "main.cp312-win_amd64.pyd" "onnx_engine.cp312-win_amd64.pyd" "remote_command.cp312-win_amd64.pyd" "remote_command_handler.cp312-win_amd64.pyd" /MOV +robocopy "dist\azaion-inference\_internal" "..\dist-azaion\_internal" "security.cp312-win_amd64.pyd" "tensorrt_engine.cp312-win_amd64.pyd" "user.cp312-win_amd64.pyd" /MOV + +robocopy "dist\azaion-inference\_internal" "..\dist-dlls\_internal" /E /MOVE +robocopy "dist\azaion-inference" "..\dist-azaion" "azaion-inference.exe" /E /MOVE + +popd \ No newline at end of file diff --git a/Azaion.Suite.sln b/Azaion.Suite.sln index 9962eb1..00324f8 100644 --- a/Azaion.Suite.sln +++ b/Azaion.Suite.sln @@ -24,14 +24,17 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azaion.CommonSecurity", "Az EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{CF141A48-8002-4006-81CF-6B85AE5B0B5F}" ProjectSection(SolutionItems) = preProject - build\publish.cmd = build\publish.cmd build\requirements.txt = build\requirements.txt - build\installer.iss = build\installer.iss build\cdn_manager.py = build\cdn_manager.py build\downloader_config.yaml = build\downloader_config.yaml build\build_cdn_manager.cmd = build\build_cdn_manager.cmd build\jenkins\pipeline = build\jenkins\pipeline build\build_dotnet.cmd = build\build_dotnet.cmd + build\init.cmd = build\init.cmd + build\download_models.cmd = build\download_models.cmd + build\publish.cmd = build\publish.cmd + build\installer.full.iss = build\installer.full.iss + build\installer.iterative.iss = build\installer.iterative.iss EndProjectSection EndProject Global diff --git a/build/build_dotnet.cmd b/build/build_dotnet.cmd index 20c912b..efc800f 100644 --- a/build/build_dotnet.cmd +++ b/build/build_dotnet.cmd @@ -1,6 +1,6 @@ +echo Build .net app pushd %~dp0.. -echo Build .net app dotnet build -c Release cd Azaion.Suite @@ -10,13 +10,18 @@ call upload-file %cd%\config.system.json dotnet publish -r win-x64 -p:SatelliteResourceLanguages="en" -p:DebugSymbols=false -p:ForPublish=true --self-contained true cd .. -rmdir dist /s /q + xcopy Azaion.Suite\bin\Release\net8.0-windows\win-x64\publish dist\ /s /e /q del dist\config.json move dist\config.production.json dist\config.json -mkdir dist\dummy -move dist\Azaion.Annotator.dll dist\dummy\ -move dist\Azaion.Dataset.dll dist\dummy\ +mkdir dist-azaion\dummy +robocopy "dist" "dist-azaion\dummy" "Azaion.Annotator.dll" "Azaion.Dataset.dll" /MOV +robocopy "dist" "dist-azaion" "Azaion.Common.dll" "Azaion.CommonSecurity.dll" "Azaion.Suite.deps.json" "Azaion.Suite.dll" "Azaion.Suite.exe" "Azaion.Suite.runtimeconfig.json" "config.json" "logo.png" /MOV +if exist dist\libvlc\win-x86 rmdir dist\libvlc\win-x86 /s /q +robocopy "dist" "dist-dlls" /E /MOVE + +echo Copy ico +copy logo.ico dist-azaion\ popd \ No newline at end of file diff --git a/build/download_models.cmd b/build/download_models.cmd new file mode 100644 index 0000000..f43a5dc --- /dev/null +++ b/build/download_models.cmd @@ -0,0 +1,11 @@ +echo Download onnx model +pushd %~dp0 + +if not exist cdn_manager.exe ( + echo Install cdn_manager + call build_cdn_manager +) +call cdn_manager.exe download models +move models ..\dist-dlls\ + +popd \ No newline at end of file diff --git a/build/init.cmd b/build/init.cmd new file mode 100644 index 0000000..fafef12 --- /dev/null +++ b/build/init.cmd @@ -0,0 +1,12 @@ +echo Make dirs, copy init dlls +pushd %~dp0.. + +if exist dist-dlls rmdir dist-dlls /s /q +mkdir dist-dlls +if exist dist-azaion rmdir dist-azaion /s /q +mkdir dist-azaion + +echo Copying shared libs +robocopy "C:\\share" "dist-dlls" "*" + +popd \ No newline at end of file diff --git a/build/installer.full.iss b/build/installer.full.iss new file mode 100644 index 0000000..2e7ba94 --- /dev/null +++ b/build/installer.full.iss @@ -0,0 +1,31 @@ +[Setup] +AppId={{CCFEC8E2-0FCC-4B03-8EEA-00AF20D265E5}} +AppName=Azaion Suite +AppVersion=1.4.5 +AppPublisher=Azaion Ukraine +DefaultDirName={localappdata}\Azaion\Azaion Suite +DefaultGroupName=Azaion Suite +OutputDir=..\ +OutputBaseFilename=AzaionSuite.Full.1.4.5 +SetupIconFile=..\dist-azaion\logo.ico +UninstallDisplayName=Azaion Suite +UninstallDisplayIcon={app}\Azaion.Suite.exe +Compression=lzma2/fast +SolidCompression=yes +DiskSpanning=yes + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked + +[Files] +Source: "..\dist-dlls\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; +Source: "..\dist-azaion\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; + +[Icons] +Name: "{group}\Azaion Suite"; Filename: "{app}\Azaion.Suite.exe" +Name: "{commondesktop}\Azaion Suite"; Filename: "{app}\Azaion.Suite.exe"; Tasks: desktopicon + +[UninstallRun] \ No newline at end of file diff --git a/build/installer.iss b/build/installer.iterative.iss similarity index 80% rename from build/installer.iss rename to build/installer.iterative.iss index 41de936..316036e 100644 --- a/build/installer.iss +++ b/build/installer.iterative.iss @@ -6,8 +6,8 @@ AppPublisher=Azaion Ukraine DefaultDirName={localappdata}\Azaion\Azaion Suite DefaultGroupName=Azaion Suite OutputDir=..\ -OutputBaseFilename=AzaionSuite1.4.5 -SetupIconFile=..\dist\logo.ico +OutputBaseFilename=AzaionSuite.Iterative.1.4.5 +SetupIconFile=..\dist-azaion\logo.ico UninstallDisplayName=Azaion Suite UninstallDisplayIcon={app}\Azaion.Suite.exe Compression=lzma2/fast @@ -21,7 +21,7 @@ Name: "english"; MessagesFile: "compiler:Default.isl" Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] -Source: "..\dist\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; +Source: "..\dist-azaion\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; [Icons] Name: "{group}\Azaion Suite"; Filename: "{app}\Azaion.Suite.exe" diff --git a/build/publish.cmd b/build/publish.cmd index 84d4751..48f4fbf 100644 --- a/build/publish.cmd +++ b/build/publish.cmd @@ -1,46 +1,18 @@ @echo off -pushd %~dp0 +pushd %~dp0.. -call build_dotnet +call build\init -call ..\Azaion.Inference\build.cmd +call build\build_dotnet -echo Download onnx model -cd %~dp0 -if not exist cdn_manager.exe ( - echo Install cdn_manager - call build_cdn_manager -) +call Azaion.Inference\build_inference -call cdn_manager.exe download models -move models ..\dist\ -cd.. +call ..\gps-denied\image-matcher\build_gps -echo Copy ico -copy logo.ico dist\ - -echo Copying shared libs -xcopy /E C:\\share\* dist\ - -set DESTINATION=dist\gps-denied\ - -if exist %DESTINATION% rmdir /S /Q %DESTINATION% -mkdir %DESTINATION% - -echo copy gps denied files -copy ..\gps-denied\image-matcher\release\image-matcher.exe %DESTINATION% - -copy ..\gps-denied\.libs\libzmq\build\dist\bin\libzmq-v143-mt-4_3_6.dll %DESTINATION% -copy ..\gps-denied\.libs\onnxruntime\lib\onnxruntime.dll %DESTINATION% -copy ..\gps-denied\.libs\onnxruntime\lib\onnxruntime_providers_cuda.dll %DESTINATION% -copy ..\gps-denied\.libs\onnxruntime\lib\onnxruntime_providers_shared.dll %DESTINATION% -copy ..\gps-denied\.libs\opencv\build\x64\vc16\bin\opencv_world4110.dll %DESTINATION% - - -mkdir %DESTINATION%\models -copy C:\\share\gps-models\* %DESTINATION%\models +call build\download_models echo building installer... -iscc build\installer.iss +iscc build\installer.full.iss +iscc build\installer.iterative.iss popd \ No newline at end of file