diff --git a/.gitignore b/.gitignore
index 59f72a3b..ae91a170 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,24 @@
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+/demos/Python/detected
+
+/install/downloads/models
+/install/downloads/assets
+/install/downloads/python37
+/install/cached_downloads
+/install/downloads/python_packages_cpu
+/install/downloads/python_packages_gpu
+
+/src/CodeProject.SenseAI.config
+/src/set_environment.bat
+/src/Start_SenseAI_Win.bat
+
+/src/AnalysisLayer/DeepStack/venv
+/src/AnalysisLayer/DeepStack/datastore
+/src/AnalysisLayer/DeepStack/tempstore
+/src/AnalysisLayer/DeepStack/assets
+
# User-specific files
*.rsuser
*.suo
@@ -358,17 +376,4 @@ MigrationBackup/
.ionide/
# Fody - auto-generated XML schema
-FodyWeavers.xsd
-/install/downloads/models
-/install/downloads/venv/venv
-/src/AnalysisLayer/DeepStack/env
-/demos/Python/detected
-/src/AnalysisLayer/DeepStack/intelligencelayer/env
-/src/AnalysisLayer/DeepStack/intelligencelayer/env3.7
-/install/downloads/python37/Python37
-/install/downloads/python_packages_cpu/windows_packages_cpu
-/src/AnalysisLayer/DeepStack/intelligencelayer/venv
-/install/downloads/assets
-/install/downloads_saved/venv
-/src/AnalysisLayer/DeepStack/intelligencelayer/data
-/src/AnalysisLayer/DeepStack/venv
+FodyWeavers.xsd
\ No newline at end of file
diff --git a/CodeProject.SenseAI.sln b/CodeProject.SenseAI.sln
index 594a3bdf..cb4871a8 100644
--- a/CodeProject.SenseAI.sln
+++ b/CodeProject.SenseAI.sln
@@ -16,20 +16,20 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{3BF27572-9D3A-497C-8375-29110EBBD3D1}"
ProjectSection(SolutionItems) = preProject
README.md = README.md
+ docs\Welcome.html = docs\Welcome.html
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AnalysisLayer", "AnalysisLayer", "{156BFEDA-D477-43B2-92DA-FCC9BAF1F893}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "install", "install", "{D885EE64-C1BD-44D6-84D8-1E46806298D9}"
ProjectSection(SolutionItems) = preProject
- install\build_download.bat = install\build_download.bat
- install\windows_install.bat = install\windows_install.bat
- install\windows_start.bat = install\windows_start.bat
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{027671E2-C9F9-425A-98E5-4E7801686642}"
- ProjectSection(SolutionItems) = preProject
- install\scripts\download.ps1 = install\scripts\download.ps1
+ install\create_installer_win.bat = install\create_installer_win.bat
+ install\load_environment.bat = install\load_environment.bat
+ install\save_environment.bat = install\save_environment.bat
+ install\set_environment.sh = install\set_environment.sh
+ install\setup_dev_env_win.bat = install\setup_dev_env_win.bat
+ install\Setup_SenseAI_Win.bat = install\Setup_SenseAI_Win.bat
+ install\Start_SenseAI_Win.bat = install\Start_SenseAI_Win.bat
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "downloads", "downloads", "{7250A438-7B43-4FED-BB2B-9FB1FB2F69AF}"
@@ -45,17 +45,49 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".NET", ".NET", "{1912618E-7
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestData", "TestData", "{B10B59B5-9F63-41C2-BFBB-6C7311DC4E99}"
ProjectSection(SolutionItems) = preProject
+ demos\TestData\adele.jpg = demos\TestData\adele.jpg
demos\TestData\adele1.jpg = demos\TestData\adele1.jpg
demos\TestData\adele2.jpg = demos\TestData\adele2.jpg
+ demos\TestData\blank.png = demos\TestData\blank.png
demos\TestData\bradley.jpg = demos\TestData\bradley.jpg
+ demos\TestData\cruise.jpg = demos\TestData\cruise.jpg
demos\TestData\detection.jpg = demos\TestData\detection.jpg
+ demos\TestData\elba.jpg = demos\TestData\elba.jpg
+ demos\TestData\face.jpg = demos\TestData\face.jpg
demos\TestData\face_detection.jpg = demos\TestData\face_detection.jpg
+ demos\TestData\family.jpg = demos\TestData\family.jpg
+ demos\TestData\image0.jpg = demos\TestData\image0.jpg
+ demos\TestData\image0_person.jpg = demos\TestData\image0_person.jpg
+ demos\TestData\image0_truck.jpg = demos\TestData\image0_truck.jpg
+ demos\TestData\image1.jpg = demos\TestData\image1.jpg
+ demos\TestData\image1_car.jpg = demos\TestData\image1_car.jpg
+ demos\TestData\image1_truck.jpg = demos\TestData\image1_truck.jpg
+ demos\TestData\image2.jpg = demos\TestData\image2.jpg
+ demos\TestData\image2_boat.jpg = demos\TestData\image2_boat.jpg
+ demos\TestData\image2_person.jpg = demos\TestData\image2_person.jpg
+ demos\TestData\image3.jpg = demos\TestData\image3.jpg
+ demos\TestData\image3_traffic light.jpg = demos\TestData\image3_traffic light.jpg
+ demos\TestData\image4_bus.jpg = demos\TestData\image4_bus.jpg
+ demos\TestData\image5_person.jpg = demos\TestData\image5_person.jpg
+ demos\TestData\image6_person.jpg = demos\TestData\image6_person.jpg
+ demos\TestData\image7_bus.jpg = demos\TestData\image7_bus.jpg
demos\TestData\mask.pt = demos\TestData\mask.pt
+ demos\TestData\Matterhorn.jpg = demos\TestData\Matterhorn.jpg
+ demos\TestData\night.jpg = demos\TestData\night.jpg
+ demos\TestData\perri.jpg = demos\TestData\perri.jpg
+ demos\TestData\road.jpg = demos\TestData\road.jpg
demos\TestData\RobertDowneyJr1.jpg = demos\TestData\RobertDowneyJr1.jpg
demos\TestData\RobertDowneyJr2.jpg = demos\TestData\RobertDowneyJr2.jpg
demos\TestData\RobertDowneyJr3.jpg = demos\TestData\RobertDowneyJr3.jpg
demos\TestData\RobertDowneyJr4.jpg = demos\TestData\RobertDowneyJr4.jpg
+ demos\TestData\RocketRacoon.PNG = demos\TestData\RocketRacoon.PNG
demos\TestData\scene.jpg = demos\TestData\scene.jpg
+ demos\TestData\test-image.jpg = demos\TestData\test-image.jpg
+ demos\TestData\test-image2.jpg = demos\TestData\test-image2.jpg
+ demos\TestData\test-image3.jpg = demos\TestData\test-image3.jpg
+ demos\TestData\test-image3.png = demos\TestData\test-image3.png
+ demos\TestData\test-image5.jpg = demos\TestData\test-image5.jpg
+ demos\TestData\test-image8.jpg = demos\TestData\test-image8.jpg
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CodeProject.SenseAI.Playground", "demos\dotNet\CodeProject.SenseAI.Playground\CodeProject.SenseAI.Playground.csproj", "{C33D90E7-7570-46FB-9EB9-ED6B40A93A9B}"
@@ -70,13 +102,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Backend", "src\API\Server\B
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CodeProject.SenseAI.API.Server.Backend.Tests", "tests\QueueServiceTests\CodeProject.SenseAI.API.Server.Backend.Tests.csproj", "{F9430C77-589D-4C56-8458-2DF7E344C0FC}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CodeProject.SenseAI.Analysis.Yolo", "src\AnalysisLayer\CodeProject.SenseAI.Backend.Yolo\CodeProject.SenseAI.Analysis.Yolo.csproj", "{ED911007-D9E3-4F99-9611-FBCA889419C2}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Images", "Images", "{8C92DCAE-EDE7-4DEC-A5CB-BB2388905064}"
ProjectSection(SolutionItems) = preProject
docs\images\Choose-launch.png = docs\images\Choose-launch.png
+ docs\images\Mulitple-Project-Toolbar.png = docs\images\Mulitple-Project-Toolbar.png
+ docs\images\Set-Startup_Projects.png = docs\images\Set-Startup_Projects.png
EndProjectSection
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CodeProject.SenseAI.Analysis.Yolo", "src\AnalysisLayer\CodeProject.AI.Backend.Yolo\CodeProject.SenseAI.Analysis.Yolo.csproj", "{15D6CB19-A4FF-43EC-8483-A4F3AF6EBEBA}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -107,10 +141,10 @@ Global
{F9430C77-589D-4C56-8458-2DF7E344C0FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F9430C77-589D-4C56-8458-2DF7E344C0FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F9430C77-589D-4C56-8458-2DF7E344C0FC}.Release|Any CPU.Build.0 = Release|Any CPU
- {ED911007-D9E3-4F99-9611-FBCA889419C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {ED911007-D9E3-4F99-9611-FBCA889419C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {ED911007-D9E3-4F99-9611-FBCA889419C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {ED911007-D9E3-4F99-9611-FBCA889419C2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {15D6CB19-A4FF-43EC-8483-A4F3AF6EBEBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {15D6CB19-A4FF-43EC-8483-A4F3AF6EBEBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {15D6CB19-A4FF-43EC-8483-A4F3AF6EBEBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {15D6CB19-A4FF-43EC-8483-A4F3AF6EBEBA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -119,7 +153,6 @@ Global
{25750BF1-1502-4F65-8D69-CEA8C87D6446} = {7F18EB64-C857-49C4-9380-70D3CCE6242B}
{2379A486-0D28-4CAD-BB13-E77FBA538E0D} = {A8B76501-496A-4011-9C37-8308A1EBDFA7}
{156BFEDA-D477-43B2-92DA-FCC9BAF1F893} = {A8B76501-496A-4011-9C37-8308A1EBDFA7}
- {027671E2-C9F9-425A-98E5-4E7801686642} = {D885EE64-C1BD-44D6-84D8-1E46806298D9}
{7250A438-7B43-4FED-BB2B-9FB1FB2F69AF} = {D885EE64-C1BD-44D6-84D8-1E46806298D9}
{E5D27495-EE4F-4AAF-8749-A6BA848111E2} = {156BFEDA-D477-43B2-92DA-FCC9BAF1F893}
{3A860CDD-94B9-4002-BA08-87E8822DDE50} = {7F18EB64-C857-49C4-9380-70D3CCE6242B}
@@ -131,8 +164,8 @@ Global
{A0CF3BEE-8EE3-4B23-BEB8-9D258C0510A3} = {93A23681-E9E8-4381-9EB5-8D178A0EE785}
{C93C22D7-4EB2-4EC0-A7F0-FBCFB9F6F72D} = {93A23681-E9E8-4381-9EB5-8D178A0EE785}
{F9430C77-589D-4C56-8458-2DF7E344C0FC} = {D982BD8C-2257-413B-8513-8043AB3035F3}
- {ED911007-D9E3-4F99-9611-FBCA889419C2} = {156BFEDA-D477-43B2-92DA-FCC9BAF1F893}
{8C92DCAE-EDE7-4DEC-A5CB-BB2388905064} = {3BF27572-9D3A-497C-8375-29110EBBD3D1}
+ {15D6CB19-A4FF-43EC-8483-A4F3AF6EBEBA} = {156BFEDA-D477-43B2-92DA-FCC9BAF1F893}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {83740BD9-AEEF-49C7-A722-D7703D3A38CB}
diff --git a/README.md b/README.md
index 11ae4c0f..cf860e68 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+[](https://open.vscode.dev/codeproject/CodeProject.SenseAI) [](https://www.python.org/) [](https://github.com/codeproject/CodeProject.SenseAI/blob/main/LICENSE) [](https://github.com/ellerbrock/open-source-badges/)
+
# CodeProject SenseAI Server
Standalone, self-hosted, fast, free and Open Source Artificial Intelligence microserver for any platform, any language.
@@ -56,9 +58,9 @@ This is an Alpha release and so support is constrained solely to Windows 10+ usi
To **install CodeProject.SenseAI** as a standalone service ready for integration with applications such as HomeAssist or BlueIris, download the [installation package](https://codeproject-ai.s3.ca-central-1.amazonaws.com/sense/installer/CodeProject.SenseAI.Package.zip).
-Unzip the download and double click the windows_start.bat script. This will start the API server and the backend analysis services. Rerun that script whenever you want to launch the service.
+Unzip the download and double click the Start_SenseAI_Win.bat script. This will start the API server and the backend analysis services. Rerun that script whenever you want to launch the service.
-To **explore CodeProject.SenseAI** open the /demos/dotNET/CodeProject.SenseAI.Playground folder and double click on the CodeProject.SenseAI.Playground.exe application. The server will, of course, need to be running for this test application to function. Sample images can be found in the TestData folder under the demos folder
+To **explore CodeProject.SenseAI** open the /demos/Javascript/ folder and double click on the Vision.html page. The server will, of course, need to be running for this test application to function. Sample images can be found in the TestData folder under the demos folder
### Setting up the development environment
@@ -78,11 +80,13 @@ You'll need the following extensions
To build and run:
1. Clone the [CodeProject.SenseAI repository](https://github.com/codeproject/CodeProject.SenseAI.git) from GitHub
-2. Open the main application folder in VSCode
-3. Click the "Run and Debug" button on the left hand tab bar (the arrow)
-4. From the dropdown at the top of the window, select CodeProject.SenseAI Playground
+2. run /install/setup_dev_env_win.bat. This will download required assets, setup the Python
+ virtual environment and set environment variables.
+3. Open the main application folder in VSCode
+4. Click the "Run and Debug" button on the left hand tab bar (the arrow)
+5. From the dropdown at the top of the window, select CodeProject.SenseAI Playground

-5. CLick the green arrow next to the dropdown
+6. CLick the green arrow next to the dropdown
The Demo application (CodeProject.SenseAI Playground) should launch after the code has built and the Python backed fully installed.
@@ -91,10 +95,20 @@ The Demo application (CodeProject.SenseAI Playground) should launch after the co
1. Clone the [CodeProject.SenseAI repository](https://github.com/codeproject/CodeProject.SenseAI.git) from GitHub
2. Ensure you have the Python workflow enabled in Visual Studio. While not critical, it does help with debugging.
-3. Open the solution in Visual Studio and build the entire solution
-4. In Solution Explorer, open demos / .NET and right-click on CodeProject.SenseAI.Playground and choose Debug -> Start new instance.
-5. In Solution Explorer, open src / API and right-click on FrontEnd and choose Debug -> Start new instance. **Matthew: what's the better way of doing this?**
-6. In Solution Explorer, open src / AnalysisLayer. Right click on DeepStack and choose Open Folder in File Explorer. Double click on the start.bat script
+3. run /install/setup_dev_env_win.bat. This will download required assets, setup the Python virtual environment and set environment variables. **This will take several minutes, so please be patient.**
+4. Open the solution in Visual Studio and build the entire solution
+5. To run the Server and the demo application in DEBUG you can either
+ 1. Start both the projects in debug mode by
+ 1. In Solution Explorer, open demos / .NET and right-click on CodeProject.SenseAI.Playground and choose Debug -> Start new instance.
+ 2. In Solution Explorer, open src / API / Server and right-click on FrontEnd and choose Debug -> Start new instance.
+ 2. Configure Visual Studio to start multiple projects by
+ 1. In Solution Explorer, right-click on the solution and select **Set Startup Projects...** and configure Multiple startup projects as shown below.
+ 
+ 3. Now when you start with or without debugging, both the Server and demo projects with start. Also, this will be shown on the toolbar as shown below.
+ 
+
+6. In Solution Explorer, open src / AnalysisLayer. Right click on DeepStack and choose Open Folder in File Explorer. Double click on the start.bat script. This script will ensure that the Python virtual environment is enabled and environment variables set.
+
At this point the Playground application should be indicting it has a connection to the API server, and the servwe should be dispatching requests to the backend Analysis layer.
diff --git a/demos/Javascript/Vision.html b/demos/Javascript/Vision.html
index 8e2eafe8..97f1fb80 100644
--- a/demos/Javascript/Vision.html
+++ b/demos/Javascript/Vision.html
@@ -4,42 +4,130 @@