ChatGPT 已经广泛用于各行各业提高工作效率。然而,不同的引导词(prompt)提示下,同一模型的输出结果可能大相径庭,好的prompt能释放模型的潜力,得到更有用的输出。本文提供了一些方法论和常用 prompt 示例。本文持续更新,欢迎在评论区踊跃交流经验~

- 阅读剩余部分 -

论文:OneChart: Purify the Chart Structural Extraction via One Auxiliary Token
主页及demohttps://onechartt.github.io/

《论语》中说:“知之为知之,不知为不知,是知也”。从神经网络兴起以来,人们就没有停止过对这种黑盒模型应用在生产环境的担心。在AI 1.0中大部分模型还至少会输出一个置信度得分可供参考;然而对于AI2.0时代的VLMs来说,所有的结果以文本的形式吐出,这加重了人们对模型安全性的焦虑。让模型知道自己的能力边界,不要产生致命错误,这点十分必要,也是目前的难点。

- 阅读剩余部分 -

SAM 好比在视网膜层面,能力是很low-level的,举个例子它可以对图片信息进行简单的切分,但它不知道左边的一坨像素和右边的一坨像素是一个品种的狗。DINOv2好比大脑中某块视觉区,好比刚出生不久的婴儿,它是纯视觉的,可以完成视觉层面的目标聚类,知道左边的一坨像素和右边的一坨像素是一种东西,但没有语言系统不知道这种东西叫“金毛犬”。CLIP就是更近一步,实现了视觉和语言的关联,好比5岁的小孩;然而由于数据、训练方式、输入分辨率等原因,CLIP没正经读过书看过图表,所以在做dense OCR任务时Vary自己训了个encoder,在做chart任务时Onechart也自己训了个encoder,好比让小孩上个学。🐶
Vision encoders百花齐放,与decoders相匹配。当decoder是LLM时,需要LLM能看懂的encoder。

Vision-Language 的 Vision Encoders

1. CLIP 2021.2.26

论文:Learning Transferable Visual Models From Natural Language Supervision(OpenAI in ICML2021)

如下图所示,将图片和文本描述通过网络都得到768维的Embedding,其中文本编码器使用transformer,图片编码器使用了ResNet和ViT两种结构进行实验,ViT的有4个模型:输入224px 的 ViT-B/32, ViT-B/16 (196 tokens), ViT-L/14 (256 tokens);输入336px的 ViT-L/14 (576 tokens)。预训练使用了400M(4亿)个图像文本对,每个batch采样三万多个这样的配对,通过对比学习,配对的Embedding位置处为1,非配对处为0进行交叉熵损失训练。

在测试时支持zero-shot推理,如下面右图所示:首先分别获得图像和文本的embedding,对提取的embedding进行归一化用来算相似度image_features /= image_features.norm(dim=-1, keepdim=True), text_features /= text_features.norm(dim=-1, keepdim=True)。通过计算图片Embedding和各个候选("a photo of [cls_name]")的相似度,相似度大于某个阈值或者topk的为输出类别结果。

CLIP

- 阅读剩余部分 -

在上一篇工作 Vary 中,我们第一次提出了CLIP视觉词表在密集感知能力上的不足,并给出了一种简单有效的扩充词表方案。Vary发布后得到了不少朋友的关注(目前已1.2k+ star),但也有不少人因为资源受限运行不了。

考虑到目前开源得很好且性能出色的“小”VLM比较少,我们新发布了“年轻人的第一个多模大模型”——1.8B Vary-toy,并以最大的诚意欢迎各位高校和个人研究者们加入多模态大模型的研究中。当然也欢迎大佬们用它做出有意思的落地应用,把Vary-toy玩起来!

与Vary相比,Vary-toy除了小之外,我们还优化了新视觉词表。解决了原Vary只用新视觉词表做 OCR 的网络容量浪费问题,以及吃不到SAM预训练优势的问题。与Vary-toy同时发布的还有更强的视觉词表网络,其不仅能做文档级 OCR,还能做通用视觉目标检测。

- 阅读剩余部分 -

论文:Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
项目主页:https://varybase.github.io/

Vary表现出了很大的潜力和极高的上限,OCR可以不再需要冗长的pipline,直接端到端输出,且可以按用户的prompt输出不同的格式如Latex 、Word 、Markdown。通过LLM极强的语言先验,这种架构还可以避免OCR中的易错字,比如“杠杆”和“杜杆”等, 对于模糊文档,也有望在语言先验的帮助下实现更强的OCR效果。Vary展现出的强大的OCR能力被戏称为“OCR 终结者”。

- 阅读剩余部分 -

