今天给大家介绍一个强大的开源多模态模型 - DeepSeek 的 Janus 系列的最新版 Janus-Pro 。它不仅能看懂图片、回答问题,还能根据文字描述生成图片。简单来说,它集成了类似GPT-4V的看图能力和Stable Diffusion的画图能力。
本篇主要分享Janus的一些优缺点、使用方法、部署相关以及整合包。
什么是Janus?
DeepSeek开源的多模态大模型,简单点说就是一个可以理解图片内容和生成图片的模型。目前有三个版本的模型,分别是:Janus、JanusFlow、Janus-Pro。
详情可阅读:DeepSeek发布统一多模态理解与生成模型:从 JanusFlow 到 Janus-Pro
Janus实测
颜色识别
这里我上传了一张不同颜色的安全帽图片,并让Janus去解释这张图。
Janus的回复
这张图片展示了四顶安全帽,分别是红色、白色、黄色和蓝色的。每顶安全帽都有一个通风口,用于通风和散热。这些安全帽通常用于建筑工地、工厂或其他需要佩戴安全装备的工作环境。图片背景为白色,使得安全帽的颜色更加显眼。
可以看到Janus能够准确的识别出安全帽的颜色和数量。
物体识别
这里我找了一张数控机床的图片,扔给Janus看它是否能理解。
Janus的回复
这是一台工业设备,具体来说是一台数控机床(CNC机床)。机床的正面有一个控制面板,上面有几个按钮和显示屏,用于操作和监控机床的运行。机床的左侧有一个可调节的托盘,用于放置工件或材料。机床的顶部有一个冷却风扇,用于保持工作区域的温度。机床的侧面和前面板上有一些显示屏和指示灯,用于显示机床的状态和操作信息。机床的正面和侧面有“VNT-600L”的标识,表明这是VNT品牌的600L型号。整体设计现代且功能性强,适合进行精密加工和制造。
这里有些问题,正确的是Janus能够识别出这事一台数控机床,包括整个设备的大体结构。但是“VNT-600L”标识这里识别错了,应该是VMC850L。
文本识别
这里是用官方的例子进行的测试,可以看到Janus对数学公式也能识别。
Janus的回复
这个公式是关于一个函数 (A_n) 的定义,它用于描述一个数 (n) 在某个集合 (S) 中的位置。具体来说,公式定义了一个函数 (A_n) 的值,它取决于一个数 (n) 在集合 (S) 中的位置。
具体来说,公式定义如下:
[A_n = a_0 left[ 1 + frac{3}{4} sum_{k=1}^{n} frac{4}{9} right]^{k}
]
这个公式可以被解释为:
- 函数 (a_0) 是一个常数,它定义了函数 (A_n) 的初始值。
- 函数 (A_n) 的值取决于 (n) 在集合 (S) 中的位置。
- 在 (S) 中,(n) 的位置由一个数 (k) 表示,这个数 (k) 的值取决于 (n) 在集合 (S) 中的位置。
这个公式可以用于计算 (A_n) 在集合 (S) 中的值,其中 (S) 是一个包含 (n) 的集合。
某些情况下,对于文本的识别并不理想,比如下图
文生图
Janus的另一大亮点就是文生图,但是使用下来,我感觉并不出色。生成速度不快,而且所需要显存很高。
不过...有总比没有强👍🏻
Janus系列不同版本的区别
- Janus,第一代版本,首次提出"视觉解耦"的概念。模型大小:1.3B参数。
- JanusFlow,第二代版本,相比上一代改进了图片生成的方法,提高图片生成的速度和质量。
- Janus-Pro,最新版本,全面升级,大幅度提升了模型理解能力。模型大小:有1B和7B两个版本。
这三个版本就像是同一个产品的不断升级,每一代都有明显的改进,Janus-Pro是目前最强大的版本。
本地部署
python版本3.10
git clone https://github.com/deepseek-ai/Janus.git
pip install -e .
python demo/app_januspro.py
修改模型
Janus-Pro有1B、7B两个版本的模型,不同模型所需的显存不同,相比1B来说,7B的效果最好。
在我提供的MAC版本的整合包中,默认使用的是1B的模型。
如果你的内存够大,想要使用7B的模型,可以将demo/app_januspro.py
脚本load_model
方法中的
model_path = "deepseek-ai/Janus-Pro-1B"
修改为
model_path = "deepseek-ai/Janus-Pro-7B"
当然,windows小伙伴不需要担心这个问题,有1B和7B两种启动方式进行选择。
运行配置
WIN
Windows英伟达显卡1B需8G显存
整合包运行需要CUDA支持,需要安装cuda12.4
https://developer.nvidia.com/cuda-12-4-0-download-archive
MAC
MAC这里考虑大多用户的配置,我只放了1B版本的模型,如果需要7B可参考上方部署部分的步骤进行修改模型。
针对MAC版本我做了内存优化,及时释放内存,避免内存冗余。MAC Apple Silicon M1/M2/M3/M4 芯片 16G内存。
写到最后
看到这里,可能有小伙伴会觉得这个项目的应用场景比较有限。但据我了解,已经有小伙伴利用Janus的强大图文理解能力,将工程图纸、技术文档等PDF资料制作成智能知识库。
这是他发我的截图:
更棒的是,如果你看过我上一篇关于微信BOT的文章,完全可以把Janus接入进去,让你的机器人也具备看图说话、生成图片的能力!