教程 | 如何使用TensorFlow API構建視頻物體識別系統

2021-02-15 機器之心

在谷歌 TensorFlow API 推出後,構建屬於自己的圖像識別系統似乎變成了一件輕鬆的任務。本文作者利用谷歌開源的 API 中 MobileNet 的組件很快開發出了識別圖像和視頻內物體的機器學習系統,讓我們看看她是怎麼做到的。

市面上已有很多種不同的方法來進行圖像識別,谷歌最近開源的 TensorFlow Object Detection API 是其中非常引人注目的一個,任何來自谷歌的產品都是功能強大的。所以,讓我們來看看它能夠做到什麼吧,先看結果:

來自 TensorFlow API 的視頻物體檢測

你可以在 GitHub 上找到這個小項目的全部代碼:https://github.com/priya-dwivedi/Deep-Learning/blob/master/Object_Detection_Tensorflow_API.ipynb

訓練的過程有多複雜?首先讓我們來看看 API 本身。

 TensorFlow Object Detection API 的代碼庫是一個建立在 TensorFlow 之上的開源框架,旨在為人們構建、訓練和部署目標檢測模型提供幫助。

該 API 的第一個版本包含:

一個可訓練性檢測模型的集合,包括:

帶有 MobileNets 的 SSD(Single Shot Multibox Detector)

帶有 Inception V2 的 SSD

帶有 Resnet 101 的 R-FCN(Region-Based Fully Convolutional Networks)

帶有 Resnet 101 的 Faster RCNN

帶有 Inception Resnet v2 的 Faster RCNN

上述每一個模型的凍結權重(在 COCO 數據集上訓練)可被用於開箱即用推理。

一個 Jupyter notebook 可通過我們的模型之一執行開箱即用的推理

藉助谷歌雲實現便捷的本地訓練腳本以及分布式訓練和評估管道

SSD 模型使用了輕量化的 MobileNet,這意味著它們可以輕而易舉地在行動裝置中實時使用。在贏得 2016 年 COCO 挑戰的研究中,谷歌使用了 Fast RCNN 模型,它需要更多計算資源,但結果更為準確。

如需了解更多細節,請參閱谷歌發表在 CVPR 2017 上的論文:https://arxiv.org/abs/1611.10012。

在 TensorFlow API 的 GitHub 中,已經有經過 COCO 數據集訓練過的可用模型了。COCO 數據集包含 30 萬張圖片,90 中常見事物類別。其中的類別包括:


COCO 數據集的部分類別

如上所述,在 API 中,谷歌提供了 5 種不同的模型,從耗費計算性能最少的 MobileNet 到準確性最高的帶有 Inception Resnet v2 的 Faster RCNN:


在這裡 mAP(平均準確率)是精度和檢測邊界盒的乘積,它是測量網絡對目標物體敏感度的一種優秀標準。mAP 值越高就說明神經網絡的識別精確度越高,但代價是速度變慢。

想要了解這些模型更多的信息,請訪問:https://github.com/tensorflow/models/blob/477ed41e7e4e8a8443bc633846eb01e2182dc68a/object_detection/g3doc/detection_model_zoo.md

使用 API

首先,我嘗試使用了其中最輕量級的模型(ssd_mobilenet)。主要步驟如下:

總體而言,這個過程非常簡單。API 文件還提供了一個 Jupyter 筆記本來幫助記錄主要步驟:https://github.com/tensorflow/models/blob/master/object_detection/object_detection_tutorial.ipynb

這個模型在示例圖片中的表現非常不錯(如下圖):


在視頻中運行

