ClipCap: CLIP Prefix for Image Captioning


文章目录

  • ClipCap: CLIP Prefix for Image Captioning
  • 前言
  • 一、原理
  • 二、 方法
    • 1.4 实验
  • 三、运行记录
    • 3.1 准备
    • 3.2 模型训练

前言

本文主要目的是学习这篇paper,以及纪录相关的代码学习过程
论文:https://arxiv.org/abs/2111.09734
Github:
https://github.com/rmokady/CLIP_prefix_caption
https://github.com/yangjianxin1/ClipCap-Chinese
参考链接:
ClipCap:让计算机学会看图说话


一、原理


ClipCap提出一种基于Mapping Network的Encoder-Decoder模型,其中Mapping Network扮演了图像空间与文本之间的桥梁。模型主要分为三部分:

  • Image Encoder : Clip编码图像,得到clip embedding
  • Mapping Network: 将图片向量clip_embed映射到文本空间中,得到一个文本提示向量序列prefix_embedding
  • Text Encoder:采用GPT2模型,根据提示向量序列prefix_embeds, 生成caption
    有点像UNILM

二、 方法


给定x_i, 得到c_i,最大化(1)的序列概率。(2)是GPT2那部分的求解目标

最后的loss是交叉熵损失,整个模型比较简单。
Mapping Network 有两种:MLP or Transformer

1.4 实验

数据集:

  • COCO-captions
  • nocaps
  • Conceptual Captions
    Image Caption 2021最新整理:数据集 / 文献 / 代码
    这个博客详细介绍了相关数据集的基本情况

    扩展该方向的创新点
  • 曝光偏差问题
  • 物体对应问题
  • 效果问题

三、运行记录

3.1 准备

  • 数据
    官网:http://hockenmaier.cs.illinois.edu/DenotationGraph/
    填写表单,然后下载:

1、flickr30k.tar:压缩后是名为results_20130124.token的图片标注文件
2、flickr30k-images:共计约31783张照片

  • 模型权重
    Clip的权重
_MODELS = {"RN50": "https://openaipublic.azureedge.net/clip/models/afeb0e10f9e5a86da6080e35cf09123aca3b358a0c3e3b6c78a7b63bc04b6762/RN50.pt","RN101": "https://openaipublic.azureedge.net/clip/models/8fa8567bab74a42d41c5915025a8e4538c3bdbe8804a470a72f30b0d94fab599/RN101.pt","RN50x4": "https://openaipublic.azureedge.net/clip/models/7e526bd135e493cef0776de27d5f42653e6b4c8bf9e0f653bb11773263205fdd/RN50x4.pt","RN50x16": "https://openaipublic.azureedge.net/clip/models/52378b407f34354e150460fe41077663dd5b39c54cd0bfd2b27167a4a06ec9aa/RN50x16.pt","RN50x64": "https://openaipublic.azureedge.net/clip/models/be1cfb55d75a9666199fb2206c106743da0f6468c9d327f3e0d0a543a9919d9c/RN50x64.pt","ViT-B/32": "https://openaipublic.azureedge.net/clip/models/40d365715913c9da98579312b702a82c18be219cc2a73407c4526f58eba950af/ViT-B-32.pt","ViT-B/16": "https://openaipublic.azureedge.net/clip/models/5806e77cd80f8b59890b7e101eabd078d9fb84e6937f9e85e4ecb61988df416f/ViT-B-16.pt","ViT-L/14": "https://openaipublic.azureedge.net/clip/models/b8cca3fd41ae0c99ba7e8951adf17d267cdb84cd88be6f7c2e0eca1737a03836/ViT-L-14.pt",
}

GPT2 中文模型
https://github.com/Morizeyao/GPT2-Chinese gpt2通用中文模型

3.2 模型训练

python train.py \--data_path datasets/clip_caption.pkl \--gpt2_path pretrain_models/gpt2 \--bert_path pretrain_models/bert \--output_path output/finetune \--lr 2e-5 \--epochs 40 \--prefix_len 10 \--constant_len 10 \--clip_size 512 \--bs_train 40 \--dev_size 1000 \--bs_eval 128 \--max_len 100 \--warmup_steps 5000 \--save_step 1000 \--eval_step 500 \--finetune_gpt2 \--mapping_type mlp \--do_train


蓝色:bert no finetune + gpt2
黑色:mlp finetune + gpt2
MLP的loss下降更快,也更低
BERT的loss下降慢,收敛的不好
因为:黑色是,MLP和GPT2是一起微调的,蓝色是只微调BERT,训练难度更大,GPT2是固定的。

对topk和topp的理解:
语言生成:搜索 or 采样,that is the question

总结:
Flickr30中文caption数据是由机器翻译获得的,质量上存在缺陷,后续可以考虑使用更加高质量的数据进行模型训练。并且根据训练过程分析可以知道,由于训练数据量较小,模型存在过拟合的风险,后续可以考虑使用更高量级的数据进行训练,相信能够获得更好的效果。

  • 更高质量的数据集
  • CLIP模型可以考虑换成中文的Chinese-CLIP模型,对中文的感知能力强点
  • Mapping Network在小的数据集上MLP比较优秀, 也比较轻量化
  • 文本生成部分,可以尝试GPT2更强的作为baseline来进行
  • 论文中采用topk, topp的采样,可以尝试其他语言模型采样的方法: A Contrastive Framework for Neural Text Generation

