盯住梅西:TensorFlow目標(biāo)檢測實(shí)戰(zhàn)
近日,一篇題為《Following Messi with TensorFlow and Object Detection》的教程文章展示了如何通過 TensorFlow 訓(xùn)練定制的目標(biāo)檢測模型,以專門定位和識別足球巨星梅西;同時作者也希望這一技術(shù)有助于催生出足球新戰(zhàn)術(shù),提升賽事水平。
我們之前曾把 TensorFlow 與目標(biāo)檢測模型結(jié)合使用,但使用的一直是預(yù)先設(shè)定的傳統(tǒng)數(shù)據(jù)集,比如 COCO。這次的挑戰(zhàn)將再高一級,我會分析一個足球比賽的片段,并識別其中至少一個球員。
一提到足球,你首先想到的可能是那些天才球員,比如阿根廷人梅西。本文中,我將會:
- 訓(xùn)練一個定制的目標(biāo)識別模型以定位梅西
- 選擇一個真實(shí)的賽事轉(zhuǎn)播視頻(本文中我使用的今年 8 月 31 日世界杯預(yù)選賽南美區(qū),烏拉圭對戰(zhàn)阿根廷的錄像),看看我們能得到什么結(jié)果。
- 通過這項(xiàng)技術(shù),我們或許可以設(shè)計(jì)新的戰(zhàn)術(shù),提高足球賽事的水平。
注意:我們將會結(jié)合使用 TensorFlow 與上述目標(biāo)檢測模型,且均具備 Apache License 2.0 許可證。
我們將從最終獲取的結(jié)果開始:
比賽中的一段慢動作回放
如果你對此感興趣,我建議你多花點(diǎn)時間一步一步學(xué)習(xí)該模型的搭建步驟。
它包含三個重要的步驟:
- 構(gòu)建有目標(biāo)可供檢測的定制數(shù)據(jù)集
- 通過 TensorFlow 訓(xùn)練和評估該模型
- 運(yùn)用該模型
步驟:
構(gòu)建自定義數(shù)據(jù)集 Moment
1. 我們查看官方文檔,就會發(fā)現(xiàn)有單獨(dú)的部分介紹如何構(gòu)建自定義數(shù)據(jù)集。地址:
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/using_your_own_dataset.md
2. 我們需要想要檢測的物體的圖像,并且需要給它們打標(biāo)簽。
- 對于這種情況,我使用的是 RectLabel 工具,對于 MacOS 是一個不錯的選擇。(也有其他替代工具,如 LabelImg。)
- 然后就是***次測試,我收集來的 119 張足球比賽的圖像(數(shù)量很小,但對測試來說足夠了)。
我給大約 100 張梅西的圖片添加了標(biāo)簽。
注:如要將樣本投入正式的應(yīng)用,這一步就需要更多圖像。
3. 下一步是把照片和對應(yīng)的 tag 轉(zhuǎn)換成 TFFormat 文件。腳本地址:
https://github.com/nbortolotti/tensorflow-code-experiences/blob/master/custom_model_object_detection/generate_tfrecord.py。(我使用了中間步驟將 xml 注釋標(biāo)簽轉(zhuǎn)換成 csv,腳本地址:
https://github.com/nbortolotti/tensorflow-code-experiences/blob/master/custom_model_object_detection/xml_metadata_csv.py。)
4. 記?。?**的環(huán)境是構(gòu)建一個訓(xùn)練集和評估集。
訓(xùn)練/評估自定義模型 Moment
5. 上述文件完成后,我們就可以訓(xùn)練和評估模型了。
這一步我使用的是機(jī)器學(xué)習(xí)引擎,因?yàn)槲覜]有本地基礎(chǔ)架構(gòu)可以在 1 小時內(nèi)執(zhí)行完整個過程。(官方說明:
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_on_cloud.md)
5 個工作線程使用標(biāo)準(zhǔn) GPU。
同樣強(qiáng)烈推薦使用 TensorBoard 對訓(xùn)練和評估過程進(jìn)行可視化。
記?。褐苯邮褂霉雀柙拼鎯ΑR簿褪钦f,所有文件必須在這種 repository 類型中,以與訓(xùn)練引擎完成互動。
TensorBoardML 中的 TotalLoss
機(jī)器學(xué)習(xí)引擎工作示例
6. 使用了 21.77 個單元,經(jīng)過 1 小時 9 分鐘和 2 萬次迭代之后,我們得到了多個檢查點(diǎn)和一個可用模型。
7. 我們使用***進(jìn)的檢查點(diǎn),使用訓(xùn)練好的模型進(jìn)行推斷。(官方文檔:
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/exporting_models.md)
使用自定義模型 Moment
8. 我們將從以下選項(xiàng)中使用該模型:
- 使用該模型和利用檢測結(jié)果生成視頻的腳本。實(shí)現(xiàn)示例:https://github.com/nbortolotti/tensorflow-code-experiences/blob/master/custom_model_object_detection/od_video_generator.py。
- 實(shí)時評估視頻和解碼標(biāo)簽以計(jì)算阿根廷球星的外表的腳本。實(shí)現(xiàn)示例: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
這可能只是這項(xiàng)有趣研究的開始……后續(xù)也許會涉及到如何改進(jìn)體育戰(zhàn)術(shù)、囊括更多運(yùn)動員和驗(yàn)證關(guān)聯(lián)?,F(xiàn)在,我們僅僅使用傳統(tǒng)的電視直播信息,如果我們使用更清晰或能看到球場全景的攝像頭,又會發(fā)生什么呢?
所有球員的位置都可以得到計(jì)算。事實(shí)上,我們的實(shí)驗(yàn)證明了用機(jī)器學(xué)習(xí)識別球員非常容易,但是我們能根據(jù)球員的位置和他們擅長的技術(shù)找到更好的戰(zhàn)術(shù)嗎?
我希望你能從中獲得樂趣,希望在未來,我們能夠看到更多體育領(lǐng)域的 TensorFlow 實(shí)現(xiàn)。
原文:
https://becominghuman.ai/following-messi-with-tensorflow-and-object-detection-20ba6d75667
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號“機(jī)器之心( id: almosthuman2014)”】