1. 程式人生 > >如何盯住梅西:TensorFlow目標檢測實戰

如何盯住梅西:TensorFlow目標檢測實戰

近日,一篇題為《Following Messi with TensorFlow and Object Detection》的教程文章展示瞭如何通過 TensorFlow 訓練定製的目標檢測模型,以專門定位和識別足球巨星梅西;同時作者也希望這一技術有助於催生出足球新戰術,提升賽事水平。

我們之前曾把 TensorFlow 與目標檢測模型結合使用,但使用的一直是預先設定的傳統資料集,比如 COCO。這次的挑戰將再高一級,我會分析一個足球比賽的片段,並識別其中至少一個球員。

一提到足球,你首先想到的可能是那些天才球員,比如阿根廷人梅西。本文中,我將會:

  • 訓練一個定製的目標識別模型以定位梅西
  • 選擇一個真實的賽事轉播視訊(本文中我使用的今年 8 月 31 日世界盃預選賽南美區,烏拉圭對戰阿根廷的錄影),看看我們能得到什麼結果。
  • 通過這項技術,我們或許可以設計新的戰術,提高足球賽事的水平。

注意:我們將會結合使用 TensorFlow 與上述目標檢測模型,且均具備 Apache License 2.0 許可證。

我們將從最終獲取的結果開始:

1857920171013105509.png

比賽中的一段慢動作回放

如果你對此感興趣,我建議你多花點時間一步一步學習該模型的搭建步驟。

它包含三個重要的步驟:

  1. 構建有目標可供檢測的定製資料集
  2. 通過 TensorFlow 訓練和評估該模型
  3. 運用該模型

步驟:

構建自定義資料集 Moment

1. 我們檢視官方文件,就會發現有單獨的部分介紹如何構建自定義資料集。地址:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/using_your_own_dataset.md

2. 我們需要想要檢測的物體的影象,並且需要給它們打標籤。

  • 對於這種情況,我使用的是 RectLabel 工具,對於 MacOS 是一個不錯的選擇。(也有其他替代工具,如 LabelImg。)
  • 然後就是第一次測試,我收集來的 119 張足球比賽的影象(數量很小,但對測試來說足夠了)。

我給大約 100 張梅西的圖片添加了標籤。

注:如要將樣本投入正式的應用,這一步就需要更多影象。

3. 下一步是把照片和對應的 tag 轉換成 TFFormat 檔案。指令碼地址:https://github.com/nbortolotti/tensorflow-code-experiences/blob/master/custom_model_object_detection/generate_tfrecord.py。(我使用了中間步驟將 xml 註釋標籤轉換成 csv,指令碼地址:https://github.com/nbortolotti/tensorflow-code-experiences/blob/master/custom_model_object_detection/xml_metadata_csv.py。)

4. 記住:完美的環境是構建一個訓練集和評估集。

訓練/評估自定義模型 Moment

5. 上述檔案完成後,我們就可以訓練和評估模型了。

這一步我使用的是機器學習引擎,因為我沒有本地基礎架構可以在 1 小時內執行完整個過程。(官方說明:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_on_cloud.md)

5 個工作執行緒使用標準 GPU。

同樣強烈推薦使用 TensorBoard 對訓練和評估過程進行視覺化。

記住:直接使用谷歌雲端儲存。也就是說,所有檔案必須在這種 repository 型別中,以與訓練引擎完成互動。

530643.png

TensorBoardML 中的 TotalLoss

653324.png

機器學習引擎工作示例

6. 使用了 21.77 個單元,經過 1 小時 9 分鐘和 2 萬次迭代之後,我們得到了多個檢查點和一個可用模型。

7. 我們使用最先進的檢查點,使用訓練好的模型進行推斷。(官方文件:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/exporting_models.md)

使用自定義模型 Moment

8. 我們將從以下選項中使用該模型:

使用該模型和利用檢測結果生成視訊的指令碼。實現示例:https://github.com/nbortolotti/tensorflow-code-experiences/blob/master/custom_model_object_detection/od_video_generator.py。

實時評估視訊和解碼標籤以計算阿根廷球星的外表的指令碼。實現示例:https://github.com/nbortolotti/tensorflow-code-experiences/blob/master/custom_model_object_detection/od_video_label_detector.py