CLIPCAP:图生文相关推荐

  1. 【天池月饼活动】基于自然语言处理文本生成与轮询问答与依图生文与中秋月饼配图

    文章目录 活动要求 项目演示 自然语言处理文本生成之对联上下联对答: 自然语言处理文本生成之依图生文: 多级轮询月饼对话 自动生成月饼 代码讲解 自从我前天进入阿里天池实验室,我就被他吸粉了,嫖了他的 ...

  2. AI绘画最强工具:集成所有国内外主流大模型AI绘画能力文生图、图生图、图修复和超分辨率能力。

    AIGC(Artificial Intelligence Generated Content)登上舞台,以高效.精准.定制化等能力特征,重新定义了内容生产方式. 只需通过4行代码就能实现强大的文图生成 ...

  3. 【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )

    文章目录 一.Android 5.0 以下的矢量图方案 二.矢量图生成为 PNG 图片 三.完整的 build.gradle 构建脚本 四.编译效果 五.参考资料 一.Android 5.0 以下的矢 ...

  4. 从IBM Rational Software Architect设计管理器生成基于图的文档

    有关文档生成的更多文章 有关该主题的其他文章,请参阅Einar Karlsen的四部分系列文章,内容涉及使用Rational Publishing Engine生成合规性文档."主题包括: ...

  5. Meta AI发布图音文大一统模型Data2vec,4天在GitHub揽1.5万星

    行早 发自 凹非寺 量子位 | 公众号 QbitAI Meta AI搞了一个大一统的自监督学习模型Data2vec. 怎么个大一统法? 图像.语音.文本都可以处理,效果还都不错,在CV方面甚至超过了包 ...

  6. 带你看论文丨全局信息对于图网络文档解析的影响

    摘要:文档理解着重于从非结构化文档中识别并提取键值对信息,并将其输出为结构化数据.在过往的信息提取中,大多数工作仅仅只关注于提取文本的实体关系,因此并不适用于直接用于文档理解上. 本文分享自华为云社区 ...

  7. OpenSearch图搜图、文搜图向量检索最佳实践

    一.向量检索介绍 1.1 多模态信息的典型特点-非结构化 信息可以被划分为两大类:当信息能够用数据或统一的结构加以表示,称之为结构化数据:当信息无法用数字或统一的结构表示,称之为非结构化数据.非结构数 ...

  8. html左文右图布局方法,Divi主题如何实现博客列表拆分布局【图左文右】

    Divi主题是一款优秀的 Divi主题如何实现博客列表拆分布局[图左文右]? 其实我们只需要写几行CSS,然后博客里使用高级CSS类即可. 首先需要把下面的CSS放到主题选项里的自定义CSS里面: @ ...

  9. 美图蔡文胜的赌徒心态

    很久没有成为主角的美图董事长蔡文胜,终于凭借最近火热的比特币又火了一把. 美图公司日前发布公告称,于2021年3月5日在公开场交易中购买了15000单位的以太币和379.1214267单位的比特币,这 ...

最新文章

  1. 哪个瞬间让你突然觉得CV技术真有用?
  2. java 阻塞队列 LinkedBlockingQueue ArrayBlockingQueue 分析
  3. 微信小程序获取用户手机号--官方示例
  4. hihoCoder #1467 : 2-SAT·hihoCoder音乐节
  5. c++排序算法ppt_C/C++学习教程:C语言排序算法—插入排序算法
  6. 探讨LoadRunner的并发用户和集合点
  7. linux中退格出现乱码,SSH中的SQL命令按退格键出现乱码的问题解决
  8. layer 弹出层 回调函数调用 弹出层页面 函数
  9. Mac下新安装的MySQL无法登陆root用户解决方法
  10. 采用传输矩阵法求解光子晶体带隙
  11. 专访 | 阿里前辈李智慧:如何培养架构思维,我把20年的架构经讲给你听
  12. 常用SQL语句整理及示例
  13. 阿里云国际站代理商:SCDN的抗CC攻击和抗DDoS攻击防护是什么?
  14. 双鉴探测器是哪两种探测方式结合_报警的基本知识
  15. 三年磨一剑——微信OCR轻松提取图片文字
  16. 2021最新Java JDK1.8的安装教程
  17. 一千本免费电子书(建议长期保存)转的-用迅雷下载
  18. python大于号怎么写_大于号怎么写
  19. 极兔快递 | 快递单号查询API
  20. 使用阿里云接口进行身份证实名认证

热门文章

  1. 学习OceanBase|OB-ODBC 驱动和 MySQL 官方 MySQL-ODBC 驱动的使用说明和配置方法
  2. t43 风扇问题解决方案
  3. 从“任我行”博友转载的一篇文章:堆和栈的区别
  4. 软件相貌测试准确吗,相貌测试(史上最准的颜值测试)
  5. hpe服务器自动启动关闭,HPE服务器设置U盘启动安装
  6. 矩阵分析学习指导_如何系统地学习统计学,指导入门数据分析
  7. 【数字逻辑】学习笔记 第五章 Part3 时序逻辑电路(常用时序逻辑电路及其应用)
  8. python实现运动模糊图像_python opencv生成模糊图像
  9. HTML下拉框选择事件
  10. Unity打字机效果