盯住梅西:TensorFlow目標檢測實戰
近日,一篇題為《Following Messi with TensorFlow and Object Detection》的教程文章展示了如何通過 TensorFlow 訓練定制的目標檢測模型,以專門定位和識別足球巨星梅西;同時作者也希望這一技術有助于催生出足球新戰術,提升賽事水平。
我們之前曾把 TensorFlow 與目標檢測模型結合使用,但使用的一直是預先設定的傳統數據集,比如 COCO。這次的挑戰將再高一級,我會分析一個足球比賽的片段,并識別其中至少一個球員。
一提到足球,你首先想到的可能是那些天才球員,比如阿根廷人梅西。本文中,我將會:
- 訓練一個定制的目標識別模型以定位梅西
- 選擇一個真實的賽事轉播視頻(本文中我使用的今年 8 月 31 日世界杯預選賽南美區,烏拉圭對戰阿根廷的錄像),看看我們能得到什么結果。
- 通過這項技術,我們或許可以設計新的戰術,提高足球賽事的水平。
注意:我們將會結合使用 TensorFlow 與上述目標檢測模型,且均具備 Apache License 2.0 許可證。
我們將從最終獲取的結果開始:
比賽中的一段慢動作回放
如果你對此感興趣,我建議你多花點時間一步一步學習該模型的搭建步驟。
它包含三個重要的步驟:
- 構建有目標可供檢測的定制數據集
- 通過 TensorFlow 訓練和評估該模型
- 運用該模型
步驟:
構建自定義數據集 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 類型中,以與訓練引擎完成互動。
TensorBoardML 中的 TotalLoss
機器學習引擎工作示例
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 實現。
原文:
https://becominghuman.ai/following-messi-with-tensorflow-and-object-detection-20ba6d75667
【本文是51CTO專欄機構“機器之心”的原創譯文,微信公眾號“機器之心( id: almosthuman2014)”】