生图超级外挂!贾佳亚团队提出VLM模型Mini-Gemini,堪比GPT4+DALLE3王炸组合

关注公众号,发现CV技术之美

更高清图像的精确理解、更高质量的训练数据、更强的图像解析推理能力,还能结合图像推理和生成,香港中文大学终身教授贾佳亚团队提出的这款多模态模型Mini-Gemini堪称绝绝子,相当于开源社区的GPT4+DALLE3的王炸组合!

Mini-Gemini还提供了2B小杯到34B的超大杯,最强模型在多个指标上相比Google Gemini Pro甚至GPT-4V都不遑多让。目前,Mini-Gemini从代码、模型、到数据已全部开源,登上了PaperWithCode热榜。

Mini-Gemini线上Demo也已发布,超会玩梗,一起来体验下!

cca47d8996aa9ae15a004ebe2f46c122.png

Mini-Gemini Demo放出后受到广大网友关注,一番“品尝”后,他们认为Mini-Gemini跟商业模型差不了多少!

6b8061d92160328f2cddef4031c0a2a3.png fe74ca07efe952e736a04c257e6d32df.png

目前,绝大多数多模态模型仅支持低分辨率图像输入和文字输出,而在实际场景中,许多任务都需要对高清图像进行解析,并用图像的形式进行展现。

如上图所示,Mini-Gemini不仅能够根据图片对做面包的过程进行手把手教学,也能够准确将不同电脑品种根据图片中的各种参数进行对比。网友表示:妈妈再也不用担心我的生活了。

更重要的是,Mini-Gemini在保留超强的图像理解和推理能力的同时,还解锁了图像的生成能力,就如同ChatGPT和生成模型的结合。

下面,让我们通过几个例子来更直观地感受这种能力:

案例分析:

还记得Google Gemini的官方演示视频么?当用户给出两个毛线团并问出能用它们做什么时,Gemini可以识别出图片内容并给出相应的建议。

c630ce7b628eacb73ee63211700741be.png
image

当我们把相似的输入给到Mini-Gemini,它会怎么回答呢?

ae431fafa1a813c46b21506771b1d305.png

可以发现,Mini-Gemini也可以识别出图片中的元素,并且合理地建议,同时生成了一只对应的毛线小熊。

2c17302067ac296328a04ccd0a83303f.png

通过一些抽象的多模态指令来让模型给出推理,并生成合适的图片,这个操作就很像是ChatGPT和DALLE3的联动了!

接下来让Mini-Gemini做自己最擅长的推理和图片理解,看看它表现:比如理解图片中的矛盾点并举一反三——输入冰川中的仙人掌,它会解释其中的矛盾并生成一张热带雨林中北极熊的图片:

4d197298bc4bff8d3b993ef65a3dbeb8.png

图片呈现了仙人掌的典型栖息地与冰的存在之间的视觉矛盾,因为在沙漠环境中自然不会出现冰。这种矛盾的类似例子可能是一只北极熊出现在热带雨林中,因为北极熊适应于寒冷、覆盖着冰的环境,在炎热潮湿的气候中无法生存。这种并置创造了一个引人注目且超现实的视觉效果,挑战观众的期待,并可能引发人们对气候变化、环境适应或不同生态系统融合的思考。

同时,正如ChatGPT+DALLE3的梦幻结合一样,Mini-Gemini的“推理生成”功能还可以在多轮对话中通过简单指令生成连环小故事。

9c874270b5ab65756c1ce7f3681cf926.png e602709646827cba42fa0d68d53628b0.png

比方说,让它根据用户输入讲一个贵族小老鼠的故事。Mini-Gemini会根据前文的文字生成结果和用户输入进行推理,在保持一致性的情况下对图片进行修改,使其更符合用户的要求。

当然,Mini-Gemini对于多模态模型的传统技能图片理解也不在话下。比方让模型理解输入曲线图的数学意义(高斯分布),并让它使用代码复现这张图,通过运行生成的代码,模型可以高质量地还原曲线图,节省了复现的时间。

d2beb88cc8e23bb381cf9e5ba42b2a00.png 0f92f3b6c522185c473f781305981fbb.png

又或者让Mini-Gemini理解梗图,通过其强大的OCR和推理能力,也可以准确指出笑点。

d3682f97a5937793df2868d78aabdc64.png 9a54b3da66bd79c7eddf451849ffca68.png 43c97b6b4c976b3bb3912d0241ee1b85.png 86add0c43bd763a630f751ca73ffd68f.png 19913412fadfd887e7cb395933181221.png bc278969d095f6efb4332cfe712239fb.png

高清复杂的多图表理解和归纳也是小菜一碟,Mini-Gemini直接秒变打工人效率提升的超级外挂。

