专栏首页AI研习社手把手教你如何在Python中使用谷歌的视频智能API

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

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

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

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

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

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

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.sh
google-cloud-sdk/bin/gcloud init

第二步 —— 写 Python 代码

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

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

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

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

pip install google-cloud-videointelligence

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

#Import libraries
import argparse
from google.cloud import videointelligence

#Load the full path of JSON file obtained in step 1. Replace '/Users/harry/Downloads/SampleProject-1abc.json' with your filepath
import os
os.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 会因占用他们的资源而收费!

本文分享自微信公众号 - AI研习社(okweiwu),作者:雷锋字幕组

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

原始发表时间:2019-04-30

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 想快速部署机器学习项目?来看看几大主流机器学习服务平台对比吧

    日前,kdnuggets 上的一篇文章对比了三大公司(谷歌、微软和亚马逊)提供的机器学习服务平台,对于想要启动机器学习项目的公司或是数据科学新手来说,提供了非常...

    AI研习社
  • 谷歌云工程师亲自示范:新发布的 Video Intelligence API 究竟怎么用

    AI研习社按:3 月初,谷歌在 Google Cloud Next 2017 大会上对外公布了 Cloud Machine Learning API 更新。此次...

    AI研习社
  • 紧跟未来深度学习框架需求,TensorFlow 推出 Eager Execution

    Google 的 TensorFlow 是 AI 学习者中使用率最高、名气也最大的深度学习框架,但由于 TensorFlow 最早是基于 Google 的需求开...

    AI研习社
  • 为什么应该使用RESTful Web服务设计

    你可能负责一个API。也许你正准备投入制作一个,并且很期待开始。但是要小心,因为好的API设计可能很难。

    程序你好
  • DAY87:阅读Interoperability between Runtime and Driver APIs

    An application can mix runtime API code with driver API code.

    GPUS Lady
  • API的计量与限速 | 将一个Web API纳入API管理 |API Management学习第二篇

    在本文中,我们将针对:API Management学习第一篇中编写的Restful API,进行纳管。

    魏新宇
  • 人脸识别、情感分析,开发者必备50个机器学习API|值得收藏

    该清单按照字母排序,对 API 的概述是基于对应官网所提供的信息整合而成。要是大家发现该清单中错过了某些当前流行的 API,可以在评论中告知。

    BestSDK
  • Spring Boot处理REST API错误的正确姿势

    如何正确的处理API的返回信息,让返回的错误信息提供更多的含义是一个非常值得做的功能。 默认一般返回的都是难以理解的堆栈信息,然而这些信息也许对于API的客户...

    ImportSource
  • 一图看懂API安全

    感谢大家点进小编的文章,谢谢啦。大家有什么想法和评论,欢迎在文章结尾下方留言。下面直接进入正文。可能有人不理解,为什么API安全会是什么呢?API安全早期可是世...

    Ramos
  • 一图看懂API安全

    感谢大家点进小编的文章,谢谢啦。大家有什么想法和评论,欢迎在文章结尾下方留言。下面直接进入正文。可能有人不理解,为什么API安全会是什么呢?API安全早...

    糖果

扫码关注云+社区

领取腾讯云代金券