监控录像的相似度搜索通过比较从视频帧中提取的视觉特征来查找与查询图像或片段匹配或近似匹配的内容。该过程通常包括三个阶段:特征提取、索引和查询。首先,使用卷积神经网络 (CNN) 等计算机视觉模型将监控录像的每一帧或每一段转换为数值表示(特征向量)。这些向量捕捉形状、颜色或纹理等模式。在索引阶段,这些向量存储在针对快速检索进行优化的数据库中。执行查询时,系统计算查询的特征向量与索引向量之间的相似度,并按相似度得分(例如,使用余弦相似度或欧几里德距离)返回排名结果。这使得能够高效地在大量录像中识别物体、人物或场景。
对于特征提取,通常使用 ResNet 或 EfficientNet 等模型。这些 CNN 在大型图像数据集上训练,以识别通用视觉特征,这些特征可以重新用于监控任务。例如,显示一个穿红衬衫的人的帧可以编码为一个 512 维向量,表示他们的衣服颜色、姿势和面部特征。对这些向量进行索引需要专门的数据库,例如 FAISS 或 Annoy,它们使用树形结构或哈希等技术对相似向量进行分组。这避免了将查询与每一帧进行线性比较,这对于数 TB 的录像来说计算成本过高。在查询过程中,近似最近邻 (ANN) 算法通过查找“足够接近”的匹配项而不是精确匹配项来平衡速度和准确性。例如,搜索嫌疑人的面部可能涉及从参考图像中提取其面部特征,并扫描购物中心内多个摄像头的索引录像。
挑战包括处理规模、实时处理和环境变化。监控系统通常生成 PB 级数据,需要分布式存储和并行处理(例如,使用 Apache Spark)。实时使用案例,如跟踪移动车辆,需要低延迟的索引和查询,这可以通过边缘计算或 HNSW 等优化的 ANN 库来解决。光照变化或摄像头角度等环境因素会降低准确性。数据增强(例如,模拟夜间录像)或度量学习(训练模型以最小化类内方差)等技术可提高鲁棒性。例如,系统可以使用三元组损失来确保一个人的向量在不同摄像头角度下保持相似。开发人员通常将这些方法与过滤(例如,基于时间的约束)结合使用,以缩小结果范围,从而确保在法医分析或实时监控等应用中的实际性能。