-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Добро пожаловать в документацию по проекту CVCounter!
CVCounter — это мини-вебсайт, который позволяет отслеживать количество объектов на видео, через веб-интерфейс. Проект создан как простой и удобный инструмент для мониторинга потоков объектов (например, вход и выход или конвейер).
Это решение не требует установки дополнительного ПО на стороне клиента и работает на любых устройствах с браузером. Реализовано три вида просмотра: основной вид с видео, текстовый вид и текстовый вид с двумя счетчиками. Проект задуман как легковесное и нетребовательное к ресурсам решение, особенно если не использовать режим с видео.
- Веб-интерфейс для отображения количества объектов
- Просмотр видео с результатом распознавания
- Текстовые режимы для легкости и экономии ресурсов
- Возможность одновременного отображения двух счетчиков (например, для входа и выхода)
- Язык: Python 3.8+
- База данных: MySQL, PostgreSQL или SQLite
-
Зависимости: см.
requirements.txt
для получения полного списка
-
Клонируйте репозиторий проекта:
git clone https://github.com/BespredeL/CVCounter.git
-
Перейдите в директорию проекта:
cd CVCounter
-
Создайте виртуальное окружение и активируйте его:
python3 -m venv venv source venv/bin/activate
-
Установите необходимые зависимости:
pip install -r requirements.txt
-
Настройте базу данных:
- Создайте базу данных
- Укажите настройки подключения в файле конфигурации
-
Запустите Flask-приложение:
python app.py
-
Откройте браузер и перейдите по адресу:
http://127.0.0.1
Все основные настройки хранятся в файле config.json
Параметр | Описание | Значение по умолчанию |
---|---|---|
debug |
Включить режим отладки | true |
log_path |
Путь к файлу журнала | errors.log |
default_language |
Язык по умолчанию | ru |
allow_unsafe_werkzeug |
Разрешить небезопасные операции в Werkzeug | false |
button_change_theme |
Показать кнопку изменения темы | true |
button_fullscreen |
Показать кнопку перехода в полноэкранный режим | true |
button_backward |
Показать кнопку назад | false |
Параметр | Описание | Значение по умолчанию |
---|---|---|
host |
Адрес сервера | 0.0.0.0 |
port |
Порт сервера | 80 |
threaded |
Включить многопоточный режим | true |
use_reloader |
Включить режим перезагрузки | false |
log_output |
Включить вывод журнала | true |
socketio_key |
SocketIO ключ | "" |
Параметр | Описание | Значение по умолчанию |
---|---|---|
admin |
Логин и пароль | admin:admin |
Параметр | Описание | Значение по умолчанию |
---|---|---|
db |
Подключение к базе данных | sqlite:///system/database.db |
Параметр | Описание | Значение по умолчанию |
---|---|---|
defect_show |
Показать форму брака | true |
correct_show |
Показать форму коррекции | true |
custom_fields |
Конфигурация пользовательских полей | [{"name": "field_one", "label": "Field One", "type": "text"}] |
Параметр | Описание | Значение по умолчанию |
---|---|---|
video_path |
Путь к видеофайлу или источнику камеры | "" |
video_show_scale |
Масштаб вывода видео на странице | 50 |
video_show_quality |
Качество вывода видео на странице | 50 |
weights_path |
Путь к модели Yolov8 | yolo_cfg/models/yolov8n.pt |
confidence |
Порог доверия | 0.7 |
iou |
Порог iou | 0.7 |
device |
Устройство для вычислений | 0 |
vid_stride |
Шаг видеопотока | 1 |
indicator_size |
Размер индикатора | 10 |
counting_area |
Площадь подсчета (многоугольник) | [[0, 0], [100, 0], [100, 100], [0, 100]] |
counting_area_color |
Цвет зоны подсчета | [67, 211, 255] |
classes |
Классы для обнаружения | {} |
Параметр | Описание | Значение по умолчанию |
---|---|---|
label |
Наименование подсчета | Label ExampleCam |
start_total_count |
Начальное значение подсчета | 0 |
video_path |
Путь к видеофайлу или источнику камеры | "" |
video_show_scale |
Масштаб вывода видео на странице | 70 |
video_show_quality |
Качество вывода видео на странице | 30 |
weights_path |
Путь к модели Yolov8 | yolo_cfg/models/yolov8n.pt |
confidence |
Порог доверия | 0.7 |
iou |
Порог iou | 0.7 |
device |
Устройство для вычислений | 0 |
vid_stride |
Шаг видеопотока | 1 |
indicator_size |
Размер индикатора | 10 |
counting_area |
Площадь подсчета (многоугольник) | [[0, 0], [100, 0], [100, 100], [0, 100]] |
counting_area_color |
Цвет зоны подсчета | [255, 64, 0] |
classes |
Классы для обнаружения | {} |
dataset_create.enable |
Включить создание набора данных | true |
dataset_create.probability |
Вероятность создания изображения (0.01-1) | 0.05 |
dataset_create.path |
Путь для сохранения набора данных | yolo_cfg/saved_images/ExampleCam |
На этой странице отображается видео с камеры, а также счетчики, показывающие количество объектов. Это основной интерфейс приложения, где можно наблюдать видео в реальном времени вместе с результатами распознавания.
URL:
http://127.0.0.1/counter/{location}
На этой странице отображаются только значения счетчиков без видео. Этот режим подходит для устройств с низкими ресурсами или при необходимости простого отображения информации.
URL:
http://127.0.0.1/counter_t/{location}
Этот вид отображает два счетчика одновременно, что удобно для отслеживания объектов на входе и выходе.
URL:
http://127.0.0.1/counter_t_multi/{location_first}/{location_second}
Я всегда рад новому вкладу в развитие проекта! Чтобы внести изменения, выполните следующие шаги:
- Форкните этот репозиторий.
- Создайте новую ветку.
git checkout -b feature/your-feature
- Внесите изменения и закоммитьте их.
git commit -m "Добавил новую функцию"
- Запушьте изменения
git push origin feature/your-feature
- Отправьте PR (Pull Request) на review.
Перед отправкой убедитесь, что ваши изменения не нарушают существующий функционал.
- Процессор: Современный 4-ядерный процессор (например, Intel Core i5 или AMD Ryzen 5).
- Оперативная память: Минимум 8 ГБ (рекомендуется 16 ГБ и выше для стабильной работы с потоковым видео).
- Хранилище: SSD для хранения набора данных и логов.
-
Видеокарта: Наличие GPU значительно ускоряет обработку и снижает нагрузку на систему. Минимальные требования к видеокарте:
- NVIDIA GTX 1050 (2 ГБ VRAM): минимально достаточна для обработки изображений с низкой частотой кадров.
- NVIDIA GTX 1660 (6 ГБ VRAM): рекомендуется для работы с видеопотоком в реальном времени и обработки видео высокого разрешения (до 720p).
- NVIDIA RTX 2060 или выше (6 ГБ+ VRAM): для стабильного запуска моделей YOLO в реальном времени на разрешениях от 1080p и выше.
Примечание: YOLO поддерживает вычисления на видеокартах NVIDIA с использованием CUDA. Видеокарты от других производителей (например, AMD) могут работать, но это требует дополнительных настроек, и производительность может быть ниже.
Любое устройство с веб-браузером в котором разрешено выполнение JavaScript.
В коде проекта уже реализованы основные функции, но вы можете расширить логику, изменив обработку данных в соответствующих маршрутах (views).
Проверьте работу камеры и убедитесь, что она правильно подключена и транслируется в веб-интерфейсе.
Вы можете запускать браузер в режиме киоска, для предотвращения выхода из него (например для Google Chrome при запуске можно указать "--kiosk --start-fullscreen")
Проект распространяется под лицензией MIT. Подробности можно найти в файле LICENSE.