隨後我開始嘗試讓這個 API 來識別視頻中的事物。為了這樣做,我使用了 Python 中的 moviepy 庫(連結:http://zulko.github.io/moviepy/)。主要步驟如下:

這段代碼需要一段時間來運行,3 到 4 秒的剪輯需要約 1 分鐘的處理,但鑑於我們使用的是預製模型內固定的加載內存空間,所有這些都可以在一臺普通電腦上完成,甚至無需 GPU 的幫助。這太棒了!只需要幾行代碼,你就可以檢測並框住視頻中多種不同的事物了,而且準確率很高。

當然,它還有一些可以提高的空間,如下圖所示,它幾乎沒有識別出鴨子的存在。

原文連結:https://medium.com/towards-data-science/is-google-tensorflow-object-detection-api-the-easiest-way-to-implement-image-recognition-a8bd1f500ea0

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權

✄---

加入機器之心(全職記者/實習生):hr@jiqizhixin.com

投稿或尋求報導:editor@jiqizhixin.com

廣告&商務合作:bd@jiqizhixin.com


點擊閱讀原文,查看機器之心官網↓↓↓

相關焦點

  • 使用TensorFlow進行訓練識別視頻圖像中物體
    本教程針對Windows10實現谷歌公布的TensorFlow Object Detection API視頻物體識別系統,其他平臺也可借鑑。本教程將網絡上相關資料篩選整合(文末附上參考資料連結),旨在為快速搭建環境以及實現視頻物體識別功能提供參考,關於此API的更多相關信息請自行搜索。注意: windows用戶名不能出現中文!!!
  • Google發布了一個新的Tensorflow物體識別API
    谷歌最近發布了一個使用Tensorflow的物體識別API,讓計算機視覺在各方面都更進了一步。  (想要了解更多跟模型有關的知識https://github.com/tensorflow/models/blob/477ed41e7e4e8a8443bc633846eb01e2182dc68a/object_detection/g3doc/detection_model_zoo.md)我決定使用最輕量級的模型(ssd_mobilenet)。
  • 業界 | 谷歌開源TensorFlow Object Detection API物體識別系統
    機器之心編譯參與:黃小天、李澤南近日,谷歌在其開源博客上發表了一篇名為《Supercharge your Computer Vision models with the TensorFlow Object Detection API》的文章,通過 TensorFlow Object Detection API 將谷歌內部使用的物體識別系統
  • 利用Tensorflow構建自己的物體識別模型(一)
    問題或建議,請公眾號留言;[如果你覺得本文對你有幫助,歡迎讚賞]原料windows10+python3.5+pycharm安裝tensorflow利用Tensorflow訓練搭建自己的物體訓練模型,萬裡長徵第一步,先安裝tensorflow。
  • 教程 | Tensorflow keras 極簡神經網絡構建與使用
    keras極簡神經網絡構建教程Keras介紹Keras (κέρας) 在希臘語中意為號角,它來自古希臘和拉丁文學中的一個文學形象。發布於2015年,是一套高級API框架,其默認的backend是tensorflow,但是可以支持CNTK、Theano、MXNet作為backend運行。其特點是語法簡單,容易上手,提供了大量的實驗數據接口與預訓練網絡接口,最初是谷歌的一位工程師開發的,非常適合快速開發。
  • 使用Keras API在TensorFlow中構建神經網絡的3種方法
    使用MNIST進行圖像分類是一項非常簡單的任務。我們嘗試實現的目標是使用著名的MNIST數據集訓練一個模型來識別手寫數字。如果你想閱讀完整的教程,可以找到我關於圖像分類的單獨教程。使用MNIST數據集在10分鐘內進行圖像分類使用下面的代碼,我們將導入所有層和模型,以免在以後的部分中困擾我們。我們還下載了MNIST數據集並對其進行了預處理,以便可以在將要用這三種不同方法構建的所有模型中使用它。
  • 使用Tensorflow Object Detection API實現對象檢測
    對常見的物體幾乎都可以做到實時準確的檢測,對應用場景相對簡單的視頻分析與對象檢測提供了極大的方便與更多的技術方案選擇。tensorflow object detection提供的預訓練模型都是基於以下三個數據集訓練生成,它們是:COCO數據集Kitti數據集Open Images數據集每個預訓練模型都是以tar文件形式存在,其中包括以下幾個部分:基於COCO數據集訓練的模型名稱、運行速度、mAP指標及輸出列表如下:二:使用模型實現對象檢測
  • 谷歌開放GNMT教程:如何使用TensorFlow構建自己的神經機器翻譯系統
    今天,我們很高興能夠發布最新的 TensorFlow 神經機器翻譯教程,幫助讀者全面了解 seq2seq 模型,並介紹如何從頭開始構建有競爭力的翻譯模型。該教程儘可能簡單地呈現該過程,教程首先介紹神經機器翻譯的背景知識,並講述構建 vanilla 系統的具體代碼。然後介紹注意力機制 [3, 4] 這一幫助 NMT 系統處理長句的重要工具。
  • 在Android中藉助TensorFlow使用機器學習
    這篇文章要求讀者了解機器學習的概念,並且知道如何建立機器學習的模型(在這個例子中使用了預訓練模型)。很快,我會寫一系列關於機器學習的文章,可以幫助大家構建機器學習的模型。1.預備一些需要知道的重點知識(需要有一點機器學習的概念):TensorFlow 的核心是使用C++寫的為了構建Android project,我們需要使用JNI調用C++的方法,如locadModel, getPredictions等等。
  • 教程 | 如何使用TensorFlow中的高級API:Estimator、Experiment和Dataset
    該配置指定如何運行訓練和評估,以及如何存出結果。這些配置通過 RunConfig 對象表示,該對象傳達 Estimator 需要了解的關於運行模型的環境的所有內容。模型函數是一個 Python 函數,它構建了給定輸入的模型(見後文)。
  • 【乾貨】快速上手圖像識別:用TensorFlow API實現圖像分類實例
    作者通過TensorFlow API快捷地實現一個命令行圖像分類例子,詳細介紹了如何按步驟下載模型、加載圖像、執行圖像識別命令。你不需要GPU,只要有一臺筆記本就可以按照作者的步驟進行操作,並最終完成圖像識別任務。教程非常方便快捷,讀完本文之後相信你能秒秒鐘實現一個圖像分類任務。專知內容組編輯整理。
  • 【下載】最新TensorFlow深度學習教程指引《Learning TensorFlow,構建深度學習系統指引》
    這本實用的書提供了一個端到端的TensorFlow實踐指導,幫助你構建和計算機視覺訓練神經網絡,自然語言處理(NLP),語音識別,和一般的預測分析。作者Tom Hope,Yehezkel Resheff,和Itay Lieder為數據科學家和工程師的學生和研究人員提供一個實用指引教程。
  • Tensorflow Object Detection API介紹和應用(mac版)——(1.安裝跑測試程序)
    Tensorflow Object Detection API是谷歌TensorFlow下面的物體檢測項目,可以實現圖像內物體檢測,支持視頻和圖片,可以在圖片上框框出實體,標註出實體具體類別(類別是自己打的標籤,或者項目內提供的預訓練模型和標籤數據)。原理呢,目前還一點沒看。
  • 【官方教程】TensorFlow在圖像識別中的應用
    人類在ImageNet挑戰賽上的表現如何呢?Andrej Karpathy寫了一篇博文來測試他自己的表現。他的top-5 錯誤率是5.1%。這篇教程將會教你如何使用Inception-v3。你將學會如何用Python或者C++把圖像分為1000個類別。我們也會討論如何從模型中提取高層次的特徵,在今後其它視覺任務中可能會用到。
  • TensorFlow Object Detection API 實踐
    前面的文章TensorFlow 上基於 Faster RCNN 的目標檢測已經介紹過目標檢測概念,直觀表述是用算法在圖片中用框框標記各種各樣的目標,讓機器能像人眼一樣迅速發現場景中物體的位置和大小然而構建準確率高的、能定位和識別單張圖片裡多種物體的模型仍然是計算機視覺領域一大挑戰。TF Object Detection API 【1】是一個構建在 TensorFlow 之上的可以簡化構建、訓練、部署目標檢測模型的開源框架。TF Object Detection API 安裝步驟參考【2】。
  • 如何在 Ubuntu 16.04 上安裝並使用 TensorFlow
    TensorFlow 是一個深度學習軟體系統。根據谷歌機器學習人工智慧系統中的排名(RankBrain),TensorFlow 可以很好地用於信息檢索。TensorFlow 可以執行圖像識別,如谷歌的 Inception,以及人類語言的音頻識別。它也有助於解決其他不特定於機器學習的問題,如偏微分方程。
  • 使用Tensorflow進行實時移動視頻對象檢測
    ,智能交通系統等,人們希望建立定製的機器學習模型以檢測和識別特定對象。但是,從頭開始構建定製模型需要大量的專業知識,時間和計算資源-從數據標記到模型服務。為減少障礙,Google發布了Tensorflow對象檢測API和Tensorflow Hub等開源工具,使人們能夠利用那些已經廣泛使用的預先訓練的模型(例如Faster R-CNN,R-FCN和SSD)來快速構建自定義模型,遷移學習。
  • 教程 | 如何使用Docker、TensorFlow目標檢測API和OpenCV實現實時目標檢測和視頻處理
    作為一名數據科學家,我將展示如何在日常工作中使用 Docker。請注意,我用的是來自 Tensorflow 的經典 ssd_mobilenet_v2_coco 模型。我在本地複製了模型(.pb 文件)和對應的標籤映射,以便後續個人模型的運行。我相信現在使用 Docker 已經是數據科學家最基礎的技能了。
  • TensorFlow Android Demo
    本文使用 r1.5 branch 源碼,內有 4 個 demo,分別為:對鏡頭中間的物體使用 Inception V3 模型分類,Demo 效果如圖所示。這是一個目標檢測 app,可以對照片中「感興趣」的物體繪製邊界框。使用 multibox 模型。
  • 社區分享 | TensorFlow Lite C++ API 開源案例教程
    因此,我們這個項目採用 Bazel 作為構建工具,方便 TensorFlow Lite 與 OpenCV 等第三方庫的代碼版本管理。首先,我們一起了解一下如何用 Bazel 構建 C++ 項目。設置構建環境在構建項目之前,我們需要設置項目的構建環境 (Workspace)。