AudionAudion

Changelog

CHANGELOG.md

Changelog

Contents

1.8.1 — 2026-10-09

Patch: an old NVIDIA card no longer gets an installation that cannot count.

series up. An older card (the GTX 900 series and before) was given that build all the same - there is an NVIDIA card, its driver is new enough - and the first count stopped with "no kernel image is available". Now such a card is treated as a machine without an NVIDIA card: PyTorch for the processor and DirectML, the count through DirectML. The machine check reads the generation of the card (nvidia-smi, compute capability) and says so; SETUP shows it as a row; the engine itself passes such a card over even when a folder installed for another machine is carried to it.

README and the guides.

assumed (Check-Machine.ps1 -AssumeCapability 5.2) and by tests of the rule itself.

TensorRT · cla"); its column is wide enough for both now. CAMERA, English: the hint of the field of the oncoming movement did not fit the field ("do not coun"); it reads "ignored".

the coloured ones (pressed, under the pointer, the green, amber and orange buttons) - stands halfway between its former colour and the surface, in both themes. Cards, text and icons keep their colours.

with its credit on the picture and in the README. The window takes it itself: with AUDION_SHOT_ONLY the one pass is in the language and the theme named by AUDION_SHOT_LANG and AUDION_SHOT_THEME, and the language and the theme the user had chosen are put back.

1.8.0 — 2026-10-09

Minor: the installation asks first, and brings the one thing Windows may lack.

parts ask before they download: what comes for this machine, how many gigabytes (about 15 GB of disk on an RTX card, about 5 GB without an NVIDIA card), what goes into Windows, and that without the engine the program does not count. A copy without its engine opens SETUP by itself at the first start and asks it there; before, it only showed a notice. The scenario offer of --shots presses the button and answers no.

Visual C++ Redistributable (x64), and a freshly installed Windows may not have it. The installation looks for it before anything else and installs it with winget when it is missing (install\Ensure-VCRedist.ps1); Windows asks for the administrator's consent. It is the one thing the program installs into Windows. SETUP says so when the runtime is missing; when winget is not there either, it names the Microsoft download before anything starts. verify checks it.

Engine\Check-Texts.ps1 (PowerShell) instead of a Python script: build_app needs the .NET SDK and nothing else. The tests of the engine run where a Python is and are passed over with a word where none is - before, a machine with neither the engine's Python nor one of its own could not build the window.

of the workshop have it; the step was run with the runtime taken for missing and the command printed, and winget knows the package).

1.7.0 — 2026-10-08

Minor: a field for every kind of data and for the reports.

again and the counts reproduced; the main things are the program, what it has learned (the model of vehicle kinds, which comes with the program since 1.5.0) and its stability. So the program does not depend on where the data lie: SETTINGS names each kind.

RECORDINGS section opens there, and - the part that matters - a recording of the list that is not where the list says is looked for under that folder and its subfolders, by its file name and its fingerprint, when the folder is chosen and at every start of the window. Recordings moved to another disk or copied anew are found again and keep their lines, their counts and their manual counts. A name borne by several files is taken only with a matching fingerprint, never on a guess.

RESULTS open the choice of a folder there, and the last export sets the field as before.

The cards of SETTINGS stand in two columns - the fields of the data on the left - so the page does not grow taller than the window; a path stands on a line of its own under its buttons.

recording on a disk that is not there; with the folder of the recordings named, it was found two folders down and kept its lines; two files of one name without a fingerprint were not taken. Not checked: the folder dialogs themselves.

1.6.0 — 2026-10-08

Minor: the work folder - the program can be kept free of everything about the user's recordings.

compare with, the journal and the throwaway files are the user's own material. They lay in the folder of the program, and of them the cleanup before a publication removed the counts and the list but left the lines and the manual counts - with the names of streets and the numbers of sheets in them. SETTINGS has a card WORK FOLDER now: IN THE PROGRAM'S FOLDER (the default - a fresh copy works at once, nothing changes for anyone) or IN THE USER'S FOLDER. With a folder chosen, all of it is read and written there, in the same layout (config\recordings.json, config\cameras\, output\, reference\, logs\, ._runtime\), and the folder of the program holds the program and its settings alone: it can be copied to another machine, cleaned or published without carrying the lists, the lines and the results along.

(engine\paths.py) and Paths.DataRoot in the window; both read "WorkFolder" of config\settings.json, which always stays with the program. Every command that reads the list, the lines, the counts or the manual counts follows it (recordings, frames, report, count without --out).

