对象过滤器
Frigate提供了多种对象过滤器来降低误报率。
对象分数
在配置中设置对象过滤器时,任何低于min_score
(最低分数)的检测都会被忽略为误报。threshold
(阈值)基于被追踪对象分数历史记录的中位数计算(补零至3个值)。假设min_score
设为0.6,threshold
设为0.85,以下是各帧的检测情况:
帧数 | 当前分数 | 分数历史记录 | 计算分数 | 是否检测到对象 |
---|---|---|---|---|
1 | 0.7 | 0.0, 0, 0.7 | 0.0 | 否 |
2 | 0.55 | 0.0, 0.7, 0.0 | 0.0 | 否 |
3 | 0.85 | 0.7, 0.0, 0.85 | 0.7 | 否 |
4 | 0.90 | 0.7, 0.85, 0.95, 0.90 | 0.875 | 是 |
5 | 0.88 | 0.7, 0.85, 0.95, 0.90, 0.88 | 0.88 | 是 |
6 | 0.95 | 0.7, 0.85, 0.95, 0.90, 0.88, 0.95 | 0.89 | 是 |
在第2帧中,分数低于min_score
值,因此Frigate会忽略它并记为0.0。计算分数是分数历史记录的中位数(至少补零至3个值),只有当这个计算分数超过threshold
时,对象才会被标记为真实检测。在上例中,这种情况发生在第4帧。
最低分数
任何低于min_score
的检测都会立即被丢弃且不会被追踪,因为它被视为误报。如果min_score
设置过低,可能会导致误报被检测和追踪,从而干扰对象追踪器并浪费资源。如果min_score
设置过高,则可能会丢弃分数较低的真实检测,如距离较远或被部分遮挡的对象,这也可能干扰追踪器并导致有效追踪对象丢失或断开。
阈值
threshold
用于确定对象是否为真实检测。当对象检测分数 >= threshold
时,该对象被视为真实检测。如果threshold
设置过低,一些高分误报可能会创建追踪对象。如果threshold
设置过高,则可能会错过真实检测,因为对象分数可能永远达不到足够高的值。
对象形状
也可以通过对象的形状特征来过滤误报。
对象面积
min_area
和max_area
根据对象边界框的面积进行过滤,可用于排除超出预期大小范围的误报。例如,当一片叶子被检测为狗,或一棵大树被检测为人时,可以通过添加min_area
/max_area
过滤器来减少这类误报。这些值可以以像素为单位,也可 以表示为帧的百分比(例如,0.12表示帧的12%)。
对象比例
min_ratio
和max_ratio
值与检测对象的宽高比(以像素为单位)进行比较。如果比例超出此范围,对象将被忽略为误报。这可以忽略比例过高(又矮又宽)或过低(又高又窄)的对象。
从概念上讲,比例为1表示正方形,0.5表示"高瘦"的框,2表示"矮胖"的框。如果min_ratio
设为1.0,任何高度大于宽度的对象都会被忽略。同样,如果max_ratio
设为1.0,则任何宽度大于高度的对象都会被忽略。
其他工具
区域
必需区域是减少误报的强大工具,特别是对于天空中或其他不感兴趣区域的误报。必需区域只会为进入该区域的对象创建追踪对象。
对象遮罩
对象过滤器遮罩是最后的手段,但当误报出现在相对固定的位置且无法通过大小或形状过滤时,它们会很有用。