Signals on a BIM model
A three-floor technical college building from the Autodesk Revit advanced architectural sample (IFC 2x3): classrooms, computer labs, library, cafeteria and lobby. Every area, wall and door below was read from the file. Only the camera is a model.
From the model to the measured floor
BIMstream delivers the building as an IFC: every wall, door, room name and area, in real dimensions.
Signals computes the camera plan from the model: where each camera goes, what it sees, what is behind a wall, and how many pixels land on each square meter of floor. Rooms are classed before anyone visits: measured, counted at the door, or out.
The same model and camera plan render labeled footage of this building from the planned camera positions, so the detector and counter are tuned to this site's rooms, angles and light before a camera is mounted.
Existing cameras go in first, the plan fills the gaps. Each camera's picture is mapped to floor coordinates from the model, not from a calibration walk.
Every count Signals reports lands in a named room with an exact area: people per square meter, queue length at a counter, minutes a booked room sits empty. Accuracy is measured per room against the precision floor set in the plan.
Where the precision comes from
Three things are known before install that are normally discovered after it. Pixel density: the plan states, for every square meter, whether a camera can count people there or only tell that someone is present, so the customer is promised counts only where the geometry supports them. Occlusion: walls and columns are in the model, so a blind spot is a computed fact, not a surprise on day one. Ground truth: the floor plane and room boundaries come from the model, so a count is attributed to a room by geometry rather than by a hand-drawn zone, and a detection that lands inside a wall is caught as an error rather than counted.
What the model gives the training run
A building model with a camera plan is a complete description of a scene: camera position, lens and mount height, the floor plane, every occluder, and a name for every room. That is what a renderer needs to produce footage of this building with people in it, and because the people are placed by the renderer, every frame comes with exact boxes, floor positions and per-room counts at no labeling cost. The detector and tracker are fine-tuned on that footage for this site, then checked against real footage once cameras are up. The working plan is to render from the planned camera positions first, install, then keep the real footage and its corrected counts as the site's own training set.
Across sites the same thing compounds. Every BIM model that goes through this process adds a building type, a camera geometry and a labeled set to the corpus, and the retraining pipeline runs the same way on all of it. That corpus and the pipeline are the durable asset; the base models underneath are swappable. This run is not done yet: the renders and the fine-tuning are the next step, and the numbers on this page are geometry only.
The camera plan, floor by floor
Coverage by space
| Space | m² | Count quality | Presence |
|---|---|---|---|
| Corridor | 138 | 92% | 96% |
| Lobby | 327 | 97% | 99% |
| Lounge | 38 | 93% | 94% |
| Lounge | 41 | 98% | 98% |
| Cafeteria | 147 | 94% | 94% |
| Corridor | 55 | 95% | 97% |
| Circulation | 642 | 86% | 89% |
| Corridor | 138 | 43% | 81% |
| Lobby | 327 | 54% | 95% |
| Lounge | 38 | 0% | 0% |
| Lounge | 41 | 16% | 29% |
| Cafeteria | 147 | 0% | 12% |
| Corridor | 55 | 68% | 99% |
| Circulation | 642 | 43% | 76% |
Cameras added one at a time
| Cameras | Count quality | Presence |
|---|---|---|
| 1 | 19% | 31% |
| 2 | 34% | 40% |
| 3 | 46% | 49% |
| 4 | 53% | 63% |
| 5 | 58% | 69% |
| 6 | 65% | 70% |
| 7 | 69% | 75% |
| 8 | 73% | 78% |
| 9 | 77% | 81% |
| 10 | 79% | 84% |
| 11 | 81% | 85% |
| 12 | 83% | 87% |
| 13 | 84% | 88% |
| 14 | 86% | 89% |
| 15 | 87% | 90% |
| 16 | 88% | 91% |
Camera list
| Id | Lens | Heading |
|---|---|---|
| C01 | std (85° lens) | 48° |
| C02 | std (85° lens) | 131° |
| C03 | std (85° lens) | -25° |
| C04 | std (85° lens) | 147° |
| C05 | std (85° lens) | -149° |
| C06 | std (85° lens) | 41° |
| C07 | std (85° lens) | -50° |
| C08 | wide (105° lens) | 53° |
| C09 | std (85° lens) | -156° |
| C10 | wide (105° lens) | 40° |
| C11 | wide (105° lens) | -137° |
| C12 | wide (105° lens) | 54° |
| C13 | wide (105° lens) | 60° |
| C14 | wide (105° lens) | 142° |
| C15 | wide (105° lens) | 205° |
| C16 | wide (105° lens) | -147° |
| B01 | wide (105° lens) | 55° |
| B02 | std (85° lens) | -207° |
| B03 | std (85° lens) | 78° |
| B04 | wide (105° lens) | 142° |
Door-line counters
| Id | Room |
|---|---|
| D01 | Conference |
| D02 | Classroom |
| D03 | Classroom |
| D04 | Classroom |
| D05 | Classroom |
| D06 | Conference |
| D07 | Classroom |
| D08 | Classroom |
| D09 | Conference |
| D10 | Admin |
| D11 | Office |
| D12 | Administration |
| D13 | Classroom |
| D14 | Classroom |
Coverage by space
| Space | m² | Count quality | Presence |
|---|---|---|---|
| Lounge | 32 | 87% | 87% |
| Lounge | 38 | 93% | 96% |
| Library | 122 | 94% | 97% |
| Lobby | 285 | 95% | 99% |
| Cafeteria | 35 | 91% | 97% |
| Lounge | 133 | 97% | 97% |
| Corridor | 138 | 90% | 95% |
| Corridor | 116 | 79% | 83% |
| Circulation | 586 | 87% | 93% |
| Lounge | 32 | 0% | 0% |
| Lounge | 38 | 0% | 19% |
| Library | 122 | 0% | 0% |
| Lobby | 285 | 79% | 98% |
| Cafeteria | 35 | 0% | 0% |
| Lounge | 133 | 0% | 0% |
| Corridor | 138 | 46% | 92% |
| Corridor | 116 | 41% | 59% |
| Circulation | 586 | 59% | 85% |
Cameras added one at a time
| Cameras | Count quality | Presence |
|---|---|---|
| 1 | 16% | 23% |
| 2 | 27% | 34% |
| 3 | 38% | 45% |
| 4 | 48% | 53% |
| 5 | 54% | 66% |
| 6 | 62% | 75% |
| 7 | 68% | 76% |
| 8 | 72% | 79% |
| 9 | 75% | 82% |
| 10 | 78% | 85% |
| 11 | 81% | 88% |
| 12 | 82% | 90% |
| 13 | 84% | 91% |
| 14 | 86% | 92% |
| 15 | 87% | 92% |
| 16 | 88% | 92% |
Camera list
| Id | Lens | Heading |
|---|---|---|
| C01 | std (85° lens) | 46° |
| C02 | wide (105° lens) | 32° |
| C03 | wide (105° lens) | 53° |
| C04 | wide (105° lens) | -45° |
| C05 | std (85° lens) | 33° |
| C06 | std (85° lens) | -28° |
| C07 | std (85° lens) | 147° |
| C08 | wide (105° lens) | 53° |
| C09 | wide (105° lens) | -51° |
| C10 | wide (105° lens) | 115° |
| C11 | wide (105° lens) | 143° |
| C12 | wide (105° lens) | -117° |
| C13 | wide (105° lens) | 90° |
| C14 | std (85° lens) | -113° |
| C15 | wide (105° lens) | 145° |
| C16 | wide (105° lens) | 129° |
| B01 | wide (105° lens) | 54° |
| B02 | wide (105° lens) | -36° |
| B03 | std (85° lens) | 3° |
| B04 | wide (105° lens) | -45° |
Door-line counters
| Id | Room |
|---|---|
| D01 | Classroom |
| D02 | Computer Lab |
| D03 | Classroom |
| D04 | Copy/Print |
| D05 | Classroom |
| D06 | Drafting |
| D07 | Computer Lab |
| D08 | Classroom |
| D09 | Classroom |
| D10 | Computer Lab |
| D11 | Copy/Print |
| D12 | Office |
| D13 | Office |
| D14 | Administration |
| D15 | Administration |
| D16 | Classroom |
| D17 | Classroom |
| D18 | Classroom |
Coverage by space
| Space | m² | Count quality | Presence |
|---|---|---|---|
| Lounge | 38 | 93% | 93% |
| Lobby | 323 | 97% | 99% |
| Corridor | 55 | 95% | 100% |
| Circulation | 599 | 85% | 90% |
| Lounge | 38 | 0% | 11% |
| Lobby | 323 | 74% | 98% |
| Corridor | 55 | 43% | 97% |
| Circulation | 599 | 58% | 89% |
Cameras added one at a time
| Cameras | Count quality | Presence |
|---|---|---|
| 1 | 29% | 45% |
| 2 | 50% | 69% |
| 3 | 59% | 74% |
| 4 | 65% | 81% |
| 5 | 71% | 85% |
| 6 | 76% | 87% |
| 7 | 79% | 87% |
| 8 | 82% | 90% |
| 9 | 85% | 90% |
| 10 | 86% | 91% |
Camera list
| Id | Lens | Heading |
|---|---|---|
| C01 | std (85° lens) | -47° |
| C02 | wide (105° lens) | 50° |
| C03 | std (85° lens) | 159° |
| C04 | wide (105° lens) | 142° |
| C05 | wide (105° lens) | 53° |
| C06 | std (85° lens) | 36° |
| C07 | wide (105° lens) | 133° |
| C08 | wide (105° lens) | -114° |
| C09 | std (85° lens) | 130° |
| C10 | wide (105° lens) | -47° |
| B01 | wide (105° lens) | 50° |
| B02 | wide (105° lens) | -47° |
| B03 | std (85° lens) | 36° |
| B04 | wide (105° lens) | -114° |
Door-line counters
| Id | Room |
|---|---|
| D01 | Classroom |
| D02 | Classroom |
| D03 | Classroom |
| D04 | Classroom |
| D05 | Classroom |
| D06 | Classroom |
| D07 | Classroom |
| D08 | Classroom |
| D09 | Media Review |
| D10 | Media Review |
| D11 | Administration |
| D12 | Advisors |
| D13 | Open Office |
| D14 | Conference |
| D15 | Classroom |
| D16 | Classroom |
How the camera is modeled
One camera type throughout: a 4 MP sensor, 2688 pixels wide, mounted at 2.8 m, with either a 105° or an 85° lens chosen per position. Pixel density on the floor falls with distance; the two thresholds are the IEC 62676-4 tiers for detection (25 px/m, presence) and observation (63 px/m, enough to count people and read posture). Identification tiers are not used anywhere in the plan. A 105° lens holds count quality to 16.4 m and presence to 41.3 m; the 85° lens holds count quality to 23.3 m.
Walls, columns and curtain wall panels are sectioned at 1.5 m above each floor and block the line of sight. Placement runs a greedy search over the corners of every open space, adding the camera that gains the most count-quality floor each round, and stops when a camera would add less than 6 m². The corridor-only layout is the same search restricted to the entrance and corridor, four cameras, which is where a conventional security install puts them.
What this building would report
Lobby, corridors and circulation: arrivals by hour, flow between wings, after-hours presence. Cafeteria: queue at the counter and seats in use. Library and lounges: seats in use by hour and dwell. Classrooms, computer labs, offices and conference rooms: occupied or not and how many, from a counter on the door line, with no camera inside a teaching or office space. Toilets, stairs, storage and plant rooms are out of scope by policy.
Caveats. The IFC records every interior partition as a wall; glass partitions would not block a camera the way the model assumes, so real coverage in glazed offices is higher than shown. Furniture, monitors and people are not in the model and will occlude at floor level; count quality assumes the camera sees heads and shoulders at 2.8 m. Camera counts here are an upper bound for the layout, not a bill of materials. The site's own cameras were not modeled because the file has none; on a BIMstream job the existing cameras would be placed first and only the gaps filled.
Where this goes with BIMstream
BIMstream delivers the model and the install. Signals turns the model into a camera plan, a coverage map, a room-by-room list of what will be measured and a training set for the site, all before anyone visits. The customer sees which rooms get counts, which get presence, and which are left out on purpose, with the pixel density behind every promise. After install the same model is the coordinate frame for every number Signals reports. Sold together: model, plan, train, install, measured floor.
Source model: rac_advanced_sample_project.ifc, IFC 2x3, Autodesk Revit architectural sample, public. Computed 15 Sep 2026 with ifcopenshell 0.8.5. Confidential. Internal to YYZdata Inc. Not for distribution, in whole or in part, without written consent.