I combined the thermal and power logging programs from the previous blog into a single program, cm5_power_temp_logger.py.
I also examined the Frigate API to see what type of statistics were accessible through that interface.
I think the most relevant stats for me are related to the cameras and detectors.
Here is a partial JSON dump for a run with a single camera and cpu detector:
"cameras": {
"cam_1": {
"camera_fps": 5.1,
"process_fps": 2.3,
"skipped_fps": 2.9,
"detection_fps": 15.5,
"detection_enabled": true,
"pid": 612,
"capture_pid": 671,
"ffmpeg_pid": 711,
"audio_rms": 0,
"audio_dBFS": 0
}
},
"detectors": {
"cpu": {
"inference_speed": 62.58,
"detection_start": 1789593386.910527,
"pid": 540
}
}
I created a program with AI help to extract a few parameters for benchmarking. In checking Frigate performance, I control the frame input rate and adjust it to a rate that Frigate can maintain for my configuration. The cameras can support 20-30 FPS depending on the image resolution, but 5 FPS for Frigate processing of multiple cameras is more realistic in my experience with a Coral accelerator. So, the two metrics that I am going to watch are skipped frames for the input processing and inference FPS for detection. I'm also going to get the CM5 and Hailo processor utilization numbers and temperatures. This is just a correlation check between the 2 programs (I should merge this with the thermal and power logger, but I'm already behind schedule).
To ensure that I get a repeatable comparison between configurations, I am going to use recorded video rather than live cameras as the input streams to Frigate. To approximate my real setup, I'm using video recorded from one of my cameras
The video below shows the motion detection (red boxes) input fed to the detector and a detection event (mail delivery). Most of the motion picked up in the video is due to leaves blowing in wind.
Here is the 8 camera view in Frigate (I am using the same video duplicated 8 times):

For the first set of benchmarks I am going to compare the following Frigate configurations using CPU only detection:
- Idle (no cameras)
- 1 camera
- 2 cameras
- 4 cameras
- 8 cameras
I did 10 minute runs with at least 15-20 minutes of cooldown afterwards. Data plots did not show any anomalous behavior and data was stable after 5 minutes after turn on.
Here is the set of plots from the 4 camera run;










For comparison purposes I took statistics from the middle 5 minutes of each run.
| Idle No Cameras | CPU Detect 1 Cam | CPU Detect 2 Cam | CPU Detect 4 Cam | CPU Detect 8 Cam | |||||||||||||||
| Power W | Temp C | Load | Power W | Temp C | Load | Power W | Temp C | Load | Power W | Temp C | Load | Power W | Temp C | Load | |||||
| Avg | 2.90 | 46.85 | 0.03 | 6.70 | 65.94 | 3.22 | 7.17 | 65.59 | 4.09 | 7.22 | 65.88 | 4.49 | 7.52 | 67.39 | 6.66 | ||||
| Min | 2.31 | 45.75 | 0.00 | 4.63 | 63.90 | 3.01 | 5.76 | 63.90 | 3.48 | 5.15 | 63.90 | 3.92 | 5.55 | 65.55 | 5.89 | ||||
| Max | 4.60 | 48.50 | 0.16 | 7.96 | 68.30 | 3.70 | 8.76 | 67.20 | 4.96 | 8.60 | 67.75 | 4.97 | 8.56 | 68.30 |
7.67 |
||||
| CPU Detect 1 Cam | CPU Detect 2 Cam | CPU Detect 4 Cam | CPU Detect 8 Cam | ||||||||
| Detection_FPS | Skipped_FPS | Detection_FPS | Skipped_FPS | Detection_FPS | Skipped_FPS | Detection_FPS | Skipped_FPS | ||||
| Avg | 15.6 | 1.2 | 16.1 | 5.9 | 15.3 | 16.2 | 12.7 | 37.4 | |||
| Min | 15.4 | 0.4 | 15.6 | 5.5 | 14.4 | 15.8 | 12.3 | 36.7 | |||
| Max | 15.8 | 1.6 | 16.2 | 6.5 | 16.0 | 17.0 | 12.8 | 38.5 | |||
I was surprised that there was not a large increase in power going from 1 camera to 8 cameras. The Load column represents the 1 minute average load reported from Linux (Frigate plus the OS overhead and background programs). On a 4 core processor like the CM5, a Load value of 4 represents the full utilization of all the cores. A value above 4 indicates that some processes are being pushed onto a run queue and are not being executed. This is an indication of CPU overload and will manifest itself differently depending on what processes are being queued and for how long. For the 1 camera case, the Load average is 3.22 - the CPU is already highly utilized, so the incremental power increase going to additional cameras doesn't scale. The max power is about the same for the 2 to 8 camera cases. But if you look at the max Load, it has increased significantly for the 8 camera case and delays are very visible in the Frigate UI and the Detection_FPS shows a 25% decrease.
Next step is to install the Hailo-8L accelerator and run the same benchmarks. It appears that for CPU detection - even running only 2 cameras might cause intermittent issues.