AudionAudion

Traffic Counter

github.com/Tensionix/traffic-counter ↗
Сборки этого проекта: версии, файлы и контрольные суммы.
Traffic Counter

Обследование движения — это часы ручного счёта по записям. Здесь на кадре расставляют линии и ворота, программа сама считает машины каждого класса по каждому направлению и пишет итог в таблицу. Записей может быть сотни: расставили — и очередь считается ночью. Детектор YOLO26 и трекер ByteTrack, счёт на видеокарте NVIDIA, запасной путь — DirectML.

1.8.1
1 загрузка с GitHub

Audion Traffic Counter

English · Руководство

Содержание

Считает машины по записям обычных камер: сколько легковых, автобусов, грузовых и мотоциклов сделали каждый манёвр. Линии счёта проводятся мышью прямо на кадре, записи ставятся в очередь, и очередь считается сама — хоть всю ночь. Счёт идёт на вашей машине: записи никуда не отправляются.

Зачем

Обследование транспортных потоков — это часы записи с каждой точки, которые кто-то пересматривает и считает вручную. Программа делает этот счёт сама: специалист проводит линии на кадре каждой записи и возвращается к готовым таблицам.

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

Как устроено

Стрелка стоит в середине линии и разворачивается одной кнопкой.

в манёвр «откуда → куда».

записи копируются одной кнопкой.

рядом с ручным счётом, если он есть.

Что внутри

РазделЧто делает
ЗАПИСИСписок видео: добавить файлы или папку, отметить, что считать. Файлы остаются на месте
КАМЕРАВидео с линиями, воротами и зонами поверх него; переход по записям; FFplay с линиями
СЧЁТМодель (YOLO26N … YOLO26X), на чём считать, сколько записей разом, очередь, пробный прогон, ход счёта
ИТОГИИстория прогонов, таблица по манёврам и классам с общим числом машин, сравнение прогонов, сверка с ручным счётом и отчёт по всем записям файлами Word и Excel
ОБУЧЕНИЕМодель классов (легковые, грузовые, автобусы): одна идёт с программой и включена с самого начала, свою можно обучить под ваши камеры; и вырезки спорных машин, которым класс ставится одной кнопкой
УСТАНОВКАВидеокарты машины и кнопка, которая ставит ровно то, чего ей не хватает
НАСТРОЙКИКак работает сама программа: скорость счёта (сколько записей разом, потоки, приоритет) и где хранится файл проекта с линиями записей

Какие записи берёт

Файлы .avi, .mp4, .mov, .mkv, .mts, .m2ts, .mpg, .wmv, .ts, .webm с обычными кодеками: H.264, H.265, AV1, MJPEG, MPEG-2, MPEG-4. Файлы с другими расширениями в список не попадают. Проверена программа на записи MJPEG AVI 640×480, AV1 — на коротком пробном ролике; остальные форматы читают те же библиотеки, но на записях они не испытаны. Чересстрочную запись (DV 720×576) перед счётом нужно перевести в прогрессивную.

Запуск

Запустите Start.exe, откройте раздел УСТАНОВКА и нажмите УСТАНОВИТЬ НУЖНОЕ: программа скажет, что скачает под вашу машину, и спросит, потом поставит свой Python, PyTorch под вашу видеокарту, TensorRT для видеокарты RTX, библиотеку распознавания и FFmpeg в свою папку. В Windows ставится одно: Microsoft Visual C++ Redistributable, который нужен PyTorch, — если его там нет. Дальше — по руководству.

Основной путь счёта — видеокарта NVIDIA серии RTX через TensorRT: получасовая запись 640×480 на RTX 5070 считается около пяти минут. Видеокарта NVIDIA GTX считает через PyTorch (CUDA), в несколько раз медленнее. Без NVIDIA программа считает через DirectML на любой видеокарте с DirectX 12, ещё медленнее.

Что ставится и что дают гигабайты

Любой машине ставятся свой Python, библиотека распознавания, веса модели (20 МБ) и FFmpeg (около 0,7 ГБ). Остальное — по видеокарте:

Без видеокарты NVIDIANVIDIA GTXNVIDIA RTX
Как считаетDirectML, на любой видеокарте с DirectX 12PyTorch с CUDATensorRT поверх PyTorch с CUDA
Что ставится под неёPyTorch для процессора и DirectMLPyTorch с CUDA, около 3 ГБ скачиванияPyTorch с CUDA и TensorRT, по 3 ГБ скачивания
Место на дискеоколо 5 ГБне измерялосьоколо 15 ГБ на время установки, 11,5 ГБ после неё
Получасовая запись 640×480около полутора часов24 минуты (см. ниже)5 минут
Очередьзаписи по одной—четыре записи разом: двести получасовых записей — около 12 часов
Обучение модели типов автомобилей, 25 эпох на 3500 вырезкахполчасане измерялось5,6 минуты