the folder they were drawn in; then the list, the lines and the results are read from the new place. Refused while a count runs. Choosing a folder moves nothing - what lay in the former place stays there, and the tooltip of the button says which four things to move by hand to take the former work along. A work folder that cannot be reached (a disk that is not connected) is said at the start of the window and in the card, and the list is empty; nothing is written into the folder of the program instead.

JOURNALS open the folders of the work folder.

recordings read the same but for the folder of the lines; the report of the four counted recordings the same line for line; the window changed the folder to an empty one, to one with a list and back, and found everything as at the start. Not checked: the folder dialog itself, and a disk that is not connected.

1.5.1 — 2026-10-08

Patch: two things that went wrong silently when recordings and training data were moved to other folders.

the run names the file by the path it was counted from. The report now finds the recording through the list of recordings (it is there under the same id) and takes the frame from where the file lies today. A recording that is in neither place is reported as before, without the picture.

picture of a set is named after the folder it was cut from. With the folder renamed, the old PREFIX named nothing, and the teaching ran to its end and gave another model than the one meant, without a word. A PREFIX that names no folder of --train is now refused before the set is built (a set is never written over, so its name would have been spent), and once more on the set itself; the start line of a teaching says how many pictures are boosted ("boosted").

1.5.0 — 2026-10-08

Minor: a car of the detector is no longer renamed a truck, and the default model of vehicle kinds comes with the program.

of another kind. Looked at by eye on a camera that sees the road from a roof: where the model was sure a detector's car was a bus it was right 21 times of 24 (route vans the detector cannot tell from cars at that height); where it was sure it was a truck - 10 of 42, the rest dark and red cars seen from above, and as sure of the wrong ones as of the right ones (0.90-0.97), so no threshold parts them. Cars are 96 % of such a flow: one wrong rename in three hundred cars is enough to spoil the count of trucks. Since this version a detector's car becomes a bus when the model is sure, and never a truck. What the detector itself called a truck or a bus is the model's to name as before, a truck included.

exactly: 62 cars called trucks against none, trucks about +40 % against about +9 %; buses the same. City cameras of two days: trucks +8.7 % and -1.7 % against -5.5 % and -6.5 %. Roadside cameras at ground level: no change. The camera of the reference recording, the two near lines: trucks 50 and 31 against 49 and 31, where the pictures show 49 and 32. The reference recording itself was counted again: every event is the same, the rule touches only the names of the kinds.

check-classes. A run remembers the rule it was named by ("car_to_truck" in the classes block of summary.json), and a mark of a person laid on it later in TRAINING changes that vehicle only: the rest of the run is not named anew by another rule. A run named before this version is taken as named by the former rule.

6 MB, weights only - no picture of any camera is in it. config\classes_default.json named a model that was not in the published folder, so a folder installed from the skeleton named buses and trucks by the detector alone; now it counts with the model at once. The owner's word on publishing it: "of course - that is the point". A model of the same name in models\classes is the user's own and is taken first; TRAINING lists the models of both folders; doctor says which model is the default ("kinds"), and builder_main.cmd verify has a line for it. A cleanup leaves system_core\kinds in place.

1.4.0 — 2026-10-08

Minor: the report of a count for the people who use its numbers, and the model of vehicle kinds on by default.

a BUTTON by which everything is exported (copied) somewhere. The staff understand only DOCX and XLSX... The main thing is to make it handsome, clear, with accents." RESULTS has a card REPORT: REPORT ON ALL RECORDINGS (the newest run of every counted recording) and REPORT ON THIS RUN ask for a folder and write two files there, REPORTS FOLDER opens the last one. The document (.docx): the figures first (recordings, vehicles, cars, buses, trucks, how many recordings are to be checked), the overview, then every recording on a page of its own - a frame with the counting lines and the names of the directions, the table by direction, the total, and the comparison with a manual count when reference\ holds one. The sheet (.xlsx): the overview, the split by 15 minutes, the list of recordings (what was counted, when, on what, what to check), the comparison.

everything to an ergonomic form for transport engineers, not geeks"). It is titled "Интенсивность и состав транспортного потока"; beside every count stands the volume an hour (a recording of 15 minutes multiplied by four), under every total the composition of the flow in percent; a line is a "section", a recording is "processed"; the sheet by 15 minutes gives the volume an hour of every interval. What its reader has no use for - the counting model, the model of kinds, what it was computed on, the frames, the folder of the run - is the last sheet of the workbook, "Служебное". No passenger-car equivalents: the norm their coefficients come from is the reader's to name.

