DeepSeek的多模态大模型Janus实测,以及如何运行web demo

文章创作不易,麻烦大家点赞关注转发一键三连。也可以关注文章结尾后我的公众号与我联系。


今天一起床看公众号和抖音就被DeepSeek的Janus刷屏了。都在说Janus如何如何。但是我没有看到一篇文章讲如何实操调用Janus的。因此我自己下载了Janus希望实际用代码测试一下。这中间发现目前DeepSeek的原始代码还是有一些小问题的,并不是下载了以后就能用。

当然最后我都解决了这些问题。因此记录下来以供大家参考。另外讲一下我使用Janus的评价。

因为机器显卡不够高端,所以我只试用了Janus-1.3B和Janus-Pro-1B。实际效果,不论是图片理解还是文生图能力都非常普通图片理解方面大体和MiniCPM-V, moondream等能力相差不大。在文生图方面则只能生成非常简陋的图片,无法和有着广大生态的Stable Diffusion, Midjourney 以及FLUX相比

当然了,因为我对文生图领域不太熟悉,很可能在应用了其他模型后能生成更好。

文章最后部分有运行的结果。如果你对自己把模型跑起来不感兴趣的话。可以直接跳到文章结尾部分看运行结果。

下面是如何运行Janus:

下载代码和模型

首先下载Github上Janus的代码:

git clone https://github.com/deepseek-ai/Janus.git

然后就是下载模型。这里需要注意的是Janus的模型都在huggingface上访。在国内访问是有问题的。还好DeepSeek也在ModelScope上上传了Janus。

首先确保git 安装了lfs

git lfs install

然后下载。譬如Janus-Pro-1B是下面的下载。根据我自己的实测,和Janus-1.3B相比Janus-Pro-1B的能力要更强一些。

git clone https://www.modelscope.cn/deepseek-ai/Janus-Pro-1B.git

Janus-1.3B

git clone https://www.modelscope.cn/deepseek-ai/Janus-1.3B.git

安装python库

为了让文章内容更加精简,我就不从头讲如何安装python以及使用python虚拟环境了。相信看我们文章的大部分读者都已经会了。不会的话可以上网上查一下。

我们首先需要修改一下Janus代码目录下的requirements.txt。之所以要修改,是因为DeepSeek原始的requirements.txt是错的,用原始的代码安装会有很多问题。

在安装之前,确保你有一个还可以的NVidia显卡并已经下载了CUDA。之后使用这个requirements.txt​​​​​​​

transformers>=4.38.2
timm>=0.9.16
accelerate
sentencepiece
attrdict
einops
# for gradio demo
gradio
gradio-client
mdtex2html==1.3.0
pypinyin==0.50.0
tiktoken==0.5.2
tqdm==4.64.0
colorama==0.4.5
Pygments==2.12.0
markdown==3.4.1

timm
attrdict 
einops  
accelerate
bitsandbytes
flash_attn

之后使用下面命令进行安装:

pip install -r requirements.txt

注意我把原来requirements.txt中的pytorch删除了。你需要手动安装CUDA版本的pytorch和torchvision等。你可以通过https://pytorch.org/get-started/locally/ 获取到适合你CUDA版本的安装命令。比如我的CUDA版本是12.1,那么就是这个命令:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

修改代码并运行web demo

修改demo/app.py:

在开头import部分,添加以下代码:​​​​​​​

import syssys.path.append('../')

再找到之前11行的model_path定义,把

model_path = "deepseek-ai/Janus-1.3B"

修改为

model_path = "D:/DEV/Janus-Pro-1B"

其中D:/DEV/Janus-Pro-1B是我机器上Janus-Pro-1B的模型目录。你应当改成你对应的目录。

之后到demo目录下运行app.py:​​​​​​​

cd demopython ./app.py

之后打开 http://127.0.0.1:7860访问web ui。

运行效果

图片理解

我们把我们公众号"软件开发与挖掘机技术"的logo传递给Janus,并且写以下提示词:

"请描述图片

Janus Pro 1B的回复:

"The image depicts a construction vehicle, specifically a bulldozer, with a visible bucket attachment. The bulldozer is represented in a simple, stylized manner with a yellow outline and a black background. The bucket is shown extending from the front of the bulldozer. There are also some blue code symbols on the front of the bulldozer's cabin, indicating that the image might be related to construction or engineering."

可见这个引擎的默认语言是英文。如果希望它用中文回答,可以提问"请用中文描述图片"。

以下是回复:

"这是一张显示挖掘机的图片。挖掘机的主体部分是金色的,带有黑色的履带和两个黑色的圆形轮胎。挖掘机的铲斗部分也是金色的,并且位于挖掘机的右侧。挖掘机的驾驶舱部分是矩形的,上面有蓝色的代码符号,表示这是与编程或自动化相关的设备。整个图片的背景是黑色的,使得挖掘机图案更加突出。"

图片生成

我们使用这个提示词生成图片:

"一个歌手在舞台上表演歌唱,写实风格,要贴近真实世界场景"

结果生成的图片都是类似这样的:

图片

我们再尝试生成一个更简单的场景:

"一朵粉红色的荷花开在池塘里,周围有绿色的荷叶"

这是生成的图片:

图片

你可能能看到它生成了五张图片。里面这个是唯一一个有花的。

所以生成的图片质量不是很好。SD或者Midjourney之类也需要定制化的模型才能生成比较好的图片。之后我也会研究一下怎么才能让它生成的水平更高。

### DeepSeek 多模态大模型 Janus-Pro-7B 使用指南 #### 获取模型 为了使用 Janus-Pro-7B 模型,需先从指定网站下载模型文件。访问链接可获得最新版本的模型权重和其他必要资源[^2]。 ```bash # 下载命令示例(具体路径可能有所不同) wget https://huggingface.co/deepseek-ai/Janus-Pro-7B/archive/main.zip unzip main.zip -d ./janus_pro_7b/ ``` #### 安装依赖库 安装必要的 Python 库来加载并运行多模态模型。推荐使用虚拟环境隔离项目依赖项。 ```bash pip install transformers torch accelerate safetensors ``` #### 加载预训练模型 通过 Hugging Face 的 `transformers` 库可以轻松加载已保存的模型及其配置。 ```python from transformers import AutoModelForVision2Seq, AutoProcessor model_name_or_path = "deepseek-ai/Janus-Pro-7B" processor = AutoProcessor.from_pretrained(model_name_or_path) model = AutoModelForVision2Seq.from_pretrained(model_name_or_path) ``` #### 数据准备与处理 对于输入数据,无论是文本还是图像都需要经过特定方式编码成适合喂给神经网络的形式。 ```python image_url = "http://example.com/path/to/image.jpg" # 替换成实际图片URL text_input = "描述这张照片的内容" inputs = processor(image=image_url, text=text_input, return_tensors="pt") ``` #### 执行推理任务 准备好所有前提条件之后就可以调用模型来进行预测了。这里展示了一个简单的例子用于说明如何执行一次前向传播操作得到输出结果。 ```python with torch.no_grad(): outputs = model.generate(**inputs) generated_text = processor.decode(outputs[0], skip_special_tokens=True) print(generated_text) ``` #### 进阶应用案例 除了基本的文字到文字转换外,Janus Pro 7B 支持更多样化的应用场景,比如基于视觉的理解能力以及跨媒体的信息生成等功能[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件开发和挖掘机技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值