注意:使用慢鏡頭的同樣的 demo。地址:https://www.youtube.com/watch?v=ZCUJJN0q-To

更多示例資訊,詳見:https://github.com/nbortolotti/tensorflow-code-experiences/tree/master/custom_model_object_detection

這可能只是這項有趣研究的開始……後續也許會涉及到如何改進體育戰術、囊括更多運動員和驗證關聯。現在,我們僅僅使用傳統的電視直播資訊,如果我們使用更清晰或能看到球場全景的攝像頭,又會發生什麼呢?

所有球員的位置都可以得到計算。事實上,我們的實驗證明了用機器學習識別球員非常容易,但是我們能根據球員的位置和他們擅長的技術找到更好的戰術嗎?

我希望你能從中獲得樂趣,希望在未來,我們能夠看到更多體育領域的 TensorFlow 實現。

相關推薦

如何盯住西TensorFlow目標檢測實戰

近日,一篇題為《Following Messi with TensorFlow and Object Detection》的教程文章展示瞭如何通過 TensorFlow 訓練定製的目標檢測模型,以專門定位和識別足球巨星梅西;同時作者也希望這一技術有助於催生出足球新戰術,提升賽事水平。 我們之前曾把 Ten

==2==Ubuntu 16.04下安裝TensorFlow 目標檢測 API(物件檢測API)

由於最近剛看了rcnn,faster_rcnn,mask_rcnn的原文,想著做一下實驗,所以就如題,在ubuntu下安裝TensorFlow的目標識別API!!!!在此之前很少用Ubuntu,所以犯的錯很齊全 環境配置參考部落格連結 物件檢測API參考的部落格 主要參照上面的兩個部落格

資源車輛目標檢測

車輛是視訊場景中最關鍵的物件之一,車輛 和 人 是視訊檢測永恆的話題。 車輛檢測 是車輛分析中關鍵的一步,是後續進行 車型識別、車標識別、車牌識別、車輛特徵 的基礎。 關於檢測的方法和框架有很多,不外乎是特徵訓練和分類,這裡推薦兩篇綜述性文章: [1] Benenson R, Omran M, H

SSD-Tensorflow 目標檢測(自定義資料集(VOC2007格式))

一、準備 搭建SSD框架,下載解壓即可 下載pascalvoc資料,自己的資料根據voc格式改寫(圖片的名稱,不用拘泥於6位數字,其他命名也可以)資料集下載點選 解壓後不要混合在一個資料夾下 VOCtrainval用來訓練,VOCtest用來測試。 VOCtrai

Ubuntu 16.04下安裝TensorFlow 目標檢測 API(物件檢測API)

由於最近剛看了rcnn,faster_rcnn,mask_rcnn的原文,想著做一下實驗,所以就如題,在ubuntu下安裝TensorFlow的目標識別API!!!!宣告本人在此之前很少用Ubuntu,所以犯的錯很齊全~~哭 環境配置參考部落格連結 物件檢測AP

基於深度學習的目標檢測技術演進目標檢測到人臉檢測

本篇部落格主要轉載兩篇寫得好的分別介紹基於深度學習的目標檢測和人臉檢測的文章,最近在調研基於深度學習的人臉檢測相關的文章,在網上查相關資料時,有幸看到。文末附帶基於深度學習的目標檢測和人臉檢測相關經典文獻及下載地址。 object detection我

經典網路結構梳理SSD目標檢測演算法。

