专栏首页Reinvent Data ScienceMilvus实战| 以图搜视频系统

Milvus实战| 以图搜视频系统

以图搜视频,顾名思义就是拿一张图片去视频底库里面搜索包含相似镜头的视频。以图搜视频中一个关键的步骤就是视频向量化,视频向量化即在视频中抽取关键帧,对每帧视频进行特征提取,将其转化为结构化的向量。至此,好奇的读者可能会问,这和以图搜图有什么区别呢?是的,对视频所有关键帧图片的搜索本质上就是以图搜图。

| 系统简介

整个以图搜视频系统的工作流程可以用下面这张图来表示:

视频导入时,首先利用 OpenCV 算法库对传入系统中的一个视频进行切帧,接着将这些关键帧图片利用图片特征提取模型 VGG 来提取向量,然后将提取出来的向量导入到 Milvus 中。对于原始视频,采用 Minio 来进行存储,然后利用 Redis 来存储视频和向量的对应关系。

视频搜索时,首先用同样的 VGG 模型将上传的图片转化成一条特征向量,接着拿这条向量到 Milvus 中进行相似向量搜索,查找出最相似的若干条向量,然后利用 Redis 中存储的向量和视频的对应关系到 Minio 中取出视频返回到前端界面上。

| 数据准备

本文以 Tumblr 上面大约 10 万个 gif 动图为例搭建了一个以图搜视频的端到端解决方案。读者可以使用自己的视频文件来进行系统搭建。

| 系统部署

本文搭建以图搜视频的代码已经上传到了GitHub仓库,仓库地址为:https://github.com/JackLCL/search-video-demo

Step1 镜像构建

整个以图搜视频系统需要使用到 Milvus 0.7.1 docker、Redis docker、Minio docker、前端界面 docker 和后台 api docker。前端界面 docker 和后台 api docker 需要读者自己构建,其余三个 docker 可以直接从 docker hub 拉取。

# 获取以图搜视频代码$ git clone -b 0.7.1 https://github.com/JackLCL/search-video-demo.git# 构建前端界面 docker 和 api docker 镜像$ cd search-video-demo & make all

Step2 环境配置

本文使用 docker-compose 来对前面提到的五个容器进行管理。docker-compose.yml 文件的配置可以参考下表:

上表中的 ip 地址 192.168.1.38 为本文搭建以图搜视频系统使用的服务器地址,用户需要根据自己的实际情况对其进行修改。

Milvus、Redis 和 Minio 需用户手动创建存储目录,然后在 docker-compose.yml 中进行对应的路径映射。比如,本文创建的的存储目录分别为 :

/mnt/redis/data /mnt/minio/data /mnt/milvus/db

所以在 docker-compose.yml 的 Milvus、Redis 和 Minio 的配置部分可以按照下图配置:

Step3 系统启动

利用 Step 2 中修改好的 docker-compose.yml 启动以图搜视频系统需要用到的五个 docker 容器:

$ docker-compose up -d

启动完成以后,可以利用 docker-compose ps 命令来查看五个 docker 容器是否启动成功。正常启动后的结果界面如下图所示:

到现在为止,整个以图搜视频系统就已经搭建好了,不过系统的底库里面还没有视频。

Step4 视频导入

在系统代码仓库的 deploy 目录下面,有一个名叫 import_data.py 视频导入脚本。读者只需修改脚本中的视频文件的路径和视频导入时间间隔即可运行脚本进行视频导入。

data_path :需要导入的视频的路径。

time.sleep(0.5) :表示导入视频的时间间隔,本文搭建以图搜视频系统的服务器有 96 个 CPU 内核,导入视频的时间间隔设置为 0.5 秒比较合适。如果 CPU 核数更少,则设置的导入视频的时间间隔应该适当延长,否则会导致 CPU 占用过高而产生僵尸进程。

启动命令如下:

$ cd deploy
$ python3 import_data.py