本文重点介绍了一些 VLM 早期的代表性工作。其中,CLIP作为视觉语言模型(VLM)的基础和开山之作,创新性提出了ITC对比损失用于对齐图片级视觉和语言Embedding,但它只能完成判断,无法完成生成式任务。之后BLIP的出现补足了生成的能力,后来Flamingo、LLaVA和BLIP2进一步充分利用了LLM的生成能力,这三个工作也代表了将 image embedding 接入到 LLM 的三种典型的 “Adapter” 方法分别是:XAttn (Flamingo)、Q-Former (BLIP2) 和 MLP (LLaVA)。但它们三个都只能生成文字,Emu进一步补足了图片生成的能力,并创新性提出了一种自回归图片tokens的目标。上述模型针对的图片输入都是全图输入,Shikra和chatSpot则提出了可以接受点和框询问特定位置的MLLM,这种能力被称为Referential对话的能力。Donut和Nogat则特别针对OCR任务提出。

⚠️注意:本文信息几乎截止至2023.8.31,部分内容已缺乏时效性,不具备足够的参考价值

- 阅读剩余部分 -

电机选型

  1. 减速直流电机
    这种电机的几个重要参数如下,
  • 转速,单位为转每分钟。例如你需要先确定你想要的小车的行驶速度,然后测量轮胎的周长,最后换算出需要的转速,例如500转/min;
  • 额定电压。用标称电压7.4v的锂电池的话电压范围是6v~8.4v,所以一般选6v的电机;
  • 减速比。这个关系到力矩大小,减速比越大,力矩越大。力矩太小的电机用作小车轮胎的电机时会走不动。例如同样是500转/min的两个电机,电机A为15000转,转速比30:1,经测量它的空载电流为30mA,堵转电流为350mA。而电机B为25000转,减速比50:1,经测量它的空载电流为150mA,堵转电流为2A。用作小车轮胎应选电机B。

电机驱动电路
单片机引脚输出的电流最大为20mA左右,远远不能满足电机的电流需求,因此需要电机驱动电路。常用的驱动电路有H桥电路,它比较复杂和庞大,一般用于控制几十安的电机。对于较小电流电机,可以直接选择集成芯片,如RZ7899,一个芯片可以驱动一个电机,需要注意的参数为工作电压、输出最大电流。绘制原理图时,参考芯片手册中提供的应用电路进行绘制。单片机引脚连接芯片的中间可以放一个300欧的电阻,起到保护单片机和芯片的作用。芯片输入引脚接10k的下拉电阻到GND,让芯片不接单片机时不受外来信号的影响,即默认输入LL让电机处于浮空状态。电机正负极两端接一个104电容,避免火花。

One-Pass Evaluation (OPE)

用ground-truth中目标的位置初始化第一帧,然后运行跟踪算法得到平均精度和成功率。这种方法被称为one-pass evaluation (OPE)。这是最常用的评估方法,指标包括曲线和数值指标。最早由OTB数据集提出。

1. success、precision曲线

这两种曲线可以说是几乎所有论文都在用的,

uav123
  1. success plot of OPE
    这主要考察的是重叠率,横坐标是iou阈值,纵坐标是成功的比例。
  2. precision plot of OPE
    这主要是衡量预测与gt的中心之间的距离,横坐标是像素,纵坐标是成功的比例。

2. 数值指标

  1. Overlap Success Rate (OSR),与success plot对应,越大越好,OSR代表预测框和gt的IoU大于阈值$\beta$的比例,大部分数据集$\beta=0.5$。

  2. Distance Precision Rate (DPR),与precision plot对应,越大越好,DPR代表预测框的中心和gt框中心的距离小于阈值$\alpha$的比例,大部分数据集$\alpha=5$,少数是20。

  3. AUC: area under curve 成功率图的曲线下面积,成功率图指随着$beta$的变化,OSR的变化曲线图。越大越好。

  4. OP50:$\beta=0.5$时的OSR。越大越好。

  5. OP75:$\beta=0.75$时的OSR。越大越好。

- 阅读剩余部分 -

跟踪中的任务主要有:

  • 多目标跟踪(Multi Object Tracking, MOT)
  • 单目标跟踪(Single Object Tracking, SOT)
  • 多目标跟踪分割(Multi Object Tracking and Segmentation, MOTS)
  • 视频目标分割(Video Object Segmentation, VOS)

这里,我暂时先不关心分割的任务。以下是MOT和SOT的对比:

Tasks Reference Class Tracks per video Typical Inputs Representative Methods
MOT No specific Tens or hundreds High-resolution Whole Image Detection+Association
SOT Initial box agnostic One Small search region One-Shot Detection

可以看到两个任务之间的gap还是比较大的,总结一下,阻碍SOT和MOT两个任务统一的主要有三座大山:

  1. 被跟踪目标的属性不同(参考帧给定的一个任意类别的目标 VS 几十几百特定类别的目标);
  2. SOT和MOT关注的对应关系不同(SOT关注目标和背景的区分,MOT关注目标和轨迹的对应);
  3. 不同的输入(SOT输入为小的搜索范围,以节省计算量和消除潜在的干扰;MOT输入为高分辨率的全图,以尽可能检测到所有实例)。

大一统的目标跟踪这里是指,仅需要一套模型及参数,就可以在各个任务上取得优异的表现。我将介绍两个工作的这部分内容,看看它们是怎么翻过这些大山的。

- 阅读剩余部分 -