[--formats xlsx docx md] [--lang ru|en] [--interval 15], so an agent or a night script writes the same files the button does. Nothing is counted in it: the numbers are those of summary.json and events.csv`. Markdown is a third format for whoever converts it himself.

directly (headings, tables with fills, pictures, a footer with the page number), so an installed folder writes reports without being installed again. openpyxl was pinned already. Both files were opened by Word and Excel and read page by page.

recording read not to its end; the kinds named by the detector alone; and - new - a model of kinds on a camera it does not know. The measure of the last: such a model renames many of the detector's cars (a model taught on views from above called 20 % of the cars of a roadside camera buses; a model that knows the camera renames 1-3 %). A run in which the model renamed at least 20 and at least 5 % of the detector's cars has "doubt": true in the classes block of summary.json; RESULTS says so in the line of the run, the report marks the recording "check" and explains that the number of vehicles stands and their division into kinds does not.

that it is on by default". config\classes_default.json names the default model; a count started from the window takes it when nothing else is chosen (TRAINING: AUTO, the first choice; DETECTOR is the former behaviour; a model by its name as before), and count --classes auto takes it from the command line. The name is written down, not guessed from the folder: teach puts a new model into models\classes before anyone has checked it. When the named model is not installed, the kinds are the detector's and the tooltip of AUTO and the report say so. The file of the model is not in the skeleton: it was taught on a customer's recordings and is published only by the owner's word.

1.3.0 — 2026-10-03

Minor: teaching a model of vehicle kinds for one's own cameras, from the program itself and together with an AI agent.

"run it at home with a video card with the help of Claude, as we did, and teach the kinds for their own angles". The tools of the experiment that taught model 03 are now commands of the engine: harvest (pictures of every vehicle of a recording, no lines, a screen of several cameras by --grid), sheets (sheets of 48 numbered pictures), labels (the letters written beside the sheets), teach (the set and the teaching, models\classes\<name>.pt, never written over), check-classes (the detector, the model and the rule "both" against labels the model was not taught on). The marks of TRAINING (review.csv of a run) are labels as well.

(Claude Code, Codex, others) that works in the program's folder with its user: the rules, the folder, the commands, placing lines by frames, counting and comparing, and teaching the kinds step by step - the letters, what decides the result (pictures of the same kind of camera, the boundary of the kinds of the user's sheets), and that an agent asks before it looks at the pictures, because what it looks at goes to the service that runs it. It lies in Docs\ because the public build carries no SKILL.md (the owner's word). The user guides have the chapter "Working with Claude and Codex", the readmes a paragraph, the tooltip of MODEL OF KINDS names the guide.

word): BESIDE THE RECORDINGS - a folder classes beside the videos, the default, so the data travel with the recordings as the project file does - or IN THE USER'S FOLDER. harvest and teach take it from there; teach keeps the set and a copy of the model in <training data>\taught\<name>\, because models\ goes with a cleanup of the program and the training data must not. They are never in the program's folder unless chosen so (training\, which the cleanup removes like output\).

under the pointer - on a placement that is only looked at they hid the vehicles under them; the direction is a small triangle standing a few pixels off the middle of the line instead of a stick with a head across the road (the owner's words). RESULTS say which model of kinds named the kinds of a run, in the list of runs and over its column of the comparison.

training data); the window's scenarios camera (with the pointer brought over a line) and training; check-classes with model 03 on the labelled check part of the experiment gives its table exactly; a minute of the reference recording cut, laid on sheets, labelled, taught for two epochs and checked by the commands on the laptop (DirectML for the detector, the processor for the teaching).

1.2.0 — 2026-10-03

Minor: the kinds of vehicles by a model of kinds, and the TRAINING section.

cars well and confuses buses with trucks; on the reference recording, by the line where the vehicles drive away from the camera, buses -53 %, trucks +39 % against a count made by looking at the pictures. A small model of kinds (MobileNetV3, taught on pictures of counted vehicles) names the kind of every counted vehicle on its pictures; the rule "both" keeps a car of the detector a car unless the model is 90 % sure of another kind. On the second half of that recording (the first half was in the teaching, the second was not) buses +4 %, trucks +6 %, cars 0 %; by the line where vehicles come towards the camera trucks -3 %, buses 5 of 6. How the model was taught: MEMORY.md, "Классы по вырезкам".

a run named anew without counting the video again. events.csv keeps the detector's kind, the model's kind and share and a person's mark beside the final one; summary.json gets a block classes. A count without a model is as before, byte for byte.

(DETECTOR or a file of models\classes), and the pictures of the vehicles of a run that the detector and the model disagree on or the model is not sure of - 192 of 3756 on the reference recording. A button under a vehicle sets its kind; the run is named anew at once and RESULTS show it. The marks are the examples of the next teaching, which is done outside the program; a taught model comes as a new file of models\classes.

people who counted by hand took it (with it the count by the pictures agreed with theirs within one or two vehicles).

customer's recordings is not published.

engine gives the numbers of the experiment exactly; naming anew twice gives the same events.csv byte for byte; one minute counted with --classes end to end; the window's scenario training (a mark by the path of a button, the run named anew, the mark taken back).

1.1.0 — 2026-10-02

Minor: a count can keep pictures of the vehicles it counted; and a count on DirectML with more than one zone no longer breaks.

(crops\, crops.csv): the whole vehicle at its largest, cut by the box of the detector. The reason is the owner's task of 02.10.2026 - only three kinds are needed, cars, trucks and buses, and the detector confuses the last two (24 buses against 52 by hand on the near line). The pictures are what the kind is named by, by the eye and then by a small classifier taught on them; the detector itself is not touched. The count does not read the pictures: one minute of the reference recording gave the same events.csv byte for byte with and without the key. There is no switch in the window yet.

within seconds ("DmlCommandRecorder ... 80004005", shown as "'utf-8' codec can't decode byte 0xcd" - the text of the error comes in the language of Windows). Each zone has its own model, each model had its own lock, and two threads called the two models at once; the provider does not take that. One lock is now shared by all the models of a process. Found on the laptop with the Intel card on the folder installed anew from the skeleton: four counts of four failed in two threads, two of two passed in one; after the change three of three in two threads, the events the same as in one thread. TensorRT, CUDA and OpenVINO are not touched by it.

pictures), verify, check_queue (counted 3, skipped 1, failed 2, every count on directml, nine guard checks). Not checked: TensorRT and CUDA - the change does not touch their code, and the reference recording was not counted on this version.

1.0.0 — 2026-10-02

Major: the first version to be published. The number is the owner's word ("bump to v1.0.0"); against 0.11.2 the program removes its downloads after an installation.

Start.exe), the code, the configs and the documents, 108 MB. Everything else - Python, PyTorch, TensorRT on an RTX card, the detector weights, FFmpeg - is installed by INSTALL WHAT IS NEEDED in the SETUP section; the .NET SDK is needed only to build the window.

(install\download, 3.6 GB) are removed - by the buttons of SETUP and by builder_main.cmd install_all alike; after a failure they stay, so that the next try does not download everything again. Nothing is cut out of what is installed: the owner's rule ("nothing is cut out of what is installed, except the cache and the installation files").

check_queue (counted 3, skipped 1, failed 2, every count on TensorRT, nine guard checks). On a clean copy of the skeleton the window pressed INSTALL WHAT IS NEEDED by itself: 6.1 minutes, "everything is in place", the downloads gone, 11.5 GB installed; verify and check_queue passed there, and install_all run over it removed the downloads the same way.

0.11.2 — 2026-10-02

Patch: a TensorRT engine file that cannot be loaded is built again.

for every card, and the engine file in models\ names the card and the TensorRT it was built with - on another card it is built anew by the first count (checked with a note that named another card: 30 seconds, counted on tensorrt).

(another driver, a damaged file) sent every count to torch, for good - the file stayed. Now it is built again, once; torch is the step down only when that fails too. Checked with half an engine file: one count, and four at once - all on tensorrt.

0.11.1 — 2026-10-02

Patch: the first queue on a fresh installation was counted on torch instead of TensorRT.

on a folder without a TensorRT engine all four exported the same weights into the same file at the same moment, the file came out broken, TensorRT refused it in every one of them and each stepped down to cuda (five times slower, and not the backend the numbers are checked on). Now one process at a time makes the files of a model - the downloaded weights, the ONNX export, the engine (build_turn in engine\detector.py, a lock on models\<weights>.lock that Windows lets go of when its process ends); the others wait and take what was made. The engine file appears whole or not at all.

the weights: all four on tensorrt. Three tests of the turn itself (73 engine tests).

queue was counted on something else: the defect above passed the check unnoticed.

cleaned copy of the folder. Run on the skeleton left by cleanup_project.cmd: the window installed the environment, the model and FFmpeg in six minutes and said "everything is in place"; verify and check_queue passed on what it installed.

environment (it said two parts and installed three).

0.11.0 — 2026-10-02

Minor: the four findings of the audit of 0.10.0 closed; a recording that breaks off is no longer taken for a counted one.

length its header promised (a test clip cut at 55 %: exit code 0, 113 frames of 200, the full length in the summary). Now the count compares the frames it read with the frames the file promised: short by up to a second or one per cent - the run is kept and marked (complete false in summary.json, a mark in RESULTS, a warning in the journal); short by more - nothing is written, the exit code is 1 and the reason comes as an error line. --partial counts what can be read. seconds is the length really read; frames_expected and frames_read stand beside it. The window takes a recording for counted only when the done line came and summary.json is there, and says the engine's reason when it did not.

list and the count each had their own. They are one table now (placement_problem in engine\camera.py), the count refuses whatever the table refuses (a line outside its zone was counted before), and the window holds the same table in the same order (Camera.Broken). tests\placement_cases.json` is put to both.

