智能视觉行业洞察
消费级智能视觉起源于安防监控系统,逐步在往不同的方向发展。特别是消费级IPC业务,经过多年的发展,形成了基于公有云的SaaS业务生态。可以观察到,消费级智能视觉从原先关注【强安防】的安全感知场景,逐步在向更【多元化、娱乐社交属性】的形态发展。
举例来说:
1)厂商逐渐将视觉能力从IPC逐渐移植到各类智能硬件中,赋予他们看得见的能力,比如宠物喂食机、家用机器人,智慧喂鸟器。多模态模型提供的开放检测能力,也使得更多自定义标签得以检测,准确性和理解性都有很大提升。
2)由于AIGC技术的兴起,C端用户期望获得对设备采集内容的更多个性化能力,比如“视频和图像风格转换”,“社交圈文案自动生成”,或者“自动用户指定主体的抽取录像片段”,从而让用户获得内容创作的成就感。
3)将智能视觉的应用和社交属性关联,让C端用户可以在社区中相互分享和交流心得,提升了产品和服务的粘性。
从而会发现原来传统应用于安防视觉场景的CV小模型已经逐渐无法满足客户和用户的需求。参考上一波AI浪潮先从NLP自然语言蔓延到CV视觉,本次GenAI也从LLM大语言模型逐步渗透到多模态模型。因此,技术的逐渐成熟,让我们可以对智能视觉这个领域进行新的创新和革新。
应用场景介绍
智能视觉行业应用非常广泛,在本文中,将主要聚焦以下三个典型的多模态应用场景:
场景1:视频摘要与总结
对于一个宠物爱好者来说,用户关心的是自己宠物一天的活动轨迹,希望极少的时间看完一段爱宠的短视频,或者通过视频总结来了解宠物一天行动的概述。在CV小模型的时代,由于模型很难很好的理解视频内容并给出视频片段总结,限制了该应用场景的大范围推广。
场景2:视频内容问答
在传统视频应用中,在海量录像片段中找到需要的信息,一直是一个费事费力且C端体验较差的功能。
例如,我们可能想知道,行李箱是否落在某个地方。这时我们通过和多模态构建的系统询问:“你是否见到过一个行李箱”“大概在昨天下午的时间”。通过这样的问答形式,让智能视觉系统成为你的工作生活助手。
场景3:社交圈文案生成
短视频已成为社交应用的主要载体,为用户智能生成、自动剪辑、风格转换后的短视频,谁不想尝试进行分享呢?但是正如大家在用社交媒体来分享个人精彩瞬间时,经常为文案的构思、措辞的选择而花费时间思考。降低用户时间消耗,将大幅提升用户体验。如果有个智能助手自动提供一段适合用户风格的文案,可以打破用户使用的障碍,加速应用破圈。
相关知识
在本文中,将使用两个不同的视觉—语言多模态预训练模型“BLIP2”和“VisualGLM-6B”,结合大语言模型Claude来实现上述应用场景,并提供部署方式以及实现效果展示。
VisualGLM模型介绍
VisualGLM-6B是一个开源的,支持图像、中文和英文的多模态对话语言模型,语言模型基于ChatGLM-6B,具有62亿参数;图像部分通过训练BLIP2-Qformer构建起视觉模型与语言模型的桥梁,整体模型共78亿参数。该模型依靠来自于CogView数据集的30M高质量中文图文对,与300M经过筛选的英文图文对进行预训练,中英文权重相同。在本文中,主要使用VisualGLM-6B做中文部分应用效果演示。
BLIP2模型介绍
BLIP-2是当前流行的多模态模型之一,它包含三个部分:第一个组件是来自CLIP的冻结的图像编码器ViT-L/14,将图像数据作为输入。第二个组件是冻结的LLM FlanT5,输出文本。第三个组件是一个名为Q-Former的可训练模块,它是一个轻量级转换器,将冻结图像编码器与冻结LLM连接起来。BLIP-2在各种视觉语言任务上实现了最先进的性能,在本文中,主要使用BLIP-2做英文部分应用效果演示。
Bedrock Claude介绍
Amazon Bedrock是一项完全托管的服务,可以通过API使用来自AI21 Labs、Anthropic、Cohere、Meta、Stability AI和Amazon等领先人工智能公司的高性能基础模型(FM),加速构建生成式人工智能应用程序。在2023年9月底,亚马逊云科技宣布将Antrophic公司的Claude2模型纳入Amazon Bedrock服务并正式上线。该模型作为ChatGPT-4最强有力的竞争对手,展现了不俗的实力。
方案搭建
本文中展示的Demo,其应用系统设计与方案架构如下:
准备工作
开启一台SageMaker notebook来运行本文中的代码。
这其中,BLIP2文件夹中包含部署BLIP2模型以及应用测试的完整代码;VisualGLM文件夹中包含部署VisualGLM模型以及应用测试的完整代码;video文件夹下包含几段下载好的演示视频;video_frame文件夹用于存储临时抽取的图像关键帧。
需要为Notebook所用的角色添加对“S3”“SageMaker”等服务的完整权限。
部署SageMaker实时终端节点
使用大模型推理容器(LMI)来分别部署“BLIP2”和“VisualGLM-6B”模型,该容器针对使用DJLServing托管大型模型进行了优化。借助SageMaker LMI容器,以及使用Hugging Face库,可以轻松实现模型在SageMaker上的部署。
主要步骤包括:
1)提供一些推理相关的文件和脚本,并打包上传至S3存储桶。
提供serving.properties,这是一个配置文件,可用于向DJL Serving指示要使用的模型并行化和推理优化库。根据您的需要,您可以设置适当的配置。
提供model.py脚本,您可以在这里面自定义推理的前后处理逻辑,包括模型加载,数据前后处理等。
提供requirements.txt,该文件包含需要安装的任何其他pip wheel的文本文件。
2)定义SageMaker模型
3)使用deploy函数进行模型部署,并指定机型和数量。
4)等待终端节点部署完成,状态更改为“Inservice”状态后,即可使用该终端节点进行推理。
生成关键帧的内容描述
主要使用来自pexels网站上的短视频来展示应用效果。
视频抽帧
在本文中,对视频采用间隔为35的间隔抽帧方式。在实际应用过程中,建议结合Amazon Rekognition或者基于SageMaker部署的目标检测模型,来检测动态的目标关键帧,这样有助于减少存储和推理的成本。
生成关键帧内容描述
在上文中,已经部署了“BLIP2”和“VisualGLM-6B”模型的SageMaker实时终端节点。接下来可以通过直接调用的方式来让模型分别产生对于图片帧的中英文描述。
在本次Demo中,将关键帧及其描述分别存储至S3和内存中,用于后续调用Bedrock Claude的推理。在实际生产应用中,建议将图片信息及其描述存储在Amazon Dynamodb中,这是一款快速、灵活的NoSQL数据库服务,可在任何规模下实现个位数毫秒级的性能。随后再基于Dynamodb中的内容进行查找和总结,更适合大规模生产应用。
使用Bedrock Claude进行不同任务
通过配置Bedrock client,并指定模型id为”anthropic.claude-v2″来进行使用。
针对不同的任务类型,分别提供中英文的提示词模板(Prompt Template),来让大模型理解任务以及它要输出的结果。可以在“utils”文件夹下看到针对不同任务的中英文提示词模板。
举个例子,对于“中文应用-社交圈文案生成”任务的提示词模板为:
对于“英文应用-视频摘要与总结”任务的提示词模板为:
在实际生产应用过程中,建议基于提示词工程的知识,根据业务需求针对性进行修改。提供更多的样本以及使用更定制化的agent pipeline有助于您获得更贴近业务需要的效果。
应用效果展示
视频一:
这是一段狗狗在户外嬉戏玩耍的视频,用来测试中文应用。
利用“VisualGLM-6B”+Claude产生视频总结为:
此视频显示两只狗在户外环境中玩耍。它们在草坪上追逐、跳跃和玩球,狗狗们正在享受户外活动和游戏。它们看起来开心并且互相间存在友好的互动。整个场景给人一种轻松愉快的感觉。
产生的社交圈文案为:
这个视频展示了我的两只可爱的宠物狗Milo和Bailey在我们后院草坪上玩耍的画面。它们互相追逐、跳跃,看起来非常开心。
我们家的后院有一个很大的草坪,是狗狗们最喜欢的玩耍场所。每当我拿出飞盘或球,Milo和Bailey就会非常兴奋地跑过来参与游戏。看着它们快乐地玩耍,我感到非常欣慰。我希望通过这段视频,也能让大家看到我的两只小宝贝有多可爱!希望这个视频也能给大家带来欢乐和笑容。
我会继续与Milo和Bailey在后院嬉戏,记录下更多它们快乐成长的点点滴滴,与大家分享。感谢大家的观看!
对于视频连续的视觉问答:
我的狗狗今天去了哪里?
狗狗今天去了有草坪的地方
它做了什么?
它在那里玩球、追逐、跳跃等游戏。
视频二:
这是一段婴儿玩耍的视频,用来测试英文应用。
利用BLIP2+ Claude产生视频总结为:
This video shows a baby laying on a bed. The baby is seen sleeping with his feet on the bed and pillow. The baby also has his hands on his knees at times. There are moments when a person is looking down at the baby’s feet in the bed.
产生的社交圈文案为:
This video shows my little angel growing up so fast! 100 days ago you came into this world and changed our lives forever. Watching you grow from a tiny newborn to an expressive baby has been an amazing journey. Your silly smiles brighten each day, even when mama is exhausted. Your arrival brought new meaning to our family. I hope we have many more days together as you continue to grow. Can’t wait to look back on these precious memories of your first days!
对于视觉问答问题“Did my baby has dangerous behaviors today?”,产生的回答为:
No.
视频三:
这是一段镜头捕捉鸟类活动的视频,用来测试英文应用。
利用BLIP2+Claude产生视频总结为:
This video shows a birdhouse in a garden with trees and bushes in the background. A small bird is sitting inside the birdhouse or on its roof. The birdhouse is made of wood and has holes on the sides and top for the bird to enter and exit. The video focuses on capturing the birdhouse from different angles with the bird inside its nest.
产生的社交圈文案为:
This video shows some precious moments with my little feathered friend! Over the past year, I’ve had the joy of watching a sweet bird make its home in the wooden birdhouse in my backyard. Through changing seasons, my new neighbor stuck around, peeking its head out of the round hole in its cozy abode. I loved seeing its bright blue feathers and hearing its cheerful chirps on sunny mornings.
I feel so lucky to have made a new friend! This little bird brought me comfort and made me smile during difficult days. I hope it continues to stay in the neighborhood so we can enjoy more special moments together.
对于视觉问答问题“What kind of bird appeared today? ”,产生的回答为:
Blue bird
工程化应用方案
除了上述轻量级应用方案,亚马逊云科技原型团队(RP)还提供一个生产级别的解决方案,可通过CDK(Cloud Development Kit)一键部署到客户的环境中。该方案参考了当前流行的RAG(Retrieval-Augmented Generation)架构,并提供了两个API接口供客户使用。
提取关键帧的详细信息:通过第一个API接口,客户可以从视频中提取关键帧,并将详细信息保存在Dynamodb数据库中。这些详细信息包括图像特征、目标检测结果、时间戳等,以便后续的问答功能使用。
问答功能:通过第二个API接口,客户可以与系统进行问答交互。客户可以提出问题,系统将基于RAG架构进行信息检索和生成,并返回与视频内容相关的答案。这样,客户可以通过与系统的交互来获取关于视频的问答结果。
该方案视频内容问答架构包括五个模块:视频抽帧、目标检测、视频语言理解(VLM)、构建信息库和大语言模型(Bedrock)。
视频抽帧:从输入的视频中每秒提取一帧图像,并将这些图像传递到下一个模块进行处理。
目标检测:在抽取的图像中使用开放域目标检测模型,识别出其中的物体和目标。根据设定的兴趣项(如人、车、宠物),筛选出感兴趣的帧,将其他不相关的帧排除。该环节可基于Amazon Rekognition或使用SageMaker部署的目标检测模型来检测关键目标帧,这样有助于减少存储和推理的成本,在生产应用中十分关键。
视频语言理解(VLM):将经过筛选的感兴趣帧送入VLM模块。VLM有较多可选择模型,除了上文提到的VisualGLM以及BLIP2,后续还有LLaVa、MiniGPT,CogVLM、QWen-VL等模型,模型效果都有较大效果提升。不过更大的模型也意味着更大的推理成本,建议您结合成本以及您应用场景下的效果综合选择。
构建信息库:该模型生成基于图像的描述,并提取出图像中检测到的目标物体和时间信息。这些信息将被存储到数据库(如Dynamodb)中。Amazon Dynamodb是一款快速、灵活的NoSQL数据库服务,可在任何规模下实现个位数毫秒级的性能。随后再基于Dynamodb中的内容进行查找和总结,更适合大规模生产应用。
大语言模型(Bedrock):从Dynamodb中提取与视频帧相关的描述,并将其输入到大语言模型中。该模型会生成关于视频内容的总结,将其存储到另一个Dynamodb数据表中。
通过以上五个模块的协作,能够实现视频内容的提取、筛选、描述生成和总结。这样的架构能够为客户提供强大的视频内容问答功能,使他们能够更好地理解和利用视频数据。基于构建的Dynamodb信息库,可以支持3种不同类型的视觉问答,分别是:生成(generate)、存在(exist)、总结(summary)。
生成通道(Generate Path):如果希望从视频中提出一个开放性问题,可以选择此路径。首先,问题将经过关键帧匹配模块,与帧中的关键词进行匹配,以提取可能回答问题的图像。然后,问题和图像将送入视频语言理解模块(VLM),生成基于问题的描述。最后,会整理一个prompts,将其输入到大语言模型,以回答客户提出的问题。
存在通道(Exist Path):如果想查询视频中某个物体的情况,例如询问手机最后出现的时间,已经将目标检测的结果及相关时间存储在Dynamodb中。可以直接访问Dynamodb数据库,提取相关信息,并将其组织为prompts,然后将其输入到大语言模型中,以获得结果。
总结通道(Summary Path):如果希望获得关于视频内容的总结,可以选择此路径。直接访问Dynamodb数据库,获取关于视频内容的总结信息。
结语
本文聚焦在智能视觉特别是IPC行业和GenAI多模态技术的结合点,从场景应用、技术方案、工程化等方面进行了探讨。
对于泛娱乐场景下的音视频,由于其画面信息和配音信息同样重要,建议除了利用产生BLIP2等多模态模型产生画面描述外,再基于Amazon Transcribe服务将音频转化为文字字幕,综合结合画面和字幕来进行视频总结。