生成式AI
生成式AI可用于根据跟踪对象的缩略图自动生成描述性文本。这有助于Frigate中的语义搜索,为跟踪对象提供更多上下文信息。描述可通过Frigate界面中的浏览页面访问,点击跟踪对象的缩略图即可查看。
描述请求会在跟踪对象生命周期结束时自动发送给您的AI提供商,也可以选择在帧发生显著变化后提前发送,例如用于更实时的通知场景。描述也可以通过Frigate界面手动重新生成。请注意,如果您在跟踪对象结束前手动输入描述,该描述将被生成的响应覆盖。
配置
生成式AI可以为所有摄像头启用,或仅为特定摄像头启用。目前有3种原生提供商可与Frigate集成。支持OpenAI标准API的其他提供商也可使用。请参阅下面的OpenAI部分。
要使用生成式AI,您必须在Frigate配置的全局层级定义一个提供商。如果您选择的提供商需要API密钥,可以直接将其粘贴在配置中,或存储在环境变量中(以FRIGATE_
为前缀)。
genai:
enabled: True
provider: gemini
api_key: "{FRIGATE_GEMINI_API_KEY}"
model: gemini-1.5-flash
cameras:
front_camera:
genai:
enabled: True # <- 为 front camera 摄像头启动生成式AI功能
use_snapshot: True
objects:
- person
required_zones:
- steps
indoor_camera:
genai:
enabled: False # <- 为 indoor_camera 摄像头禁用生成式AI功能
默认情况下,系统会为所有追踪到的物体和所有划定区域生成描述文本。但您也可以通过指定objects
和required_zones
参数,选择仅为特定追踪物体或区域生成描述。
此外,您还可以选择使用快照生成描述(需先启用快照功能),只需将use_snapshot
设置为True
即可。默认情况下该选项为False
,此时系统会将从detect
视频流中采集的未压缩图像(覆盖物体整个生命周期)发送至AI模型进行处理。当物体追踪生命周期结束时,系统仅会保存一张经过压缩裁剪的缩略图作为该追踪物体的存档。
在需要重新生成追踪物体描述时,使用快照功能可能更为合适——因为相较于最终保存的压缩缩略图,快照能为AI模型提供质量更高的图像(尽管AI通常会对图像进行降采样处理)。但需注意,使用快照也存在局限性:由于仅向AI服务提供商发送单张图像,这将影响大模型对物体运动轨迹或方向的判断能力。
Ollama
不建议在CPU上使用Ollama,高推理时间会使生成式AI变得不实用。
Ollama允许您自托管大型语言模型并保持所有内容在本地运行。它在llama.cpp上提供了一个很好的API。强烈建议在配备Nvidia显卡的机器或Apple silicon Mac上托管此服务器以获得最佳性能。
大多数7b参数的4位视觉模型都能在8GB显存中运行。也有可用的Docker容器。
并行请求也有一些注意事项。您需要设置OLLAMA_NUM_PARALLEL=1
并选择适合您硬件和偏好的OLLAMA_MAX_QUEUE
和OLLAMA_MAX_LOADED_MODELS
值。请参阅Ollama文档。
支持的模型
您必须使用支持视觉的图生文模型。当前模型变体可在其模型库中找到。在撰写本文时,这包括llava
、llava-llama3
、llava-phi3
和moondream
。请注意,Frigate不会自动下载您在配置中指定的模型,您必须先将模型下载到您的Ollama本地实例,例如在Ollama服务器/Docker容器上运行ollama pull llava:7b
。请注意,Frigate配置中指定的模型必须与下载的模型标签匹配。
您应至少有8GB可用RAM(或在GPU上运行时为显存)来运行7B模型,16GB运行13B模型,32GB运行33B模型。
配置
genai:
enabled: True
provider: ollama
base_url: http://localhost:11434
model: llava:7b
Google Gemini
Google Gemini有一个免费层级,允许每分钟15次查询到API,这对于标准Frigate使用来说已经足够。