and the save failed, the window went on to the other recording and the edits were lost. It stays on the recording now, with the edits and the reason.

when the project file is kept in a folder of the user; the window looked there first. Both look in the order of KeepsakeMode now.

guard checks 05 and rules, a cut recording in the queue of check_queue - it must end with counted 3, skipped 1, failed 2.

the piece they stand in, and the chosen one lay over the separator at its right.

0.10.0 — 2026-10-02

Minor: one vehicle, one box; the COUNT section laid out anew.

are not both kept. On the reference recording the near lines came from +6.8 % and +3.3 % of the manual count to +0.8 % (N10) and -0.1 % (P107); trucks on N10 from 101 to 68 against 64 by hand. The counts of every recording change with it: a run made before is marked in RESULTS ("the earlier rule of boxes"), and --boxes-per-class counts the old way. The owner's choice after the comparison.

and the queue below; the queue is the only part of the page that scrolls. THIS MACHINE is a badge: the processor, the memory, the video card with its memory, the driver, Windows, and the engine - the choice of "Count on" while nothing is counted, the backend a recording is really counted on during a count. The note "now this is..." beside the chips is gone.

them; "VEHICLES IN ALL" is "TOTAL". The blocks are filled in, not made anew at every line of the engine.

line.

recordings one at a time; the count now waits for that answer.