Времена — автора. Столбец без NVIDIA — ноутбук со встроенной графикой Intel (счёт) и его процессор (обучение); столбец RTX — RTX 5070. На видеокарте GTX программа не запускалась: 24 минуты в её столбце — тот же путь счёта, PyTorch с CUDA без TensorRT, измеренный на RTX 5070; карта GTX слабее и считает дольше. Видеокарта NVIDIA старше GTX 10-й серии считается как её отсутствие: эта сборка PyTorch на ней не считает, счёт идёт через DirectML.

Откуда размер. На машине с RTX из 11,5 ГБ: PyTorch с CUDA — 7 ГБ (в нём библиотеки NVIDIA для вычислений на видеокарте), TensorRT — 3,3 ГБ, FFmpeg — 0,7 ГБ, остальное — Python, библиотека распознавания и модели. Без видеокарты NVIDIA вместо первых двух ставится PyTorch для процессора, около 3 ГБ. Скачанные установочные файлы — ещё около 3,5 ГБ на машине с RTX — после установки удаляются.

Для чего. TensorRT собирает модель в один движок под вашу видеокарту — при первом счёте каждой модели около минуты — и считает в 4,7 раза быстрее, чем PyTorch с CUDA на той же карте: 140 кадров в секунду против 30. Числа счёта от пути почти не зависят: между TensorRT, CUDA и DirectML они расходятся на единицы автомобилей.

С Claude и Codex

С программой можно работать вместе с ИИ-агентом — Claude Code или Codex. Руководство для агента — Docs\AI_AGENT_GUIDE_RU.md. Откройте папку программы в агенте, попросите прочитать его — и он расставит линии по кадрам записей, посчитает запись, разложит спорные машины на листы и обучит модель классов под ваши ракурсы: нарежет вырезки, разметит их, обучит и проверит на машинах, которых модель не видела. Как это устроено и что агент при этом видит — в руководстве.

Чего программа не делает

Не собирает и не отправляет данные; в сеть выходит только за установкой и весами модели. Не ставит ничего в систему: всё лежит в её папке. Не читает номера машин. Не делит грузовые по числу осей: классы — легковой, автобус, грузовой, мотоцикл.

Точность зависит от размера машины в кадре: вблизи камеры счёт сходится с ручным в пределах одного-двух процентов, вдали часть машин теряется, совсем мелкие не видны вовсе. Легковые отделяются от остальных точно, автобусы и грузовые — приблизительно.

Из чего сделано

Окно — C# на Avalonia 12 (.NET 10). Движок счёта — Python: Ultralytics YOLO и трекер ByteTrack, PyTorch, TensorRT, ONNX Runtime с DirectML, OpenCV; видео читает FFmpeg. Значки — Lucide, шрифты — JetBrains Mono и Inter. Сторонние программы и библиотеки скачиваются по вашей кнопке и остаются под своими лицензиями.

На снимке окна — кадр свободного видео, а не запись заказчика: «Motorway A40: on bridge above the traffic», автор Kathinka Engels (Sounds of Changes), Wikimedia Commons, лицензия CC BY 3.0.

Версии
1.8.1
Audion_Traffic_Counter_v1.8.1_Full.zip56.3 МБ12 октября 2026sha256GitHub ↗
Audion_Traffic_Counter_v1.8.1.zip56.3 МБ12 октября 2026sha256GitHub ↗
README_EN.dark.pdf87.0 КБ12 октября 2026GitHub ↗
README_EN.light-sand.pdf87.1 КБ12 октября 2026GitHub ↗
README_EN.md8.3 КБ12 октября 2026GitHub ↗
README_RU.dark.pdf98.6 КБ12 октября 2026GitHub ↗
README_RU.light-sand.pdf98.7 КБ12 октября 2026GitHub ↗
README_RU.md12.2 КБ12 октября 2026GitHub ↗
USER_GUIDE_EN.dark.pdf186 КБ12 октября 2026GitHub ↗
USER_GUIDE_EN.light-sand.pdf186 КБ12 октября 2026GitHub ↗
USER_GUIDE_EN.md28.0 КБ12 октября 2026GitHub ↗
USER_GUIDE_RU.dark.pdf205 КБ12 октября 2026GitHub ↗
USER_GUIDE_RU.light-sand.pdf205 КБ12 октября 2026GitHub ↗
USER_GUIDE_RU.md43.8 КБ12 октября 2026GitHub ↗
Установка

Программа портативная: распакованная папка и есть установленная программа. Реестр не трогается, удаление — удалить папку.

$name = "Audion_Traffic_Counter_v1.8.1_Full.zip"
Invoke-WebRequest "https://audion.dev/get/traffic-counter/1.8.1/Audion_Traffic_Counter_v1.8.1_Full.zip" -OutFile $name
Invoke-WebRequest "https://audion.dev/get/traffic-counter/1.8.1/Audion_Traffic_Counter_v1.8.1_Full.zip.sha256" -OutFile "$name.sha256"

$want = (Get-Content "$name.sha256").Split(" ")[0]
$have = (Get-FileHash $name -Algorithm SHA256).Hash.ToLower()
if ($want -ne $have) { throw "сумма не сошлась: загрузка повреждена" }

Expand-Archive $name -DestinationPath ".\traffic-counter"
Все загрузки · На главную