- Python is holding any upcoming requests while initializing the dataset.
Ideally it runs in parallel
- Python WebSocket Server
- Python async requests
- One new connection for each user between Node - Python
- Performance of group counter is extremely slow
- The calculation of how many images are in one group is inefficient
- All Nodes Iterations (Frontend) performance improvements
- updateGroupCount fix
- Fix scissor mode to run not in preview mode
- Adjust max image size based on max displayed counter instead of total images
- Add a popup menu when clicking on the max count to change the max count dynamically
- Drawing of heatmap optimized to only draw the displayed nodes
- Add a dynamic initial scale based on showing 60% of the images on the initial view
- Create cluster optimizations (creating cluster only for displayed nodes)
- Displayed node optimization (no recalculations if not necessary)
- Added preview mode with delayed switch to normal mode. Triggers on draw-intensive actions
- Added dynamic max image size based on images count in the dataset for better performance
- Fully implemented switch between development and production mode for easier deployment
- Added useful instructions in the README file
- Improved performance by resizing images (normal + preview mode)
- Improved getNodes performance
- Improved Python server run to no longer require an absolute path to init_json
- Improved the image list generator for easier use
- Added useful instructions in the README file
- Fully implemented switch between development and production mode for easier deployment
- Improved nodemon performance with nodemon.json configuration for file watch definitions
- Improved Python server to use less global variables
- Adjusted image sizes for the new resizing in the frontend
-
MySQL database is running with the following tables available
-
snapshots
- user_id
- snapshot_id
- snapshot_name
- created_at
- dataset_id
- modified_model
- count
- groups_count
- display_count
-
user_accounts
- user_id
- user_name
- password
-
-
Python 3.8+ Interpreter (64-bit) is installed with all requirements
- Run
pip install -r requirements.txt - Optional: Create a separate virtual environment (e.g. venv, conda)
- Run
-
NodeJS 16+ is installed and available
- Run
npm installto install all required packages
- Run
-
Linux OS
-
NVIDIA GPU (optional)
-
Images for at least one dataset
- sudo service mysql start
- Starts the MySQL database (after installation)
- sudo mysql -u root -p
- Enters the MySQL terminal as root user on initial setup
- select user from mysql.user
- Shows all the available MySQL users
- create user xyz@localhost identified by 'your password'
- Creates a user accessible from specified host with a defined password
- show databases
- Shows all the available databases which the logged in MySQl user can see
- create database [database name]
- Creates the database with specified name
- use [database name]
- Switches to use the specified database
- grant all privileges on [database name].* to xyz@localhost
- Provides all privileges to the tables of the database for the specified user
- Run
python /images/make_image_list.py- The dataset folder name can be specified inside the file
- The dataset images have to be located under
images/datasetName(.../datasetName/image1.jpg, .../datasetName/image2.png, ...)
- Supported file endings are
.jpgand.png
- The files will be created under
/images/dataset_json
Note that the Image List has to be generated beforehand!
- Run
npm run debug_bin- Executes the script
debug_binspecified inpackage.json - Starts the binBuilder with additional debug information
- Executes the script
- The files will be created under
/images/bin- File name pattern:
datasetName#imageIndex.bin(e.g.:test#1.bin, test#2.bin, ...)
- File name pattern:
Note that the Image List has to be generated beforehand!
- Run
python /python_code/generate_dataset_json.pywith following parameters-n datasetName-i datasetName-a- Example:
python generate_dataset_json.py -n xxl_data -i xxl_data -a
- The files will be created under
/images/init_json
- Ensure that the Database Credentials are correctly set in
server.py - Ensure that the hostname is correctly set in
server.py - Run
python server.pyto run the development mode - Run
python server.py -prodorpython server.py --productionto run the production mode
- Run
npm run devto run the development mode - Run
npm run prodto run the production mode