引言

在我们的项目中,我们需要实现一个图像转文本的功能,即根据输入的图片自动生成描述性文字。

BLIP模型初尝试

最初,我尝试使用了Hugging Face提供的两个BLIP模型:
  • blip-image-captioning-base
  • blip-image-captioning-large
这两个模型都是基于BLIP架构的经典图像描述生成模型。
在实际测试中,我发现这两个模型存在以下问题:
  1. 生成的描述过于简短,缺乏细节
  1. 对于复杂场景的理解能力有限
  1. 对特定领域图片(如医学图像、技术图表)的适应性差
  1. 无法根据提示词(prompt)进行条件生成
尽管调整了生成参数(如max_lengthnum_beams等),效果提升仍然有限,无法满足我们的项目需求。
notion image
比如在上面的测试中,该模型并无法识别ultraman,且描述的很简短

转向BLIP2模型

经过调研,我决定尝试BLIP2模型,BLIP2采用了创新的架构设计,将预训练的视觉模型和语言模型通过轻量级的Q-Former连接起来,实现了更强大的图像理解能力。
BLIP2的优势:
  1. 更大的模型规模:我们选择了blip2-opt-2.7b版本,相比之前的BLIP模型参数规模更大
  1. 多模态理解能力:能够更好地理解图像和文本之间的关系
  1. 条件生成:可以根据提示词(prompt)生成特定风格的描述
  1. 生成质量:描述更加详细、准确,符合人类语言习惯

实现代码

在我们的Flask后端服务中,我实现了BLIP2的服务类:
 
在具体实践中,为了使Flask 服务在 Docker Compose 中使用 GPU,需要修改docker-compose.yml 文件,添加 GPU 支持相关的配置如下:
 
notion image
可以看到,该模型在基本差不多的生成速度下,生成的描述更为详细且能够正确识别ultraman
Loading...
Rainnn
Rainnn
bling bling ⭐
Latest posts
操作系统笔记
2025-6-28
课程学习及考试经验分享 (大二)
2025-6-28
在Docker中使用redis
2025-6-28
数值计算
2025-6-28
MongoDB 新版本安装
2025-6-28
自定义注解@CustomParam
2025-6-28
Announcement
wakuwaku!
你竟然发现了这里!!
创作不易,获取加🔒文章密码/试读文章,请微信关注公众号 Code & Cookies
notion image