使用语义搜索
Frigate 中的语义搜索功能允许您通过图像本身、用户定义的文本描述或自动生成的描述来查找您的审查项目中的跟踪目标。该功能通过为跟踪目标的图像和文本描述创建 嵌入 (即数值向量表示)来实现。通过比较这些嵌入,Frigate 评估它们的相似性,从而提供相关的搜索结果。
Frigate 支持使用 Jina AI 的 CLIP 模型 来创建嵌入,该模型在本地运行。嵌入随后会保存到 Frigate 的数据库中。
语义搜索可以通过 Frigate 用户界面中的 浏览 视图访问。
最低系统要求
语义搜索通过在您的系统上本地运行一个大型 AI 模型来工作。像树莓派这样的小型或性能不足的系统可能无法可靠运行语义搜索,甚至完全无法运行。
使用语义搜索至少需要 8GB 的内存。虽然 GPU 不是严格必需的,但它会显著提升性能,尤其是在仅使用 CPU 的系统上。
为了获得最佳性能,建议使用 16GB 或更多的内存以及专用 GPU。
配置
语义搜索默认是禁用的,必须在配置文件中启用后才能使用。语义搜索是一个全局配置设置。
semantic_search:
enabled: True
reindex: False
通过在 semantic_search
配置中添加 reindex: True
,可以从数据库中现有的跟踪目标重新索引嵌入数据库。根据您的跟踪目标数量,这可能需要很长时间才能完成,并且在索引过程中可能会使 CPU 满载。请确保在重新启动 Frigate 之前将配置设置回 False
。
如果您是首次启用搜索功能,请注意 Frigate 不会自动为旧的跟踪目标建立索引。您需要启用 reindex
功能来完成此操作。
Jina AI CLIP
视觉模型能够将图像和文本嵌入到相同的向量空间中,从而实现 图像 图像 -> 文本
和 文本 -> 图像
的相似性搜索。Frigate 使用此模型对跟踪目标的缩略图进行编码,并将其存储在数据库中。当通过搜索框中的文本搜索跟踪目标时,Frigate 将执行 文本 -> 图像
的相似性搜索。当在跟踪目标详细信息面板中点击“查找相似”时,Frigate 将执行 图像 -> 图像
的相似性搜索,以检索最匹配的缩略图。
文本模型用于嵌入跟踪目标的描述并对其执行搜索。描述可以在搜索页面上创建、查看和修改,点击每个审查项目左上角的灰色跟踪目标剪辑即可。有关如何自动生成跟踪目标描述的更多信息,请参阅 生成式 AI 文档。
可以通过设置 model_size
配置选项为small
或 large
来选择不同权重的 CLIP 模型:
semantic_search:
enabled: True
model_size: small
- 配置
large
模型将使用完整的 Jina 模型,并会自动在 GPU 上运行(如果适用)。 - 配置
small
模型将使用量化版本的模型,该模型占用更少的内存并在 CPU 上运行,嵌入质量的差异非常小。
GPU 加速
CLIP 模型以 ONNX 格式下载,large
模型可以在 GPU 硬件可用时进行加速。这取决于所使用的 Docker 构建。
semantic_search:
enabled: True
model_size: large
如果使用了适合您 GPU 的正确构建,并且配置了 large
模型,GPU 将被自动检测并使用。
注意: 目标检测和语义搜索是独立的功能。如果您想在语义搜索中使用 GPU,必须选择适合您 GPU 的 Frigate Docker 镜像。
-
AMD
- 在
-rocm
Frigate 镜像中,ROCm 将自动被检测并用于语义搜索。
- 在
-
Intel
- 在默认的 Frigate 镜像中,OpenVINO 将自动被检测并用于语义搜索。
-
Nvidia
- 在
-tensorrt
Frigate 镜像中,Nvidia GPU 将自动被检测并用于语义搜索。 - 在
-tensorrt-jp(4/5)
Frigate 镜像中,Jetson 设备将自动被检测并用于语义搜索。
- 在
使用和最佳实践
- 语义搜索与搜索页面上的其他过滤器结合使用。结合传统过滤器和语义搜索以获得最佳结果。
- 当搜索场景中的特定目标时,使用缩略图搜索类型。当尝试辨别目标的意图时,使用描述搜索类型。
- 由于 Frigate 使用的 AI 模型的训练方式,文本和图像嵌入距离的比较通常意味着在多模态(
缩略图
和描述
)搜索中,匹配描述
的结果会优先显示,即使缩略图
嵌入可能更匹配。尝试调整“搜索类型”设置以帮助找到您想要的内容。请注意,如果您仅为特定目标或防区生成描述,这可能会导致搜索结果优先显示带有描述的目标,即使没有描述的目标更相关。 - 使您的搜索语言和语气与您要查找的内容紧密匹配。如果您使用缩略图搜索,将查询短语作为图像标题。搜索“红色汽车”可能不如搜索“在阳光明媚的日子里,一辆红色轿车行驶在居民区街道上”效果好。
- 缩略图的语义搜索在匹配占据大部分画面的大型主体时效果更好。像“猫”这样的小物体通常效果不佳。
- 多尝试!找到一个您想测试的跟踪目标,开始输入关键词和短语,看看哪些对您有效。