大數據文摘作品,轉載具體要求見文末
作者 | Priya Dwivedi
編譯 | Lisa,Saint,Aileen
做圖像識別有很多不同的途徑。谷歌最近發布了一個使用Tensorflow的物體識別API,讓計算機視覺在各方面都更進了一步。
這篇文章將帶你測試這個新的API,並且把它應用在youtube上(可以在GitHub上獲取用到的全部代碼
https://github.com/priya-dwivedi/Deep-Learning/blob/master/Object_Detection_Tensorflow_API.ipynb),結果如下:
這個API是用COCO(文本中的常見物體)數據集(http://mscoco.org/)訓練出來的。這是一個大約有30萬張圖像、90種最常見物體的數據集。物體的樣本包括:
這個API提供了5種不同的模型,使用者可以通過設置不同檢測邊界範圍來平衡運行速度和準確率。
上圖中的mAP(平均精度)是檢測邊界框的準確率和回召率的乘積。這是一個很好的混合測度,在評價模型對目標物體的敏銳度和它是否能很好的避免虛假目標中非常好用。mAP值越高,模型的準確度越高,但運行速度會相應下降。
(想要了解更多跟模型有關的知識https://github.com/tensorflow/models/blob/477ed41e7e4e8a8443bc633846eb01e2182dc68a/object_detection/g3doc/detection_model_zoo.md)
我決定使用最輕量級的模型(ssd_mobilenet)。主要步驟如下:
1. 下載一個打包模型(.pb-protobuf)並把它載入緩存
2. 使用內置的輔助代碼來載入標籤,類別,可視化工具等等。
3. 建立一個新的會話,在圖片上運行模型。
總體來說步驟非常簡單。而且這個API文檔還提供了一些能運行這些主要步驟的Jupyter文檔——
https://github.com/tensorflow/models/blob/master/object_detection/object_detection_tutorial.ipynb
這個模型在實例圖像上表現得相當出色(如下圖):
接下來我打算在視頻上嘗試這個API。我使用了Python moviepy庫,主要步驟如下:
對於3-4秒的片段,這個程序需要花費大概1分鐘的時間來運行。但鑑於我們使用的是一個載入緩存的模型,而且沒有使用GPU,我們實現的效果還是很驚豔的!很難相信只用這麼一點代碼,就可以以很高的準確率檢測並且在很多常見物體上畫出邊界框。
當然,我們還是能看到有一些表現有待提升。比如下面的例子。這個視頻裡的鳥完全沒有被檢測出來。
幾個進一步探索這個API的想法:
嘗試一些準確率更高但成本也更高的模型,看看他們有什麼不同;
尋找加速這個API的方法,這樣它就可以被用於車載裝置上進行實時物體檢測;
谷歌也提供了一些技能來應用這些模型進行傳遞學習。例如,載入打包模型後添加一個帶有不同圖像類別的輸出層。
參考文獻:
原文連結:https://medium.com/towards-data-science/is-google-tensorflow-object-detection-api-the-easiest-way-to-implement-image-recognition-a8bd1f500ea0
點擊圖片閱讀
乾脆麵君,你給我站住!你已經被TensorFlow盯上了