❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 功能:支持多种图像描述生成模式,包括描述性字幕、稳定扩散提示、MidJourney 提示等。
- 技术:基于视觉语言模型(VLM),提供与 GPT4o 相当的图像描述生成性能。
- 应用:适用于社交媒体、图像标注、内容创作、视觉障碍辅助等多个场景。
正文(附运行示例)
JoyCaption 是什么
JoyCaption 是一款开源的图像提示词生成工具,专为训练扩散模型而设计。它能够为输入的图像生成详细的描述性字幕,涵盖广泛的图像风格、内容、种族、性别和取向,最小化过滤理解世界的各个方面,但不支持非法内容。
JoyCaption 的开发旨在填补社区在图像描述生成方面的空白,提供与 GPT4o 相当的性能,且保持免费和开放。用户可以通过多种模式和提示生成描述性字幕,适用于不同的应用场景,如社交媒体帖子、产品列表等。
JoyCaption 的主要功能
- 图像描述生成:为输入的图像自动生成详细的描述性字幕,帮助用户理解图像内容。
- 多种生成模式:提供描述性字幕、稳定扩散提示、MidJourney 提示、Booru 标签列表等多种生成模式,满足不同场景的需求。
- 灵活的提示选项:用户可以通过附加指令指导字幕生成,例如指定在字幕中使用特定的名字或触发词,获得更符合需求的字幕。
- 支持 SFW 和 NSFW 内容:对 SFW 和 NSFW 内容都有平等的覆盖,不会用模糊的描述规避审查。
如何运行 JoyCaption
1. 登录
访问 JoyCaption 的在线 Demo 体验地址:https://huggingface.co/spaces/fancyfeast/joy-caption。
2. 上传图片
在 JoyCaption 的界面中,上传想要分析的图片。可以通过拖放图片到指定区域或点击上传按钮完成。
3. 生成提示词
点击“caption”按钮,JoyCaption 将开始分析图片,并在界面的右侧显示 AI 反推出的提示词。
4. 使用提示词
将生成的提示词用于 AI 绘画模型(如 Flux)中,生成新的图像或进行进一步的创作。
5. 本地运行示例
以下是一个使用 JoyCaption 的 Python 代码示例:
import torch
from PIL import Image
from transformers import AutoProcessor, LlavaForConditionalGeneration
IMAGE_PATH = "image.jpg"
PROMPT = "Write a long descriptive caption for this image in a formal tone."
MODEL_NAME = "fancyfeast/llama-joycaption-alpha-two-hf-llava"
# Load JoyCaption
processor = AutoProcessor.from_pretrained(MODEL_NAME)
llava_model = LlavaForConditionalGeneration.from_pretrained(MODEL_NAME, torch_dtype="bfloat16", device_map=0)
llava_model.eval()
with torch.no_grad():
# Load image
image = Image.open(IMAGE_PATH)
# Build the conversation
convo = [
{
"role": "system", "content": "You are a helpful image captioner."},
{
"role": "user", "content": PROMPT},
]
# Format the conversation
convo_string = processor.apply_chat_template(convo, tokenize=False, add_generation_prompt=True)
assert isinstance(convo_string, str)
# Process the inputs
inputs = processor(text=[convo_string], images=[image], return_tensors="pt").to('cuda')
inputs['pixel_values'] = inputs['pixel_values'].to(torch.bfloat16)
# Generate the captions
generate_ids = llava_model.generate(
**inputs,
max_new_tokens=300,
do_sample=True,
suppress_tokens=None,
use_cache=True,
temperature=0.6,
top_k=None,
top_p=0.9,
)[0]
# Trim off the prompt
generate_ids = generate_ids[inputs['input_ids'].shape[1]:]
# Decode the caption
caption = processor.tokenizer.decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)
caption = caption.strip()
print(caption)
资源
- GitHub 仓库:https://github.com/fpgaminer/joycaption
- HuggingFace 仓库:https://huggingface.co/fancyfeast/llama-joycaption
- 在线体验 Demo:https://huggingface.co/spaces/fancyfeast/joy-caption
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