- Author:
Oleg Shamaev
- email
MlOpsEngineer@yandex.ru
- GUI Framework:
PyQt6
- Processing
Framework: Ultralytics
Description in Russian docs/docs/rus.md
Installation and Configuration Guide docs/docs/getting-started.md
-
This is a powerful and flexible application developed using PyQt6, designed for real-time processing of 4 video streams using the YOLOv8-OBB model.
-
The application renders detection results directly onto the original video stream, ensuring that even on low-end systems, the video stream remains smooth and free of stuttering. This approach minimizes the processing overhead typically associated with real-time video analysis, allowing for efficient performance without compromising the fluidity of the video. By optimizing the rendering process, the application delivers a seamless viewing experience, maintaining consistent frame rates even under limited hardware resources.
-
You can select a detection area and choose to detect either inside or outside of it, effectively excluding certain regions from detection. This can be managed through the
Display Area
menu with theIN
andOUT
options. -
The application supports video processing from cameras and video files providing highly efficient object detection and result saving.
-
It is aimed at users who require accurate and fast video data processing for analytics and monitoring.
-
Key Features:
-
Multi-Camera Processing:
-
The application provides 6 tabs.
-
The first tab displays all cameras simultaneously (
All Camera
)- AiWorkers:
- Cam1 AllCamera
- Cam2 AllCamera
- Cam3 AllCamera
- Cam4 AllCamera
- AiWorkers:
-
The next four tabs are designed for working with each camera individually.
-
The last tab is used for parameter
settings
.-
Supported Input Sources:
- local files: images or videos
- Camera
- RTSP-Stream
-
Supported Models:
- YOLOv8n
- YOLOv8s
- YOLOv8m
- YOLOv8l
- YOLOv8x
-
Display Area:
- IN
- OUT
-
-
-
Load Optimization:
- Video processing is only performed on the active tab, reducing system load.
- On the
All Cameras
tab, all cameras are processed simultaneously. However, in theAiWorkers
menu, you can pause the processing of any of the cameras. - On the
Settings tab
, processing of all cameras is paused. - The video processing is only performed on the currently selected camera tab.
-
Session Saving:
- The settings from the last session are saved and restored upon the next launch.
- The application remembers the last opened tab and restores it upon restart.
-
Logging:
- The application maintains a detailed
log
file, enabling tracking of operations and error detection.
- The application maintains a detailed
-
YOLOv8-OBB Model Integration:
- The OBB (Oriented Bounding Box) model is connected and configured for accurate object detection.
-
Frame Interval Processing:
- The application allows setting a Frame Interval to skip frames, reducing processing load.
-
Result Recording:
- Detection results can be recorded in a
PostgreSQL
database or in files compatible withYOLOv6-OBB
(labels.txt and images.jpeg). - Recording can be configured based on the model's confidence threshold.
- Detection results can be recorded in a
-
Detection Management:
- The ability to enable or disable detection for each process on the
All Cameras
tab. - Supports selecting a detection area with the option to configure processing inside or outside the selected area.
- The ability to enable or disable detection for each process on the
-
Configuration File:
- The application uses a
JSON
configuration file, allowing flexible settings for:- Visibility of the settings tab.
- Method of saving results (to database or file).
- Confidence threshold for recording.
- Use of the model's confidence threshold for recording.
- The application uses a
-
Customization for Client Needs:
- The application has been adapted and refined to meet the specific requirements and tasks of the client.
-
├── main.py <- This is the main entry point of the project.
├── LICENSE <- Open-source license if one is chosen
├── Makefile <- Makefile with convenience commands like `make db' and other
├── README.md <- The top-level README for developers using this project.
├── data
│ ├── db_image <- Data Base images.
│ ├── images <- Images.
│ ├── labels <- Labels.
│ └── video <- start video and other video.
│
├── docs <- A default mkdocs project; see mkdocs.org for details
│ ├── docs <- Docs .md files
| ├── mkdocs.yml <- Configuration file MkDocs
| └── README-DOCS.md <- README MkDocs use
|
├── logs <- Logs
|
├── models
| ├─ weights <- Trained model file format yolov8n-obb.pt
│ └─ classes.txt <- Classes for models
│
├── notebooks <- Jupyter notebooks
│
├── pyproject.toml <- Project configuration file with package metadata for project
│ and configuration for tools like black
│
├── src <- Modules
│ ├── data_type
| ├── models
| ├── qt
| ├── ui
| └── utils
|
├── reports <- Generated analysis as HTML, PDF, LaTeX, etc.
│ └── figures <- Generated graphics and figures to be used in reporting
│
├── requirements.txt <- The requirements file for reproducing the analysis environment, e.g.
│ generated with `pip freeze > requirements.txt`
│
├── setup.cfg <- Configuration file for flake8, black, isort