手把手教你如何在Python中使用谷歌的视频智能API

2019 年 4 月 30 日 AI研习社

本文为 AI 研习社编译的技术博客,原标题 :

Step by Step Tutorial on how to use Google’s Video Intelligence API in Python

作者 | Harinath Selvaraj

翻译 | 伽罗瓦群   

校对 | 邓普斯•杰弗        审核 | 酱番梨       整理 | 立鱼王

原文链接:

https://medium.com/harinathselvaraj/step-by-step-tutorial-on-how-to-use-googles-video-intelligence-api-in-python-8e2474ef959e

注:本文的相关链接请访问文末【阅读原文】

在军事、安防、监控领域,从输入视频中检测物体的任务扮演者关键的角色。姿态变化、衣着、背景杂斑、光照、容貌等因素会使这个任务变得更具挑战性。

成千上万的被雇用来检测安全视频片段,以辨认视频中是否存在某一个物品。


人类通常把监控视频内容当作一种职业。

这显然是一个累人又耗时的工作。如果有人随时告诉我们视频中是否有一辆车或一个人会怎样呢?由于深度学习和计算机视觉技术的发展,这些都变成了可能。

在过去数年中,深度学习已经超越了各种堪称艺术的机器学习方法。尤其在计算机视觉领域,深度学习对其产生了深远的影响。


Google在这个领域做了广泛的研究,并开发了一个系统(一个深度学习模型)可以在视频中给出物体的名字。这需要耗费数以亿计的图片和视频,喂给 Google 用于训练算法。有趣的是——所有的东西都可以通过 API 调用实现。

