暴力监测应用开发:Ollama+Dify工作流实战
拿一个暴力场景做个测试,把图片作为工作流输入(画面血腥,已做打码处理)。
工作流被触发后,机器人会依次执行任务,并把结果反馈给用户。
可以看到,当监测到暴力犯罪场景时,钉钉群里确实收到了推送消息。
这个工作流的能力不止于此。对于暴力但不构成犯罪的场景,比如拳击比赛,它也能区分。下图是一场拳击比赛的过程(可能有人会感到不适,已做打码处理)。
工作流成功识别出这是拳击赛场景,归类为非暴力犯罪,钉钉机器人自然也没有触发。
顺便看看这个工作流用到的三个LLM,值得一提的是它们文件体积都不大:
1. **场景描述LLM**:用的是moondream:1.8B,专门负责图片识别,文件大小约3.7GB。
2. **翻译LLM**:用的是qwen2:1.5B,中文能力比较强,文件大小约3.1GB。
3. **性质分类LLM**:用的是phi3:3.8b-mini,逻辑判断能力不错,文件大小约7.6GB。
从成本角度看,整个工作流调用的都是本地大模型,全是开源产品,主要成本就是设备采购和人员开发费用,算是一个经济实惠的方案。
至于怎么用Dify来创建这个应用,后面Dify使用教程里会详细介绍。关于这个应用的扩展方向,有几个设想值得讨论:可以结合自动化工具对摄像头进行自动截图,利用Dify的API功能调用前述工作流来实现自动视频监测;也可以对分类器进行扩展,让它覆盖更广泛的应用场景。
---
## Ollama调用图像理解大模型
最近经常有人问:LLM能读懂图片内容吗?这就涉及到LLM的多模态能力。所谓多模态,就是大模型能理解输入的语音、图片、视频,以及输出语言、图片、视频。目前主流大厂都有相应的模型推出,比如ChatGPT、阿里通义等。
那在本地运行多模态模型,需要很大的硬件投入吗?其实不用。
用Ollama就能在本地运行具备图片理解能力的模型。只需要在Ollama官网的Models页面,找到带Vision标签的模型就行了,比如lla va、moondream等。下面以moondream为例。
moondream是一个开源项目,目前在GitHub上有4.7k星。1.8B版本是moondream的第二代模型,虽然参数只有18亿,但能力相当突出。下面是官方示例:
第一张图,moondream识别出动漫角色在桌上吃一个大大的汉堡,还识别出头发是白色的。第二张图,它识别出这是计算器服务器架子,背后是砖墙。
接下来看看怎么使用moondream模型。首先拉取并运行模型:
```
Ollama run moondream:1.7b-v2-fp16
```
这是一张猫咪躲在纸箱里的图片。
安装好模型后,只需输入提示词,再把图片拖进命令行窗口,模型就能对图片内容进行描述。
下面是模型的反馈:
```
The image features a black and white cat sitting inside an open cardboard box. The cat is peeking out from the top of the box, giving us a curious look at its unusual situation. This playful scene showcases the adorable nature of cats as they explore new spaces or objects to snuggle in.
翻译:图片展示了一只黑白相间的猫坐在一个打开的纸板箱里。这只猫从箱子顶部探出头来,用好奇的眼神看着它所处的不寻常情境。这个俏皮的场景展示了猫在探索新空间或寻找蜷缩对象时的可爱天性。
```
从回复来看,模型对图片的描述既具体又生动。感兴趣的话,可以用Ollama下载一个Vision模型亲自试试。
---
以上就是本文的全部内容。