天天看點

谷歌雲工程師親自示範:新釋出的 Video Intelligence API 究竟怎麼用

總體上說,video intelligence api 向開發者開放了一種接入谷歌預訓練模型的方法,該模型不但可以從宏觀上識别目前視訊中每一幀的具體内容,同時還能給出相關内容的顆粒資料(granular data)表述。如下圖所示,假設視訊在 0:07 的時間點出現了一隻小狗。

谷歌雲工程師親自示範:新釋出的 Video Intelligence API 究竟怎麼用

則 video intelligence api 就可以識别這隻狗,并同時識别出整段視訊中所有出現小狗的資料幀。以下代碼展示了在一個标簽下的 jason(javascript object notation)表述:

{       "description": "dog",       "language_code": "en-us",       "locations": [ {         "segment": {           "start_time_offset": 7090474,           "end_time_offset": 8758738         },         "confidence": 0.99793893,         "level": "shot_level" }

這段 jason 代碼以微秒級的時間分割展示了該視訊片段,從代碼中可以看到,api 對該資料幀的識别結果為“dog”,并且标明正确率為 99%。在該段視訊的其他相關片段中,該 api 甚至還能識别出小狗的具體品種(識别結果是 dashchund,即達克斯獵狗,正确率為 81%)。

看到這裡你可能要問,我可以按照 1fps 的幀率将視訊分解,然後對每一幀資料做圖像識别,不也能達到同樣的效果麼?的确如此。對每一幀資料做圖像識别,在上述 jason 描述的層面的确能和 video intelligence api 達到一樣的效果,但後者的功能卻不止于此,而這也是 video intelligence api 的核心競争力之一。

除了上述針對每一幀的解釋之外,此次釋出的 video intelligence api 還能通過特定的分析模型給出不同視訊幀之間的聯系和差別。例如視訊中如果出現了足夠多的禮服和糖果鏡頭,則 api 就可以識别出這是一段關于萬聖節的視訊并标記。不僅如此,此次更新的 api 還具有鏡頭變更檢測功能,即可以分辨視訊中的場景轉換。通過這一功能,開發者可以将視訊按場景完全自動化地按照内容分割成不同的片段,并傳回相應片段的 jason 描述,非常友善。

關于 video intelligence api 更詳細的介紹請參見以下視訊(需科學上網),視訊中的演講嘉賓是 video intelligence api 的産品經理和研發工程師:

以下是本次樣例的原理圖,我在 3 月初的 google cloud next 2017 上曾經做過示範。

谷歌雲工程師親自示範:新釋出的 Video Intelligence API 究竟怎麼用

如圖所示,整個樣例分為前端(圖檔上半部分)和後端(圖檔下半部分)兩部分。

關于後端:本樣例将待處理視訊存儲在谷歌雲 bucket 中,這裡我實作了一個函數,每當使用者添加一個新視訊到該 bucket 時,該函數會被觸發,一方面檢查檔案的合法性(例如是否是視訊檔案,檔案是否完整等),同時負責将合法的視訊檔案傳遞到 api 進行分析。這裡 api 提供了一個非常友善的選擇參數,即使用者可以傳入另一個谷歌雲 bucket 位址,當 api 分析完成後,可以将分析結果,即 jason 表述存儲在該 bucket 位址中。我在樣例中即應用了這一點,将分析結果存儲在了另一個谷歌雲 bucket 中。

前端是我跟另一個同僚 alex wolfe 共同完成的,其中用到了 es6,sass,gulp,canvasjs 等各種用戶端 js 工具(具體可以參考 github 代碼),實際上實作了一個基于谷歌 app engine 的 node.js 應用。

最後需要指出的是,除了樣例中的用法外,使用者還可以直接在浏覽器端直接體驗 video intelligence api,位址如下:

或者使用者也可以在上述連結注冊,對 api 進行更深度的體驗。

以下是關于文中樣例的視訊示範位址:

本文作者:恒亮

繼續閱讀