导入过程如下图所示:

等待视频导入完成以后,整个以图搜视频系统就全部搭建完成了!

| 界面展示

打开浏览器,输入 192.168.1.38:8001 即可看到以图搜视频的界面,如下图所示:

点击右上角的设置图标,可以看到底库里的视频:

点击左边的上传框,可以上传一张你想搜索的图片,然后会在右边界面搜索出包含相似镜头的视频:

接下来就尽情享受以图搜视频的乐趣吧!

| 结语

本文利用 Milvus 搭建起了以图搜视频系统,展示了 Milvus 在非结构化数据处理中的应用。Milvus 向量相似度检索引擎可以兼容各种深度学习平台,搜索十亿向量仅毫秒响应。您可以使用 Milvus 探索更多 AI 用法!

本文分享自微信公众号 - ZILLIZ(Zilliztech),作者:李成龙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 利用Doc2Vec和Milvus搭建相似文章召回服务

    上星期六很高兴请到了我们 Milvus 用户-松鼠,来与我们做了一期直播。想知道如何用 Doc2vec 和 Milvus 做相似文章推荐吗?欢迎点击视频看回放~

    ZILLIZ
  • 视频|10分钟讲清楚Milvus 以图搜图、以图搜视频

    结合成熟的深度学习模型, Milvus 向量搜索引擎能快速的将更多的技术落地到各种的 AI 场景当中。 今天我们要和大家介绍的是 Milvus 在计算机视觉领域...

    ZILLIZ
  • Milvus开源向量搜索引擎,轻松搭建以图搜图系统

    当您听到“以图搜图”时,是否首先想到了百度、Google 等搜索引擎的以图搜图功能呢?事实上,您完全可以搭建一个属于自己的以图搜图系统:自己建立图片库;自己选择...

    ZILLIZ
  • 移动平台上的视频主观质量评价

    本文是来自MHV(Mile High Video)2019的演讲,演讲者来自于Twitter公司的Sebastiaan Van Leuven。本次演讲主要讲述如...

    用户1324186
  • 镁客请讲|来画视频朴孟军:AI加码动画短视频制作,让小白用户像制作PPT一样做动画视频

    2016年,微博红人papi酱获得逻辑思维、真格基金等资本共计1200万融资的新闻迅速登上了各大媒体的头条。这一刻短视频究竟是不是一个风口,答案昭然若揭。后来,...

    镁客网
  • 视频播放到期后可否实现自动删除?

    早在1992年,美国科幻小说大师威廉·吉布森的诗集《阿古利巴:死亡之书》,以一张3.5英寸软盘作为载体,每一行都使用计算机算法加密,按照程序设计300行长诗以滚...

    点量小崔
  • UC伯克利超酷研究:舞痴和舞王之间,只差一个神经网络

    现在只要有别人跳舞的视频,你也随时都可以是视频里的主角,而且无需动辄昂贵的3D或是动作捕捉技术。

    量子位
  • 技术干货 | 细说YouTube推荐系统的变迁

    作者简介 郝俊禹:达观数据高级工程师,曾获美国大学生数学建模竞赛二等奖,目前参与达观数据推荐系统研发,负责酷6,wifi万能钥匙和视频看看等项目。 ---- ?...

    达观数据
  • 刺激!一行代码就可下载b站等全网视频!

    大家昨天朋友圈应该都被何冰老师《后浪》演讲视频刷屏了,小破站属实也是火了一把。里面也是出现了很多精彩让人产生共鸣的话,比如:

    Python进阶者
  • 视频AI智能分析高效快速解决视频取流、分发、级联等流媒体基础设施建设的难题

    很多做视频分析的厂家,在基础视频传输这一块的积累和沉淀还不是很多,而用传统的一些开源产品是无法达到稳健可靠视频调取与传输的,也就是视频的基础建设是需要时间积淀,...

    EasyNVR

扫码关注云+社区

领取腾讯云代金券