{"id":15672696,"url":"https://github.com/rishit-dagli/smart-queuing-system-on-edge","last_synced_at":"2025-07-14T19:32:29.377Z","repository":{"id":105751408,"uuid":"272758725","full_name":"Rishit-dagli/Smart-Queuing-System-On-Edge","owner":"Rishit-dagli","description":"Official repository for the paper \"Deploying a smart queuing system on edge with Intel OpenVINO toolkit\" [Springer-2021]","archived":false,"fork":false,"pushed_at":"2020-09-22T13:09:30.000Z","size":87212,"stargazers_count":15,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-06T21:49:20.208Z","etag":null,"topics":["ai","edge-ai","edge-computing","intel-devcloud","openvino-toolkit","python-3","smart-queuing-system"],"latest_commit_sha":null,"homepage":"https://link.springer.com/article/10.1007/s00500-021-05891-2","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rishit-dagli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-16T16:29:02.000Z","updated_at":"2024-03-29T07:22:22.000Z","dependencies_parsed_at":"2023-06-13T14:31:06.902Z","dependency_job_id":null,"html_url":"https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Rishit-dagli/Smart-Queuing-System-On-Edge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishit-dagli%2FSmart-Queuing-System-On-Edge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishit-dagli%2FSmart-Queuing-System-On-Edge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishit-dagli%2FSmart-Queuing-System-On-Edge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishit-dagli%2FSmart-Queuing-System-On-Edge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rishit-dagli","download_url":"https://codeload.github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishit-dagli%2FSmart-Queuing-System-On-Edge/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265336316,"owners_count":23749176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","edge-ai","edge-computing","intel-devcloud","openvino-toolkit","python-3","smart-queuing-system"],"created_at":"2024-10-03T15:30:24.402Z","updated_at":"2025-07-14T19:32:29.303Z","avatar_url":"https://github.com/Rishit-dagli.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Smart-Queuing-System-On-Edge\n\n[![](https://img.shields.io/badge/Rishit-Dagli-brightgreen.svg?colorB=00ff00)](https://www.rishit.tech)\n[![Python Version](https://img.shields.io/badge/Python-3.5|3.6-blue.svg)](https://shields.io/)\n[![GitHub license](https://img.shields.io/github/license/Rishit-dagli/Smart-Queuing-System-On-Edge)](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/blob/master/LICENSE)\n![Python Syntax](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/workflows/Python%20Syntax/badge.svg)\n![GitHub followers](https://img.shields.io/github/followers/Rishit-dagli?style=social)\n![Twitter Follow](https://img.shields.io/twitter/follow/rishit_dagli?style=social)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Naereen/StrapDown.js/graphs/commit-activity)\n\n[![IMAGE ALT TEXT HERE](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/blob/master/images/reatil_cover.JPG)](https://www.youtube.com/watch?v=W-DWBYhrwj0)\n\nClick the image above to see a video of the demo or use the link [here](https://www.youtube.com/watch?v=W-DWBYhrwj0)\n\n## Table of Contents\n\n- [What it Does](#what-it-does)\n- [How it Works](#how-it-works)\n- [Requirements](#requirements)\n  * [Hardware](#hardware)\n  * [Software](#software)\n- [Intel DevCloud](#intel-devcloud)\n  * [Benefits of The Intel® DevCloud for the Edge](#benefits-of-the-intel-devcloud-for-the-edge)\n- [Setup](#setup)\n  * [Install Intel® Distribution of OpenVINO™ toolkit](#install-intel-distribution-of-openvino-toolkit)\n  * [Get started with DevCloud](#get-started-with-devcloud)\n- [Run the application](#run-the-application)\n  * [Step 1 - Person Detection](#step-1---person-detection)\n  * [Step 2 - Job Submission](#step-2---job-submission)\n  * [Step 3 - Submitting the job](#step-3---submitting-the-job)\n    + [Submit to an Edge Compute Node with an Intel CPU](#submit-to-an-edge-compute-node-with-an-intel-cpu)\n    + [Submit to an Edge Compute Node with CPU and IGPU](#submit-to-an-edge-compute-node-with-cpu-and-igpu)\n    + [Submit to an Edge Compute Node with a Neural Compute Stick 2](#submit-to-an-edge-compute-node-with-a-neural-compute-stick-2)\n    + [Submit to an Edge Compute Node with IEI Mustang-F100-A10](#submit-to-an-edge-compute-node-with-iei-mustang-f100-a10)\n  * [Step 4 - Compare performance](#step-4---compare-performance)\n\n## What it Does\n\nThe Smart Queuing System deomnstrates how to create a video AI solution on the edge using Intel® hardware and software tools. The app\ndetects people in a specified area and accordingly detects the number of people in a queue. It would then also notify whether a person\nwould need to change the queue to reduce congestation. I strongly recommend you to read the \n[WRITEUP](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/blob/master/WRITEUP_Choosing_the_right_hardware.pdf)\n\n## How it Works\n\nThe [people counter script](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/blob/master/person_detect.py) \nwill use the Inference Engine included in the Intel® Distribution of OpenVINO™ Toolkit. To test out the script and determine which \nhardware would be best for a particular use case we use a \n[job submission script](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/blob/master/queue_job.sh) \nIntel DevCloud to test the scripts on different hardware. To propose a hardware we take a note of the model loading time, inference time \nand FPS to do so.\n\n## Requirements\n\n### Hardware\n\n* This project makes the use of Intel DevCloud to test on CPU, GPU, FPGA and VPU so no specific hardware is required..\n\n### Software\n\n* Intel® Distribution of OpenVINO™ toolkit 2019 R3 release.\n* Python \u003e 3.5, 3.6\n\n## Intel DevCloud\n\nThe Intel® DevCloud for the Edge is a cloud service designed to help developers prototype and experiment with computer vision \napplications using the Intel® Distribution of OpenVINO™ Toolkit. Once registered, developers can access a series of Python and C++ based \nJupyter Notebook tutorials and sample solutions and execute them directly from a web browser. Then, developers can create their own \nJupyter Notebooks and quickly try them out on a variety of hosted Intel® hardware solutions specifically designed for deep learning \ninferencing.\n\nThe Intel® DevCloud for the Edge provides you with access to everything needed to begin working with sample applications, prototypes and \ntutorials. This includes pre-trained models, source code, test input images, video and data streams. Additionally, users can apply any \nof the pre-trained deep learning models available through the Intel® Distribution of OpenVino™ toolkit, or upload their own customized \npre-trained deep-learning models to develop and test their own computer vision applications.\n\n### Benefits of The Intel® DevCloud for the Edge\n\n* Reduced time to access comprehensive Intel® development solutions, hardware and software, for deep learning and computer vision\napplication development with just an internet connection.\n* Access to fully configured physical edge machines pre-installed with the Intel® Distribution of OpenVINO™ Toolkit (CPU, iGPU, VPU and\nFPGA) hosted in the cloud powered by Intel® Xeon® Scalable processors.\n* Ability to evaluate and choose the right Intel® hardware acceleration option for your application.\n* A vast library of pre-trained models from the Intel® Distribution of OpenVINO™ Toolkit and ability to upload your own custom pre-\ntrained models to evaluate the best framework, topology, and hardware acceleration solution for your unique application.\n\n## Setup\n\n### Install Intel® Distribution of OpenVINO™ toolkit\n\n- [Linux/Ubuntu](./linux-setup.md)\n- [Mac](./mac-setup.md)\n- [Windows](./windows-setup.md)\n\n### Get started with DevCloud\n\nMuch of the Intel® DevCloud for the Edge documentation can be accessed without registering. You will need to register for an Intel®\nDevCloud for the Edge account to explore, run the examples, upload your own code and test the hardware.\n\n* On the Home page, click Sign in on the top right corner.\n* Click Register and follow the prompts to enter the information requested.\n* Within 48 hours you will receive an invitation email to your Intel® DevCloud for the Edge account.\n* For increased security, the Intel® DevCloud for the Edge is protected by 2-factor authentication. Please check your email for the 6-\ndigit security code. Copy/paste the full URL from that email containing the uuid argument into a browser window. All current web \nbrowsers are supported.\n* Follow the prompts to complete your Intel DevCloud account registration.\n* Once you have completed account registration, you can return any time to the Home page and click Sign in at the top right corner to \naccess your account.\n* Each time you sign in, the top right corner displays the total number of days you have access to the Intel® DevCloud for the Edge \nresource. You can request an extension from within the portal.\n\n## Run the application\n\nThe figure below illustrates the user workflow for code development, job submission and viewing results.\n\n![](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/blob/master/images/How-DevCloud-works.svg)\n\n\u003cdetails open\u003e\n\u003csummary\u003eCredits\u003c/summary\u003e\n\u003cbr\u003e\n\u003ca href=\"https://devcloud.intel.com/edge/\"\u003eIntel DevCloud website\u003c/a\u003e\n\u003c/details\u003e\n\n### Step 1 - Person Detection\n\nThe [person_detect.py](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/blob/master/person_detect.py) file does the person\ncounting part for you. Try to experiment around with the threshold value and see how the predictions turn up.\n\n### Step 2 - Job Submission\n\nThe [queue_job.sh](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/blob/master/queue_job.sh) is the utility which  \nhelps in the submission of the job to multiple devices on the DevCloud.\n\n### Step 3 - Submitting the job\n\nThe project majorly includes 3 notebooks for different use cases-\n\n* [Retail Scenario](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/blob/master/Retail_Scenario.ipynb)\n* [Manufacturing Scenario](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/blob/master/Manufacturing_Scenario.ipynb)\n* [Transportation Scenario](https://github.com/Rishit-dagli/Smart-Queuing-System-On-Edge/blob/master/Transportation_Scenario.ipynb)\n\nEach of the above notebooks follow this process, be sure to change the original video location according to your system in each case.\n\n#### Submit to an Edge Compute Node with an Intel CPU\n\nWe write a script to submit a job to an \n[IEI Tank* 870-Q170](https://software.intel.com/en-us/iot/hardware/iei-tank-dev-kit-core) edge node with an [Intel Core™ i5-6500TE processor](https://ark.intel.com/products/88186/Intel-Core-i5-6500TE-Processor-6M-Cache-up-to-3-30-GHz-). \nThe inference workload should run on the CPU.\n\n```sh\ncpu_job_id = !qsub queue_job.sh -d . -l nodes=1:tank-870:i5-6500te -F \"[model_path] CPU [original_video_path] /data/queue_param/manufacturing.npy [output_path] 2\" -N store_core\n```\n\n#### Submit to an Edge Compute Node with CPU and IGPU\n\nWe write a script to submit a job to an [IEI Tank* 870-Q170](https://software.intel.com/en-us/iot/hardware/iei-tank-dev-kit-core) edge\nnode with an [Intel® Core i5-6500TE](https://ark.intel.com/products/88186/Intel-Core-i5-6500TE-Processor-6M-Cache-up-to-3-30-GHz-). The\ninference workload should run on the Intel® HD Graphics 530 integrated GPU.\n\n```sh\ngpu_job_id = !qsub queue_job.sh -d . -l nodes=tank-870:i5-6500te:intel-hd-530 -F \"[model_path] GPU [original_video_path] /data/queue_param/manufacturing.npy [output_path] 2\" -N store_core\n```\n\n#### Submit to an Edge Compute Node with a Neural Compute Stick 2\n\nWe write a script to submit a job to an [IEI Tank 870-Q170](https://software.intel.com/en-us/iot/hardware/iei-tank-dev-kit-core) edge\nnode with an [Intel Core i5-6500te CPU](https://ark.intel.com/products/88186/Intel-Core-i5-6500TE-Processor-6M-Cache-up-to-3-30-GHz-).\nThe inference workload should run on an [Intel Neural Compute Stick 2](https://software.intel.com/en-us/neural-compute-stick) installed \nin this node.\n\n```sh\nvpu_job_id = !qsub queue_job.sh -d . -l nodes=tank-870:i5-6500te:intel-ncs2 -F \"[model_path] MYRIAD [original_video_path] /data/queue_param/manufacturing.npy [output_path] 2\" -N store_core\n```\n\n#### Submit to an Edge Compute Node with IEI Mustang-F100-A10\n\nWe write a script to submit a job to an [IEI Tank 870-Q170](https://software.intel.com/en-us/iot/hardware/iei-tank-dev-kit-core) edge\nnode with an [Intel Core™ i5-6500te CPU](https://ark.intel.com/products/88186/Intel-Core-i5-6500TE-Processor-6M-Cache-up-to-3-30-GHz-).\nThe inference workload will run on the [IEI Mustang-F100-A10 FPGA](https://www.ieiworld.com/mustang-f100/en/) card installed in this \nnode.\n\n```sh\nfpga_job_id = !qsub queue_job.sh -d . -l nodes=1:tank-870:i5-6500te:iei-mustang-f100-a10 -F \"[model_path] HETERO:FPGA,CPU [original_video_path] /data/queue_param/manufacturing.npy [output_path] 2\" -N store_core\n```\n\n### Step 4 - Compare performance\n\nWe then compare performance on these devices on these 3 metrics-\n\n* FPS\n* Model Load Time\n* Inference Time\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishit-dagli%2Fsmart-queuing-system-on-edge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frishit-dagli%2Fsmart-queuing-system-on-edge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishit-dagli%2Fsmart-queuing-system-on-edge/lists"}