changed (a late frame of the old recording took the frame of the new one). The browse scenario of --shots checks it.

under Windows PowerShell); it reports the processor, the memory and Windows as well.

0.9.0 — 2026-10-02

Minor: the TensorRT backend, and the speed settings moved into SETTINGS.

size (full precision), the frame turned into the blob and the head sieved on the card, the suppression of boxes in numpy. On an RTX 5070 with yolo26s the reference recording of 29 minutes is counted in 5.2 minutes against 24.4 on torch (140 frames a second against 30); the counts differ by one vehicle on a movement at most.

the engine cannot be built, auto steps down to cuda, says so in the journal, and the summary of the run names the backend it was really counted on.

about 3 GB), the builder step tensorrt (24). Check-Machine.ps1 decides by the card: an RTX card takes TensorRT, a GTX card counts on PyTorch with CUDA alone; build_env installs it where the check says so. Verify.ps1 and doctor report it. SETUP has the TENSORRT button and marks it for the machine like the others.

moved there from COUNT (they are the work of the program, not a choice of a count).

146, four - 153, six - 149, eight - 136), the counts the same at any number.

(one vehicle, one box). Off by default until it is checked against the reference.

the count really runs on.

0.8.0 — 2026-10-02

Minor: the SETTINGS section; a control of the window moved.

itself works. The PROJECT FILE card (where the project file with the lines is kept) moved there from SETUP.

installed. The owner's division: "in SETUP only what belongs to the backend; what belongs to the work of the program - SETTINGS".

ABOUT.

0.7.0 — 2026-10-02

Minor: the queue counts several recordings at once on an NVIDIA card.

On cuda the queue runs that many engine processes side by side; when one recording is through, the next of the queue takes its place. Other backends count one at a time, and the window says so beside the spinner.

many are through and the share of the whole queue.

second, two 51 over all, four 71, eight 80; the event tables of every piece were the same byte for byte at every level.

