❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- MILS 概述:MILS 是 Meta AI 提出的零样本生成高质量多模态描述方法,通过多步推理和迭代优化,实现无需额外训练的多模态任务处理。
- 主要功能:支持图像、视频和音频的描述生成,以及跨模态推理和高质量图像生成。
- 技术原理:基于 LLM 的生成器和评分器,通过无梯度优化和多步推理,实现多模态嵌入逆向映射。
正文(附运行示例)
MILS 是什么
MILS(Multimodal Iterative LLM Solver)是 Meta AI 提出的一种零样本生成高质量多模态描述的方法。该方法通过多步推理和迭代优化,赋予大型语言模型(LLM)处理多种多模态任务的能力,而无需对 LLM 进行额外训练。MILS 可以用于生成图像、视频和音频的描述,同时支持跨模态推理和生成任务,如文本到图像的生成和风格迁移。
MILS 的核心优势在于其能够在不进行额外训练的情况下,处理多种多模态任务。这使得 MILS 在媒体生成、视觉问答和多模态检索等应用场景中具有广泛的应用前景。通过提示重写和优化,MILS 可以显著提升生成内容的质量,并实现复杂多模态任务的自动化处理。
MILS 的主要功能
- 图像描述生成:为给定的图像生成准确的文本描述。
- 视频描述生成:为视频生成描述性文本,捕捉视频中的关键内容。
- 音频描述生成:为音频生成描述性文本,捕捉音频中的关键声音信息。
- 跨模态推理:通过将不同模态(如图像、音频)映射到文本空间,实现模态之间的推理和组合。
- 高质量图像生成:通过优化文本提示词,提升文本到图像(T2I)生成模型的输出质量。
- 风格迁移:将一种图像的风格应用到另一张图像上,同时保持内容不变。
- 跨模态生成:例如通过音频生成图像,将音频和图像的语义概念结合生成新的图像。
MILS 的技术原理
- 生成器:目标是为给定任务生成候选输出。接收任务描述文本和来自评分器的反馈评分,基于这些信息生成下一组候选方案。使用 LLM 来建模,能接收文本输入并进行推理。生成器的输出不限于文本,可以用于引导后续模型生成其他模态数据(如图像)。
- 评分器:目标是对生成器生成的候选方案进行评分,评估其与测试样本的匹配程度。可以采用多种不同的实现方式,例如低级图像处理函数(比较纹理)或经过训练的机器学习模型(如 CLIP)。
- 零样本多模态描述:MILS 能在无需训练的情况下,为图像、视频和音频生成高质量的描述内容,打破了传统多模态任务需要大量标注数据进行训练的限制。
- 多步推理与迭代优化:MILS 基于 LLM 的多步推理能力,首先提示 LLM 生成多个候选输出。每个候选输出会被评分,通过迭代反馈的方式不断优化,最终生成最优的任务解决方案。
- 无梯度优化:作为一种无梯度优化方法,MILS 不需要通过反向传播进行训练,通过评分和反馈机制逐步改进输出结果。
- 多模态嵌入逆向映射:MILS 能将多模态嵌入逆向映射为文本,实现跨模态算术等复杂应用。
如何运行 MILS
1. 安装环境
安装 Conda 环境:
conda env create -f environment.yml
conda activate MILS
2. 下载数据集和检查点
下载 MS-COCO 数据集:
wget http://images.cocodataset.org/zips/val2014.zip
wget http://images.cocodataset.org/annotations/annotations_trainval2014.zip
unzip val2014.zip
unzip annotations_trainval2014.zip
下载 Clotho 数据集:
wget https://zenodo.org/records/3490684/files/clotho_audio_evaluation.7z
pip3 install dtrx
wget https://www.7-zip.org/a/7z2107-linux-x64.tar.xz
tar xf 7z2107-linux-x64.tar.xz
./7zz e clotho_audio_evaluation.7z
wget https://zenodo.org/records/3490684/files/clotho_captions_evaluation.csv
下载 MSR-VTT 数据集:
wget https://www.robots.ox.ac.uk/~maxbain/frozen-in-time/data/MSRVTT.zip
unzip MSRVTT.zip
下载 ViClip-InternVid-10M-FLT.pth:
# 从 HuggingFace 下载
wget https://huggingface.co/OpenGVLab/ViCLIP/blob/main/ViClip-InternVid-10M-FLT.pth
3. 更新路径
更新 paths.py
中的变量,设置数据集目录和输出文件夹。
4. 运行代码
MILS 是一个仅推理方法,可以在单个 A100 GPU 上运行。以下命令展示了如何在 8 个 A100 GPU 上运行图像、音频和视频的描述生成任务。
图像描述生成
CUDA_VISIBLE_DEVICES=0 python main_image_captioning.py --process 0 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=1 python main_image_captioning.py --process 1 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=2 python main_image_captioning.py --process 2 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=3 python main_image_captioning.py --process 3 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=4 python main_image_captioning.py --process 4 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=5 python main_image_captioning.py --process 5 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=6 python main_image_captioning.py --process 6 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=7 python main_image_captioning.py --process 7 --num_processes 8 --batch_size 32 &
音频描述生成
CUDA_VISIBLE_DEVICES=0 python main_audio_captioning.py --process 0 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=1 python main_audio_captioning.py --process 1 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=2 python main_audio_captioning.py --process 2 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=3 python main_audio_captioning.py --process 3 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=4 python main_audio_captioning.py --process 4 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=5 python main_audio_captioning.py --process 5 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=6 python main_audio_captioning.py --process 6 --num_processes 8 --batch_size 32 &
CUDA_VISIBLE_DEVICES=7 python main_audio_captioning.py --process 7 --num_processes 8 --batch_size 32 &
视频描述生成
CUDA_VISIBLE_DEVICES=0 python main_video_captioning.py --process 0 --num_processes 8 --batch_size 8 &
CUDA_VISIBLE_DEVICES=1 python main_video_captioning.py --process 1 --num_processes 8 --batch_size 8 &
CUDA_VISIBLE_DEVICES=2 python main_video_captioning.py --process 2 --num_processes 8 --batch_size 8 &
CUDA_VISIBLE_DEVICES=3 python main_video_captioning.py --process 3 --num_processes 8 --batch_size 8 &
CUDA_VISIBLE_DEVICES=4 python main_video_captioning.py --process 4 --num_processes 8 --batch_size 8 &
CUDA_VISIBLE_DEVICES=5 python main_video_captioning.py --process 5 --num_processes 8 --batch_size 8 &
CUDA_VISIBLE_DEVICES=6 python main_video_captioning.py --process 6 --num_processes 8 --batch_size 8 &
CUDA_VISIBLE_DEVICES=7 python main_video_captioning.py --process 7 --num_processes 8 --batch_size 8 &
高质量图像生成
CUDA_VISIBLE_DEVICES=0 python main_image_generation_enhancement.py --process 0 --num_processes 8 --batch_size 4 &
CUDA_VISIBLE_DEVICES=1 python main_image_generation_enhancement.py --process 1 --num_processes 8 --batch_size 4 &
CUDA_VISIBLE_DEVICES=2 python main_image_generation_enhancement.py --process 2 --num_processes 8 --batch_size 4 &
CUDA_VISIBLE_DEVICES=3 python main_image_generation_enhancement.py --process 3 --num_processes 8 --batch_size 4 &
CUDA_VISIBLE_DEVICES=4 python main_image_generation_enhancement.py --process 4 --num_processes 8 --batch_size 4 &
CUDA_VISIBLE_DEVICES=5 python main_image_generation_enhancement.py --process 5 --num_processes 8 --batch_size 4 &
CUDA_VISIBLE_DEVICES=6 python main_image_generation_enhancement.py --process 6 --num_processes 8 --batch_size 4 &
CUDA_VISIBLE_DEVICES=7 python main_image_generation_enhancement.py --process 7 --num_processes 8 --batch_size 4 &
风格迁移
将风格和内容图像放入 images/
文件夹,然后运行:
python main_style_transfer.py --style_image <style_image> --content_image <content_image>
资源
- GitHub 仓库:https://github.com/facebookresearch/MILS
- arXiv 技术论文:https://arxiv.org/pdf/2501.18096
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