Transformer 是新的大型语言模型 (LLM) 的支柱,它支持 ChatGPT 等改变游戏规则的技术开发。这些模型架构在论文Attention Is All You Need中进行了介绍,其中该模型依赖于编码器-解码器架构,但忽略了广泛使用的循环层和卷积层。
论文名称参考了Bahdanau 等人提出的自我注意机制的应用。(2014),其中作者的核心思想是让模型只关注输入的重要部分。这是可能的,因为解码器可以访问编码器堆栈中的所有隐藏状态,这允许模型链接长期依赖性。
LLM 的 transformers 模型包含多达数十亿个参数,正如您可能想知道的那样,需要大量的计算资源才能在可行的时间内训练这些模型。在这个问题上,Hugging Face在大众化大型模型以供个人使用方面发挥着至关重要的作用,它允许独立用户使用他们的框架进行创新。
在模型选项卡中,您可以访问数百个预训练模型,可以下载这些模型以立即使用或针对特定任务进行微调。在本文中,我们探讨了 CLIPSeg 模型的简单用法,该模型根据用户输入的提示分割图像。我们正在制作一个简单的应用示例,其中我们从视频中提取和写入元素。可以在这个GitHub 存储库中找到代码。
为此,我选择了一段我的狗玩气球的视频,我们想从原始视频中裁剪该视频,并可能将其插入另一个背景中。该项目的想法是展示创建用于执行实用程序任务的框架是多么容易。可以在下面看到原始视频。
输入视频
Hugging Face 中的模型描述解释说,该模型需要一个 352x352 大小的图像和一个包含要提取的元素的字符串列表。通过微调适合所需任务的数据集上的模型,可以避免这种固定大小的限制,但在这个项目中,我们使用的是 352x352 大小,这会稍微扭曲图像。现在让我们深入研究一些代码。
这些简单的代码行就是我们使用 CLIPSeg 模型进行预测所需的全部内容。处理器负责将图像调整为模型期望的格式,因此我们不必担心自己重新整形。
输出包含每个像素的值数组,我们可以从中应用 logits 函数从包含提示对象中提取每个像素的概率。所以我们的工作是使用这个输出概率来只提取包含提示的高概率像素并裁剪原始图像。下面我们可以看到此过程应用于视频的单个帧的示例。
从单帧中提取的狗和气球
所以我们现在的工作只是简单地将这一帧应用到视频上,然后使用 OpenCV 的视频编写器创建一个新的。写下代码包含用于执行任务的循环框架。
现在您可以在白色背景上看到最终结果,因为在黑色背景下很难看到细节。
完整裁剪视频
正如您所看到的,图像分辨率不是很好,并且有一些像素在它们不应该出现的地方弹出,但这是预期的,因为我们在特定任务上使用通用模型。如前所述,最好的方法是在适合您希望完成的任务的数据集上微调您的模型。
这种模型有一些有趣的应用,例如删除在线会议的背景或裁剪运动评估的人。另外,我还提供了一个选项,可以将裁剪后的对象插入指定的背景中。希望你喜欢!
带背景的完整视频
保持好奇,每天学习。
领取专属 10元无门槛券
私享最新 技术干货