SSD全稱:Single Shot MultiBox Detector  是2016年ICCV的一篇論文。是目前為止主要的目標檢測演算法。 演算法的主要優點: 1. 速度比Faster-Rcnn快,精度比YOLO高。(在兼顧速度的同時,精度也很高。在不同的測試集下

Tensorflow目標檢測--為視訊中的物品打上標籤

視訊檢測 此程式基於Tensorflow object detection API。 視訊演示:https://www.bilibili.com/video/av32418677/?p=2 # By Bend_Function # https://space.bilibili.

斯坦福目標檢測」深度學習全面指南

來源:雷克世界 概要:Faster R-CNN,R-FCN和SSD是目前市面上最好和最廣泛使用的三個目標檢測模型。而其他受歡迎的模型往往與這三個模型非常相似,所有這些都依賴於深度CNN的知識來完成

tensorflow 目標檢測訓練及評估

基於tensorflow訓練車輛檢測器原始碼已上傳github,裡面集成了一鍵式訓練的指令碼。 0.硬體,一塊1080Ti及以上顯示卡的機器,不建議用CPU訓練。 1.安裝gpu版tensorflow,並搭建訓練環境 sudo pip install tensorflow

目標檢測實戰目標檢測實戰之一--手把手教你LMDB格式資料集製作!

文章目錄 1 目標檢測簡介 2 lmdb資料製作 2.1 VOC資料製作 2.2 lmdb檔案生成 lmdb格式的資料是在使用caffe進行目標檢測或分類時,使用的一種資料格式。這裡我主要以目標檢測為例講解lmdb格式資料的製作。 1 目標檢測簡介 【1】目標檢測主要有兩個任務: 判斷影

PIoU Loss傾斜目標檢測專用損失函式,公開超難傾斜目標資料集Retail50K | ECCV 2020 Spotlight

> 論文提出從IoU指標延伸來的PIoU損失函式,能夠有效地提高傾斜目標檢測場景下的旋轉角度預測和IoU效果,對anchor-based方法和anchor-free方法均適用。另外論文提供了Retail50K資料集,能夠很好地用於評估傾斜目標檢測演算法的效能   來源:曉飛的演算法工程筆記 公

Tensorflow實戰目標檢測

name html com ring coord mage category 技術 sin 首先到github下載相應的Tensorflow模型,以及配置好環境。具體的可參考這篇博客 或者參考Github上,TensorFlow models/research/object

tensorflow利用預訓練模型進行目標檢測(一)預訓練模型的使用

err sync numpy sna sta porting trac git int32 一、運行樣例 官網鏈接:https://github.com/tensorflow/models/blob/master/research/object_detection/obje

tensorflow利用預訓練模型進行目標檢測(二)檢測結果存入mysql資料庫

mysql版本:5.7 ; 資料庫:rdshare;表captain_america3_sd用來記錄某幀是否被檢測。表captain_america3_d用來記錄檢測到的資料。 python模組,包部分內容參考http://www.runoob.com/python/python-modules.html&

tensorflow利用預訓練模型進行目標檢測(四)檢測中的精度問題以及evaluation

一、tensorflow提供的evaluation Inference and evaluation on the Open Images dataset:https://github.com/tensorflow/models/blob/master/research/object_detection/g

目標檢測入門tensorflow實現faster rcnn——TFFRCNN

1.需要下載的資料、程式碼、檔案: 資料:Pascal voc2007資料集 2.訓練和測試 直接使用論文訓練好的模型進行測試:demo.py(在faster_rcnn資料夾下) 進入lib資料夾下進行make cd ./lib make 在根目錄下新建

蜂融網世界杯倒計時2天,你看好西還是C羅

世界杯蜂融網:世界杯倒計時2天,你看好梅西還是C羅 近日,最新一期的2018世界杯最新足球身價榜出爐,榜單涉及到參加本屆俄羅斯世界杯的32隊736人。對於各路球迷和偽球迷來說,這可是一件值得“吃瓜”的大事。下面,我們就來看一看這份最新的世界杯身價榜,裏面究竟藏有哪些驚人的數據?令人出乎意料的是,在全部參賽的世

Faster R-CNN詳解目標檢測的實現過程

最大的 中心 width 小數據 等等 eat tar 優先 博文 本文詳細解釋了 Faster R-CNN 的網絡架構和工作流,一步步帶領讀者理解目標檢測的工作原理,作者本人也提供了 Luminoth 實現,供大家參考。 Luminoth 實現:h

目標檢測演算法理解從R-CNN到Mask R-CNN

  因為工作了以後時間比較瑣碎,所以更多的時候使用onenote記錄知識點,但是對於一些演算法層面的東西,個人的理解畢竟是有侷限的。我一直做的都是影象分類方向,最近開始接觸了目標檢測,也看了一些大牛的論文,雖然網上已經有很多相關的演算法講解,但是每個人對同一個問題的理解都不太一樣,本文主