|
點擊上方“小白學視覺”,選擇加"星標"或“置頂” 重磅干貨,第一時間送達 下面是正在運行的應用程序: Google發(fā)布了新的TensorFlow對象檢測API。第一版包含:
我們希望能充分理解這個新東西,并且花費一些時間來建立一個簡單的實時對象識別演示。 首先,我們下載了TensorFlow模型庫,然后查看了他們發(fā)布的注釋。它基本上遍歷了使用預訓練模型的所有步驟。在他們的示例中,他們使用了“帶有Mobilenet的SSD”模型,但是我們也可以在他們稱為“ Tensorflow檢測模型”的情況下下載其他一些經過預先訓練的模型。這些模型是在COCO數(shù)據(jù)集上訓練的,并隨模型速度(慢速,中度和快速)和模型性能而變化。 接下來我們要做的是運行示例。該示例實際上有據(jù)可查。本質上,這就是它的作用:
注意:在運行示例之前,請注意查看設置說明。protobuf的編譯部分尤其重要: # From tensorflow/models/research/protoc object_detection/protos/*.proto --python_out=.然后,我們獲取了他們的代碼并進行了相應的修改:
然后,我們使用OpenCV將其與網絡攝像頭連接。那里有許多示例解釋了如何做到這一點,甚至是官方文檔。 通常,許多OpenCV示例的實現(xiàn)并不是真正的最佳選擇,例如,OpenCV中的某些功能受I/O限制。因此,我們不得不想出各種解決方案來解決此問題: 從網絡攝像機讀取幀會導致大量I/O。我們的想法是使用多處理庫將這部分內容完全移到另一個Python進程中。關于Stackoverflow的一些解釋為什么它不起作用,但我沒有對此進行更深入的研究。在Adrian Rosebrock的網站“ pyimagesearch”上一個很好的示例,該示例使用線程代替,從而大大提高了我們的fps。 每次啟動應用程序時,將凍結的模型加載到內存中都是很大消耗。而且我們已經為每次運行使用了一個TF會話,但這仍然很慢。在這種情況下,我們使用了多處理庫將對象檢測部分的繁重工作轉移到多個進程中。應用程序的初始啟動會很慢,因為每個進程都需要將模型加載到內存中并啟動TF會話,但是在此之后,程序的并行性將極大提高運行效率。 注意:如果像我們在Mac OSX上使用OpenCV 3.1,則一段時間后OpenCV的VideoCapture可能會崩潰。如果已經存在問題,切換回OpenCV 3.0則可以解決此問題。 |
|
|