written first, a failed or silent engine reported and passed, only STOP ends it.

0.6.0 — 2026-10-02

Minor: the total number of vehicles of a recording.

the movements, as the total column of a survey sheet) and check; the progress and done lines of a count carry it too. A run counted before this version has no total.

CAMERA) counts a flow other lines count further on; it is shown in the results and left out of the total. Of a gate only the entry is in the total.

difference from the manual total when the recording has a reference); a check line is named as one in its row; the list of runs shows the vehicles of a run.

its JSON line.

queue and the guard checks on cuda, the reference recording against the manual count; the cuda baseline is saved in reference\<camera>\.

shows its main flow (P107 away from the camera, N13 and N9 to the right), and the near line P107 is marked as a check line. The counts did not move.

0.5.0 — 2026-10-02

Minor: the project file beside the recordings, and the four findings of the audit of 0.4.0.

audion-traffic-counter.json in the folder of the videos, by the fingerprint of the file. A recording added again, from another folder or on another machine, gets its lines back by itself. SETUP has the choice of the place: beside the recordings (the default) or one file in a folder of the user.

counted by its old file while the editor showed other lines.

that copy; it was copied at the end and could hold lines saved during the count.

lines that cannot be saved; they were lost in silence.

count takes a recording out of the queue or into it; the window showed one queue and counted another.

project file (the "guard" scenario).

0.4.0 — 2026-10-02

Minor: a fallback backend, so the program counts on a machine without CUDA.

provider, on any DirectX 12 video card (Intel, AMD, NVIDIA).

openvino-cpu, cpu. OpenVINO stays as the last resort: the least reliable for a queue of many recordings.

machine has not got is dimmed; beside it, what AUTO means on this machine.

button in SETUP. The environment of a machine without an NVIDIA card gets DirectML in place of OpenVINO; OpenVINO is installed only by its own step or button.

guides Docs\USER_GUIDE_RU.md, Docs\USER_GUIDE_EN.md; F1 opens the guide.

the menu headings in capitals. main.py recordings add --lines NAME.

was not a letter followed by digits).

0.3.0 — 2026-10-02

Minor: the window is rebuilt around the owner's case - lines and gates placed on two hundred recordings one after another, then the queue counts by itself overnight.

of cameras and NEW CAMERA are gone: a recording without lines is drawn on at once. AS THE PREVIOUS ONE copies the lines of the recording above into this one's own file.

matched: it comes without lines and is marked so in RECORDINGS and on the START button.

the edits; the name of the recording and its place in the list stand above the video.

is turned by two arrow buttons in the row of the line (in place of the two name fields and the swap button); a name for the oncoming flow is optional. The arrow on the frame is bolder, and the name of the movement stands beyond its head.

engine failed on is reported and the next one starts, an engine silent for 15 minutes is stopped and the next one starts; unsaved lines are written before the count; the last line says counted / skipped / failed. Windows is kept from idle sleep while it runs.

(Detector.prepare). Created lazily by the worker threads, they now and then left the engine hung at the start on Intel graphics.

main.py recordings add | list and main.py frames (the middle frame of every recording with a coordinate grid, and with its lines drawn). A file config\cameras\<id>.json is the lines of the recording of that id. The window opens a recording on its middle frame.

being counted).

0.2.0 — 2026-10-02

Minor: a new capability of the window, and the place of the results changed with it.

output\<recording>\<yyyyMMdd-HHmmss>_<model>\ (events.csv, summary.json, the camera file the run was counted with) instead of one result per recording that the next count replaced. A cancelled count leaves no folder. summary.json carries finished.

can be deleted); on the left the chosen run by movement and class and its manoeuvres; on the right, as a card of its own, the runs side by side - a column per run, the manual count when the recording has a reference, the difference in percent in colour.

БЫСТРО / ОБЫЧНО / ТОЧНЕЕ; each has a detailed tooltip: parameters, size of the weights, mAP on COCO, when to take it.

delay of every tooltip.

0.1.0 — 2026-10-01

The first version: nothing was released before it.

two named directions, gates and manoeuvres, backends cuda / openvino / cpu, the commands doctor, count, trails, compare.

Russian and English; dark and light; the video with lines, gates and zones drawn and stretched with the mouse; FFplay with the lines over the video.

runtime and of portable FFmpeg.

FFmpeg release follows the driver, install_all installs a clean folder; the SETUP section marks in green only what this machine needs and installs it with one button.

All projects