SDD - CankayaUniversity/ceng-407-408-2023-2024-Insightio GitHub Wiki
The Insightio platform provides crowd/object counting and tracking solutions for businesses. Users have the capability to create an account, set up cameras, and define classes for monitored objects. This section explains the system design and user perspective of Insightio.
Software Design Document provides a comprehensive overview of the architecture and system design of the Insightio application. In this document, functionality and system design are explained from the user's perspective. Its purpose is to offer users a holistic view.
-
Name Definitions User Individuals who use and interact with the application for various purposes. Actor Any entity, including users or other software systems, that interacts with the primary system. Object Detection A computer vision technique that enables systems to identify objects in digital images, videos, and visual inputs. Computer Vision A subfield of Artificial Intelligence focused on making systems see and recognize objects using visual inputs. YOLO Models YOLO Models are a type of object detection algorithm used in computer vision. Javascript A scripting language commonly used to enhance the interactivity and functionality of web pages. SvelteJS A JavaScript framework used to build user interfaces. Kotlin A programming language often used for developing Android applications. Python A versatile programming language widely used for various applications. Database Organized collection of structured data, storing user settings, camera configurations, and statistical data for local processing in Insightio. System Server Component managing licenses in the current Insightio design, with potential future integration for enhanced license control and cloud-based solutions. IP Internet protocol Id Unique Identifier UI Interface between the user and the application
The system is designed as a comprehensive platform offering users crowd and object counting capabilities, providing valuable statistical insights to businesses. Operating under the brand name "Insightio," the platform is accessible through a user-friendly web interface and offers simplicity from account creation to data analysis with the business-specific account.
Users engage with Insightio by creating accounts, a straightforward process involving the provision of basic details such as email addresses, usernames, and secure passwords.
The core functionality of Insightio revolves around real-time counting and tracking. Upon successful account creation, users can configure cameras, define tracking settings, and initiate the counting process. The platform seamlessly communicates with cameras, retrieves data, and employs advanced AI algorithms for object recognition and tracking.
Users have the flexibility to configure cameras, provide device URLs, choose target classes, and define capture zones for concentrated counting efforts. The server manages the distribution of camera settings to the counting software, ensuring accurate and reliable recording based on user-configured parameters.
In summary, Insightio is a versatile platform that caters to the needs of businesses seeking to leverage crowd and object counting for informed decision-making. With its user- centric design, robust functionality, and emphasis on real-time data analysis, Insightio stands as a valuable tool for businesses across various industries.
Insightio's system architecture is designed to support desktop applications, with the main purpose of providing businesses object counting and tracking solutions. Along with its 3 layered architecture, this design choice allows the application to be deployed locally on clients, offering centralized enhanced control, reduced dependency and direct management of data processing.
Insightio's system architecture is conceived to empower a desktop application aimed at providing businesses with crowd and object counting and tracking solutions. This design choice allows the application to run locally on a client's machine, offering enhanced control and direct management of data processing.
The architecture is segmented into three primary layers. The User Interface Layer, also called presentation layer, is tailored for simplicity and ease of use, enabling clients to seamlessly add cameras, configure object classifications, and define specific zones for counting within camera feeds. This layer is developed using desktop application technologies, ensuring a user-friendly experience.
In the Application Logic Layer, the core functionalities of Insightio are housed. This includes the execution of counting and tracking algorithms. It processes the configurations set by the user, managing the intricate interaction between the user interface and the data storage. By handling camera feed processing and object tracking tasks locally, the system ensures prompt response times and reduces dependency on continuous internet connectivity or external servers.
The Data Storage Layer is integral for the secure storage and management of user data, also responsible for interaction with the application layer. This includes client-specific settings such as camera configurations and the statistical data derived from object counting and tracking. The emphasis is on data integrity and security within the local operational environment of the client's desktop application. Insightio mainly stores tracking data, user data, camera configuration, zone definitions and logs.
While the current architecture primarily focuses on local data handling and processing, Insightio envisions the future integration of a central server. This server would primarily be responsible for controlling the licenses of each desktop application. Additionally, while not currently implemented, there's potential for incorporating cloud-based solutions in the future, particularly for data backups and enhanced data accessibility, catering to the evolving needs of the business.