<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何利用Tensorflow和OpenCV構(gòu)建實時對象識別程序?

          共 2089字,需瀏覽 5分鐘

           ·

          2021-02-12 14:27

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          引言
          在本文中,將逐步介紹如何使用Tensorflow(TF)的新對象檢測API和Python 3中OpenCV如何輕松構(gòu)建自己的實時對象識別應(yīng)用程序。

          下面是正在運行的應(yīng)用程序:


          目的與動機

          Google發(fā)布了新的TensorFlow對象檢測API。第一版包含:

          • 預(yù)先訓練的模型(尤其是重點放在輕量模型上,以便它們可以在移動設(shè)備上運行)

          • Jupyter筆記本示例,其中包含一個已發(fā)布的型號

          • 非常方便的腳本,可用于例如在您自己的數(shù)據(jù)集上對模型進行重新訓練。

          我們希望能充分理解這個新東西,并且花費一些時間來建立一個簡單的實時對象識別演示。


          目標檢測演示

          首先,我們下載了TensorFlow模型庫,然后查看了他們發(fā)布的注釋。它基本上遍歷了使用預(yù)訓練模型的所有步驟。在他們的示例中,他們使用了“帶有Mobilenet的SSD”模型,但是我們也可以在他們稱為“ Tensorflow檢測模型”的情況下下載其他一些經(jīng)過預(yù)先訓練的模型。這些模型是在COCO數(shù)據(jù)集上訓練的,并隨模型速度(慢速,中度和快速)和模型性能而變化。

          接下來我們要做的是運行示例。該示例實際上有據(jù)可查。本質(zhì)上,這就是它的作用:

          1. 導(dǎo)入所需的軟件包,例如TensorFlow,PIL等。

          2. 定義一些變量,例如類別數(shù),模型名稱等。

          3. 下載模型(.pb — protobuf)并將其加載到內(nèi)存中。

          4. 加載一些代碼,例如標簽轉(zhuǎn)換器的索引。

          5. 通過兩張圖像測試代碼。

          注意:在運行示例之前,請注意查看設(shè)置說明。protobuf的編譯部分尤其重要:

          # From tensorflow/models/research/protoc object_detection/protos/*.proto --python_out=.


          然后,我們獲取了他們的代碼并進行了相應(yīng)的修改:

          • 刪除模型下載部分

          • TensorFlow會話沒有“ with”語句,因為這是一個巨大的消耗,尤其是當每次需要在每個流之后啟動會話時

          • 不需要PIL,因為OpenCV中的視屏流已經(jīng)存在于numpy數(shù)組中(PIL也是非常大的消耗,特別是在將其用于讀取圖像時)

          然后,我們使用OpenCV將其與網(wǎng)絡(luò)攝像頭連接。那里有許多示例解釋了如何做到這一點,甚至是官方文檔。


          通常,許多OpenCV示例的實現(xiàn)并不是真正的最佳選擇,例如,OpenCV中的某些功能受I/O限制。因此,我們不得不想出各種解決方案來解決此問題:

          從網(wǎng)絡(luò)攝像機讀取幀會導(dǎo)致大量I/O。我們的想法是使用多處理庫將這部分內(nèi)容完全移到另一個Python進程中。關(guān)于Stackoverflow的一些解釋為什么它不起作用,但我沒有對此進行更深入的研究。在Adrian Rosebrock的網(wǎng)站“ pyimagesearch”上一個很好的示例,該示例使用線程代替,從而大大提高了我們的fps。


          每次啟動應(yīng)用程序時,將凍結(jié)的模型加載到內(nèi)存中都是很大消耗。而且我們已經(jīng)為每次運行使用了一個TF會話,但這仍然很慢。在這種情況下,我們使用了多處理庫將對象檢測部分的繁重工作轉(zhuǎn)移到多個進程中。應(yīng)用程序的初始啟動會很慢,因為每個進程都需要將模型加載到內(nèi)存中并啟動TF會話,但是在此之后,程序的并行性將極大提高運行效率。


          注意:如果像我們在Mac OSX上使用OpenCV 3.1,則一段時間后OpenCV的VideoCapture可能會崩潰。如果已經(jīng)存在問題,切換回OpenCV 3.0則可以解決此問題。



          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復(fù):擴展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復(fù):Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 22
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产做爰 高潮 | 成人a片在线免费观看 | 午夜欧美精品久久久 | 亚洲欧美精品久久 | 91自自 |