项目简介
GILL项目是一个生成图像的多模态语言模型,其强大之处在于能够处理任意交错的图像与文本输入,用来生成文本、检索图像,并创作新的图像。该项目提供了完整的代码和模型参数,任何人都可以下载并部署。
安装与环境配置
要使用GILL模型,首先需要在环境中配置Python虚拟环境并安装所需的库。可以通过以下命令完成:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
接下来,将gill
库添加到PYTHONPATH:
export PYTHONPATH=$PYTHONPATH:/home/path/to/gill/
预训练模型和检查点
GILL的模型权重主要是一些线性层和[IMG]
嵌入,总大小约为96MB。克隆项目仓库后,这些权重会保存在checkpoints/gill_opt/
目录下。提供的检查点文件可以重现项目论文中报告的主要结果。
图像检索的预计算嵌入
项目为图像检索提供了Conceptual Captions图像的预计算视觉嵌入文件。这些文件大约为3GB,并且可以兼容提供的模型配置。下载文件后,将其放置于checkpoints/gill_opt/
文件夹内。如果不下载这些嵌入文件,模型仍能运行,但只能生成新的图像而不是进行图像检索。
推理
项目中的GILL_example_notebook.ipynb
展示了如何调用模型进行推理,包括根据模型的贪婪解码生成部分论文中的图像实例。此笔记本还展示了如何使用模型生成图像与文本。
训练
GILL模型基于Conceptual Captions数据集进行训练,首先需要下载相应的图像和标题,将其格式化为.tsv
文件,并保存在dataset/
目录中。图像文件则应保存在data/
目录,具体的目录路径可通过运行时标志调整。
为提高训练效率,项目建议预先计算文本编码的嵌入。可以通过scripts/preprocess_sd_embeddings.py
脚本完成此步骤。
开始训练作业的命令如下:
randport=$(shuf -i8000-9999 -n1) # 生成随机端口号
python -u main.py \
--dist-url "tcp://127.0.0.1:${randport}" --dist-backend 'nccl' \
--multiprocessing-distributed --world-size 1 --rank 0 \
--dataset=cc3m --val-dataset=cc3m \
--exp-name='gill_exp' --image-dir='data/' --log-base-dir='runs/' \
--precision='bf16' --print-freq=100
决策分类器的训练
项目提供了决策分类器的训练脚本,用于与GILL模型协同工作。用户可以使用PartiPrompts数据集的注释进行模型的调优,以便更好地预测从提示中产生的结果。
评估
项目包含了评估VIST和VisDial等数据集的脚本。这些脚本可以重现论文中表1和表2的实验结果。
Gradio演示
用户可以通过运行python demo/app_gradio.py
在本地启动Gradio演示,亦可在HuggingFace上克隆空间进行展示。
总结
GILL项目的发布为多模态语言模型提供了开创性的功能,不仅实现了图文交互的灵活应用,还提供了全面的开源解决方案供研究者和开发者使用。