下面是 Google 云视频智能(Google's Cloud Video Intelligence)的访问链接:https://cloud.google.com/video-intelligence

API 支持通常的视频格式,如 .MOV、.MPEG4、.MP4、.AVI。

  你可以用 Google 视频智能 API 做什么?

下面的任务(目前人类所做过的)可以通过一个简单的API调用实现。

  • 标签检测:在视频中检测物体,如狗、花、人。

  • 显式内容检测:在视频中检测成人内容。

  • 拍摄变化检测:检测视频中的场景变化。

  • 区域化:标记一个将要处理的区域。

  • 语音听写:把视频中的语音变成文本。

  • 物体跟踪(Beta):在视频中跟踪物体并汇报它们的位置(边界框)。

  • 文本检测(Beta):在视频中执行光学字符识别(OCR)检测并提取文本。

既然我们知道了 API 可以做什么,让我们看看实现部分。由于许多深度学习工程师使用 Python 作为他们的主要语言,我将以 Python 展示其用法,尽管其他语言的 API 也是支持的。

  第一步 —— 配置 Google Cloud 账号并启用 API

在你的电脑上打开 Google Cloud 网站。

注意:如果你已经在使用 Google Cloud 了——如果你是使用 Google API,如地图,的开发者,你可能已经熟悉了这一切。

令人可喜的是 —— Google 给首次使用的用户提供 €300 免费点数!?


去控制台 新建项目。确保你已经在账号中 建立收费地址。你需要输入信用卡信息。不用担心,他们不会在 €300 过期之后自动收费。?

下一步是 启用 API。做了这步之后,你也需要提供提供启用 API 的地址。为此,需要 新建服务账号。不要在列表中选择任何角色。在提交表单后选择“Create without role”。这步会产生一组公开和私有密钥的 JSON 文件(用于访问 API)并下载到你的电脑上。妥善保存好这些文件,在第 3 步中将会用到。

现在你已经执行了上述步骤,最后一步是 下载 Google Cloud SDK。

在下载时,访问文件所在目录,解压缩,在命令行中执行下面的命令以安装、初始化 SDK。浏览器会打开一个新的标签,让你登陆 Google Cloud。

google-cloud-sdk/install.shgoogle-cloud-sdk/bin/gcloud init

  第二步 —— 写 Python 代码

现在开始做一点代码练习! ?

我会给你 Python 命令,可以使用视频智能 API。

注意:如果你之前还没有使用过 Python,请前往原文阅读安装 Anaconda 文章。

在编写代码之前,在命令行中安装 Python 软件包

pip install google-cloud-videointelligence

我们总算搞定了。下面是用 Python 命令调用 API ——

#Import librariesimport argparsefrom google.cloud import videointelligence
#Load the full path of JSON file obtained in step 1. Replace '/Users/harry/Downloads/SampleProject-1abc.json' with your filepathimport osos.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/Users/harry/Downloads/SampleProject-1abc.json"
#Call the API client = videointelligence.VideoIntelligenceServiceClient()job = client.annotate_video( input_uri='gs://cloud-ml-sandbox/video/chicago.mp4', features=['LABEL_DETECTION'],)result = job.result()print(result)

输出结果是这样的:

annotation_results {  input_uri: "/cloud-ml-sandbox/video/chicago.mp4"  segment_label_annotations {    entity {      entity_id: "/m/01l7t2"      description: "downtown"      language_code: "en-US"    }    category_entities {      entity_id: "/m/01n32"      description: "city"      language_code: "en-US"    }    segments {      segment {        start_time_offset {        }        end_time_offset {          seconds: 38          nanos: 757872000        }      }      confidence: 0.9062400460243225    }  }  segment_label_annotations {    entity {      entity_id: "/m/06gfj"      description: "road"      language_code: "en-US"    }    segments {      segment {        start_time_offset {        }        end_time_offset {          seconds: 38          nanos: 757872000        }      }      confidence: 0.8779934048652649    }  }.....

在上面的 API 结论中包含了描述性字段(描述物品)并且以及在视频中出现的时间和置信度。置信度为 0.9062400460243225 意味着有 90% 准确度的信心。

你可以直接载入 JSON 输出数据到数据库。这使得你可用查询语句查询数据库,检查某一个物体是否在某一个时间帧出现。

现在,你可能会注意到 ‘LABEL_DETECTION’是一个给定的特征。我没有告诉你视频智能 API 还可以更多的事情吗?这是真的,你还可以提取更多其他特征。下面是一些样本代码:

features=[‘LABEL_DETECTION’, ‘SHOT_CHANGE_DETECTION’]

下面是  各种参数可以指定特征输入:

  • LABEL_DETECTION 标签检测。检测物体,如狗、花。

  • SHOT_CHANGE_DETECTION 拍摄场景改变检测。

  • EXPLICIT_CONTENT_DETECTION 显示内容检测。

  • SPEECH_TRANSCRIPTION 语音听写。

注意 —— 如果你只是使用 Google Cloud 项目来进行测试而且你不再想用它了,确保你删除你的项目,否则,Google 会因占用他们的资源而收费!

想要继续查看该篇文章相关链接和参考文献?

点击底部【阅读原文】即可访问:

https://ai.yanxishe.com/page/TextTranslation/1451


AI求职百题斩 · 每日一题


每天进步一点点,长按扫码参与每日一题!




长按二维码

关注 AI研习社

点击
阅读原文
,查看更多内容
登录查看更多
3

相关内容

应用程序接口(简称 API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。
专知会员服务
55+阅读 · 2020年7月4日
少标签数据学习,54页ppt
专知会员服务
199+阅读 · 2020年5月22日
Python计算导论,560页pdf,Introduction to Computing Using Python
专知会员服务
74+阅读 · 2020年5月5日
《强化学习—使用 Open AI、TensorFlow和Keras实现》174页pdf
专知会员服务
139+阅读 · 2020年3月1日
【教程】自然语言处理中的迁移学习原理,41 页PPT
专知会员服务
96+阅读 · 2020年2月8日
【斯坦福&Google】面向机器人的机器学习,63页PPT
专知会员服务
26+阅读 · 2019年11月19日
微软全新视频索引器:机器帮你轻松看懂视频
微软研究院AI头条
5+阅读 · 2019年2月1日
【教程】用深度学习DIY自动化监控系统
GAN生成式对抗网络
4+阅读 · 2018年9月12日
一文看懂如何将深度学习应用于视频动作识别
使用TensorFlow目标检测和OpenCV分析足球视频
极市平台
5+阅读 · 2018年7月10日
TensorFlow图像分类教程
机器学习研究会
33+阅读 · 2017年12月29日
教程 | 如何使用TensorFlow实现音频分类任务
机器之心
5+阅读 · 2017年12月16日
Tensorflow 文本分类-Python深度学习
Python程序员
12+阅读 · 2017年11月22日
Python NLP 入门教程
大数据技术
19+阅读 · 2017年10月24日
Rapid Customization for Event Extraction
Arxiv
7+阅读 · 2018年9月20日
VIP会员
相关资讯
微软全新视频索引器:机器帮你轻松看懂视频
微软研究院AI头条
5+阅读 · 2019年2月1日
【教程】用深度学习DIY自动化监控系统
GAN生成式对抗网络
4+阅读 · 2018年9月12日
一文看懂如何将深度学习应用于视频动作识别
使用TensorFlow目标检测和OpenCV分析足球视频
极市平台
5+阅读 · 2018年7月10日
TensorFlow图像分类教程
机器学习研究会
33+阅读 · 2017年12月29日
教程 | 如何使用TensorFlow实现音频分类任务
机器之心
5+阅读 · 2017年12月16日
Tensorflow 文本分类-Python深度学习
Python程序员
12+阅读 · 2017年11月22日
Python NLP 入门教程
大数据技术
19+阅读 · 2017年10月24日
Top
微信扫码咨询专知VIP会员