Skip to content

fibit/yolo-linecount

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yolo-linecount

Простой счётчик людей по пересечению линии на видео или RTSP-потоке.

Проект запускает YOLO-модель, отслеживает людей трекером и считает, кто пересёк заданную линию в направлениях in и out.

Что делает проект

  • детектирует людей (класс person) на кадрах;
  • отслеживает объекты между кадрами;
  • считает пересечения линии в обе стороны;
  • сохраняет события в jsonl файл по дням;
  • сохраняет последние кадры (оригинал и с разметкой).

Структура

  • linecount.py — основной запуск и логика подсчёта;
  • config.json.example — пример конфигурации;
  • config.json — ваш рабочий файл конфигурации;
  • models/ — папка с весами YOLO;
  • outputs/ — результаты работы.

Требования

  • Python 3.10+;
  • установленный ffmpeg в системе;
  • CUDA (опционально; рекомендуется для torch из requirements.txt).

Установка

  1. Клонируйте репозиторий:
 git clone https://github.com/fibit/yolo-linecount
 cd yolo-linecount
  1. Создайте и активируйте виртуальное окружение:
 python -m venv .venv
 .venv\Scripts\activate
  1. Установите зависимости:
 pip install -r requirements.txt
  1. Поместите файл модели в папку models/ (например, models/yolo26n.pt).

Настройка config.json

Скопируйте пример:

copy config.json.example config.json

Параметры конфигурации:

  • model — имя файла модели внутри models/ (например, yolo26n.pt);
  • source — источник видео:
    • RTSP/HTTP URL (rtsp://..., http://...);
    • путь к видеофайлу;
    • индекс камеры (например, 0);
  • resize — размер кадра для инференса (например, 320);
  • line_start — стартовая точка линии [x, y];
  • line_end — конечная точка линии [x, y];
  • output — имя подпапки в outputs/, куда сохраняются результаты.

Запуск

python linecount.py --config config.json

Что появится в outputs/<output>/

  • YYYY-MM-DD.jsonl — события пересечения линии, по одному JSON-объекту в строке;
  • last_original.jpg / last_annotated.jpg — периодические кадры;
  • last_original_in.jpg / last_annotated_in.jpg — последний кадр при входе;
  • last_original_out.jpg / last_annotated_out.jpg — последний кадр при выходе.

Пример строки события:

{"timestamp":"2026-04-23T12:00:00.123","direction":"in","track_id":7}

About

Подсчет пересечений линии

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages