Skip to content
Aleksandr Kireev edited this page Nov 3, 2024 · 2 revisions

CVCounter Wiki

Добро пожаловать в документацию по проекту CVCounter!

Описание проекта

CVCounter — это мини-вебсайт, который позволяет отслеживать количество объектов на видео, через веб-интерфейс. Проект создан как простой и удобный инструмент для мониторинга потоков объектов (например, вход и выход или конвейер).

Это решение не требует установки дополнительного ПО на стороне клиента и работает на любых устройствах с браузером. Реализовано три вида просмотра: основной вид с видео, текстовый вид и текстовый вид с двумя счетчиками. Проект задуман как легковесное и нетребовательное к ресурсам решение, особенно если не использовать режим с видео.

Основные функции:

  • Веб-интерфейс для отображения количества объектов
  • Просмотр видео с результатом распознавания
  • Текстовые режимы для легкости и экономии ресурсов
  • Возможность одновременного отображения двух счетчиков (например, для входа и выхода)

Установка

Требования:

  • Язык: Python 3.8+
  • База данных: MySQL, PostgreSQL или SQLite
  • Зависимости: см. requirements.txt для получения полного списка

Шаги установки:

  1. Клонируйте репозиторий проекта:

    git clone https://github.com/BespredeL/CVCounter.git
  2. Перейдите в директорию проекта:

    cd CVCounter
  3. Создайте виртуальное окружение и активируйте его:

    python3 -m venv venv
    source venv/bin/activate
  4. Установите необходимые зависимости:

    pip install -r requirements.txt
  5. Настройте базу данных:

    • Создайте базу данных
    • Укажите настройки подключения в файле конфигурации
  6. Запустите Flask-приложение:

    python app.py
  7. Откройте браузер и перейдите по адресу:

    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 Классы для обнаружения {}

Конфигурации обнаружения

ExampleCam

Параметр Описание Значение по умолчанию
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

Интерфейс

Основной вид (Main View):

На этой странице отображается видео с камеры, а также счетчики, показывающие количество объектов. Это основной интерфейс приложения, где можно наблюдать видео в реальном времени вместе с результатами распознавания.

URL:

http://127.0.0.1/counter/{location}

Текстовый вид (Text View):

На этой странице отображаются только значения счетчиков без видео. Этот режим подходит для устройств с низкими ресурсами или при необходимости простого отображения информации.

URL:

http://127.0.0.1/counter_t/{location}

Текстовый вид с двумя счетчиками (Text View with Two Counters):

Этот вид отображает два счетчика одновременно, что удобно для отслеживания объектов на входе и выходе.

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.

Перед отправкой убедитесь, что ваши изменения не нарушают существующий функционал.


Часто задаваемые вопросы (FAQ)

1. Какие минимальные системные требования для сервера?

  • Процессор: Современный 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) могут работать, но это требует дополнительных настроек, и производительность может быть ниже.

2. Какие минимальные системные требования для клиента?

Любое устройство с веб-браузером в котором разрешено выполнение JavaScript.

3. Как добавить новый тип счетчиков?

В коде проекта уже реализованы основные функции, но вы можете расширить логику, изменив обработку данных в соответствующих маршрутах (views).

4. Что делать, если видео не отображается?

Проверьте работу камеры и убедитесь, что она правильно подключена и транслируется в веб-интерфейсе.

5. Как избежать закрытия интерфейса подсчета?

Вы можете запускать браузер в режиме киоска, для предотвращения выхода из него (например для Google Chrome при запуске можно указать "--kiosk --start-fullscreen")


Лицензия

Проект распространяется под лицензией MIT. Подробности можно найти в файле LICENSE.