db5196ea922e98a6c9055934c3523ae4.png 3421da69e18da2c969ee17711cf27e87.png 382712e5d0ba330e9c6ff097dad61c65.png

技术细节:

问题来了,Mini-Gemini是怎样做到这种惊艳的效果呢?

核心在于三点:

  1. 用于高清图像的双编码器机制,

  2. 更高质量的数据,

  3. 训练阶段结合生成模型数据拓展。

大道至简,Mini-Gemini的整体思路并不复杂。其中的Gemini(双子座)表达的是使用视觉双分支的信息挖掘(Mining-Info in Gemini)解决高清图像理解问题。

详细来说,Mini-Gemini将传统所使用的ViT当做低分辨率的Query,而使用卷积网络(ConvNet) 将高分辨率的图像编码成Key和Value。使用Transformer中常用的Attention机制,来挖掘每个低分辨率Query所对应的高分辨率区域。从而在保持最终视觉Token数目不变的情况下去提升对高清图像的响应,保证了在大语言模型 (LLM) 中对于高清图像的高效编码。值得一提的是,由于高分辨率分支卷积网络的使用,可以根据需要对图像所需的分辨率自适应调整,能够遇强则强。对于图像的生成部分,Mini-Gemini借助了SDXL,使用LLM推理后所生成的文本链接两个模型,类似于DALLE3的流程。

dd6fcc599367e9bfe9d8f2a1355a9931.png

而对于数据这个万金油,Mini-Gemini进一步收集并优化了训练数据的质量,并加入了跟生成模型结合的文本数据进行训练。在仅使用2-3M数据的情况下,实现了对图像理解、推理、和生成的统一流程。

Mini-Gemini在各种Zero-shot的榜单上毫不逊色于各种大厂用大量数据训练出来的模型,可谓是“平、靓、正” !

量化指标:

27c7e42536a7219c5e44afa97a10bec3.png

可以看出,Mini-Gemini提供了多种普通和高清版本的模型,并且覆盖了2B的小杯到34B的超大杯,各个版本都取得了相似参数量下领先的效果,在许多指标上甚至超越Gemini Pro和GPT-4V。

在线可玩:

值得一提的是,Mini-Gemini的图像理解和生成能力已经出了Demo,可以在线跟自定义图像对话的那种。操作也极其简单,直接跟输入图像或文字进行对话即可,欢迎来撩!

f7bc6783c4726478073b056d996de780.png
  • Github地址:https://github.com/dvlab-research/MiniGemini

  • Demo地址: http://103.170.5.190:7860/

  • 论文地址:https://arxiv.org/pdf/2403.18814.pdf

  • 模型地址:https://huggingface.co/collections/YanweiLi/mini-gemini-6603c50b9b43d044171d0854

  • 数据地址:https://huggingface.co/collections/YanweiLi/mini-gemini-data-660463ea895a01d8f367624e

56b2829d769f4ed76ed20961bc305088.jpeg

END

欢迎加入「生成交流群👇备注:aigc

8858897a3cde19828085375657f64ad0.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以给你提供一些 VLM (Visual Light Communication) 和 LLM (Low Level Message) 的代码示例。以下是一个简单的VLM代码示例: ```python import time import RPi.GPIO as GPIO # 设置GPIO引脚 LED_PIN = 18 # 初始化GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN, GPIO.OUT) def transmit_message(message): for char in message: # 将字符转换为二进制 binary = bin(ord(char))[2:].zfill(8) # 发送二进制信号 for bit in binary: if bit == '1': GPIO.output(LED_PIN, GPIO.HIGH) else: GPIO.output(LED_PIN, GPIO.LOW) # 控制发送速度(根据实际情况调整) time.sleep(0.1) # 两个字符之间的间隔时间(根据实际情况调整) time.sleep(0.5) # 发送消息 transmit_message("Hello, World!") # 清理GPIO资源 GPIO.cleanup() ``` 这个示例使用树莓派的GPIO引脚来模拟光通信,通过控制LED的亮灭来传输二进制信号。 以下是一个简单的LLM代码示例,这里假设你是在C语言环境下进行开发: ```c #include <stdio.h> #include <string.h> // 定义消息缓冲区大小 #define BUFFER_SIZE 100 void process_message(char* message) { // 在这里实现对消息的处理逻辑 printf("Received message: %s\n", message); } int main() { char buffer[BUFFER_SIZE]; // 模拟接收消息 printf("Enter a message: "); fgets(buffer, BUFFER_SIZE, stdin); // 去除换行符 buffer[strcspn(buffer, "\n")] = '\0'; // 处理消息 process_message(buffer); return 0; } ``` 这个示例是一个简单的命令行程序,通过用户输入来模拟接收消息,并在控制台上输出收到的消息。 希望这些示例能对你有所帮助!如果你有任何其他问题,可以继续问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值