1. 使用 YOLO 進(jìn)行目標(biāo)檢測(cè)

        共 3005字,需瀏覽 7分鐘

         ·

        2021-07-28 00:09

        點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        自從世界了解人工智能以來,有一個(gè)特別的用例已經(jīng)被討論了很多。它們是自動(dòng)駕駛汽車。我們經(jīng)常在科幻電影中聽到、讀到甚至看到這些。有人說,我們將在2010年擁有自動(dòng)駕駛汽車,有人說到2020年,但我們?cè)?021年就實(shí)現(xiàn)了,我們剛剛能夠解決自動(dòng)駕駛汽車給世界帶來的變化的一角。自動(dòng)駕駛汽車的一個(gè)基本特性,對(duì)象檢測(cè)。


        什么是目標(biāo)檢測(cè)?


        物體檢測(cè)——顧名思義就是通過深度學(xué)習(xí)算法檢測(cè)圖像或視頻中的物體。目標(biāo)檢測(cè)的目的是識(shí)別和定位場(chǎng)景中所有已知的目標(biāo)。有了這種識(shí)別和定位,目標(biāo)檢測(cè)可以用來計(jì)數(shù)場(chǎng)景中的目標(biāo),確定和跟蹤它們的精確位置,同時(shí)精確地標(biāo)記它們。

        目標(biāo)檢測(cè)通常與圖像識(shí)別相混淆,所以在我們繼續(xù)之前,澄清它們之間的區(qū)別是重要的。

        圖像識(shí)別為圖像分配一個(gè)標(biāo)簽。狗的圖片會(huì)被貼上“狗”的標(biāo)簽。兩只狗的照片仍然會(huì)被貼上“狗”的標(biāo)簽。另一方面,對(duì)象檢測(cè)在每只狗周圍畫一個(gè)盒子,并給這個(gè)盒子貼上“狗”的標(biāo)簽。模型預(yù)測(cè)每個(gè)對(duì)象在哪里以及應(yīng)該應(yīng)用什么標(biāo)簽。通過這種方式,目標(biāo)檢測(cè)比識(shí)別提供了更多關(guān)于圖像的信息。

        物體檢測(cè)與圖像識(shí)別和圖像分割等其他類似的計(jì)算機(jī)視覺技術(shù)密不可分,因?yàn)樗兄谖覀兝斫夂头治鰣D像或視頻中的場(chǎng)景。


        鑒于這些關(guān)鍵的區(qū)別和物體檢測(cè)的獨(dú)特能力,我們可以看到為什么它可以在日常使用優(yōu)勢(shì)的多種方式中應(yīng)用,一些常見的例子是自動(dòng)駕駛汽車,人臉檢測(cè),交通調(diào)節(jié),視頻監(jiān)控,人群計(jì)數(shù),異常檢測(cè)等。


        數(shù)據(jù)集


        在這個(gè)項(xiàng)目中,我們使用了VOC2012數(shù)據(jù)集。VOC代表2012年視覺物體分類挑戰(zhàn)賽。這個(gè)數(shù)據(jù)集包含了來自PASCAL視覺對(duì)象分類挑戰(zhàn)的數(shù)據(jù),對(duì)應(yīng)于分類和檢測(cè)比賽。所提供的訓(xùn)練數(shù)據(jù)由一組圖像組成;每個(gè)圖像都有一個(gè)注釋文件,為圖像中20個(gè)類中的每個(gè)對(duì)象提供一個(gè)邊界框和對(duì)象類標(biāo)簽。有17125幅圖像可供訓(xùn)練。數(shù)據(jù)的大小大約為2GB。


        算法


        我們使用YOLO(你只看一次)算法進(jìn)行對(duì)象檢測(cè)。YOLO是一個(gè)聰明的卷積神經(jīng)網(wǎng)絡(luò)(CNN),用于實(shí)時(shí)進(jìn)行目標(biāo)檢測(cè)。該算法將單個(gè)神經(jīng)網(wǎng)絡(luò)應(yīng)用于完整的圖像,然后將圖像劃分為多個(gè)區(qū)域,并預(yù)測(cè)每個(gè)區(qū)域的邊界框和概率。這些邊界框是由預(yù)測(cè)的概率加權(quán)的。要理解YOLO,我們首先要分別理解這兩個(gè)模型。


        YOLO算法- YOLO算法是一種基于回歸的算法,它不是選擇圖像中有趣的部分,而是預(yù)測(cè)整個(gè)圖像中的類和包圍框運(yùn)行一次算法。要理解YOLO算法,我們首先需要了解實(shí)際預(yù)測(cè)的是什么。最終,我們的目標(biāo)是預(yù)測(cè)一類對(duì)象和指定對(duì)象位置的邊界框。每個(gè)包圍框可以用四個(gè)描述符來描述:


        ●矩形x中央(bx, by)

        ●寬度(bw)

        ●高度(bh)

        ●對(duì)象的類


        YOLO不會(huì)在輸入圖像中搜索可能包含對(duì)象的感興趣區(qū)域,而是將圖像分割成單元格,通常是19×19網(wǎng)格。每個(gè)細(xì)胞負(fù)責(zé)預(yù)測(cè)K個(gè)包圍框。具有最大概率的類被選擇并分配給特定的網(wǎng)格單元。類似的過程發(fā)生在圖像中的所有網(wǎng)格單元格上。


        在預(yù)測(cè)類概率后,下一步進(jìn)行非最大抑制,這有助于算法消除不必要的錨點(diǎn)。

        一旦完成,算法就會(huì)找到具有下一個(gè)最高類別概率的包圍框,并進(jìn)行相同的過程,直到我們剩下所有不同的包圍框?yàn)橹埂?/p>


        在此之后,我們幾乎完成了所有的工作,算法最終輸出所需的向量,顯示各個(gè)類的包圍框的細(xì)節(jié)。


        微小Yolo算法——為了讓Yolo運(yùn)行得更快,Redmon等人(Yolo的創(chuàng)建者)定義了Yolo架構(gòu)的一個(gè)變體,稱為微小Yolo。


        YOLOv3(和v3)根據(jù)一組預(yù)定的盒(具有特定的高寬比)預(yù)測(cè)偏移量——這些預(yù)定的包圍框就是錨盒。我們?cè)O(shè)置了一個(gè)條件如果這些包圍框的長(zhǎng)度是6而不是YOLO算法我們就會(huì)實(shí)現(xiàn)Tiny YOLO模型


        實(shí)現(xiàn)


        1.它從文件的注釋開始,這基本上意味著在文本文件中有圖像的所有路徑并使用它讀取數(shù)據(jù)。


        2.我們從網(wǎng)上下載Yolov3權(quán)重。然后我們將Darknet YOLO模型轉(zhuǎn)換為Keras模型。然后實(shí)現(xiàn)目標(biāo)檢測(cè)。


        3.從頭開始實(shí)現(xiàn)它是一個(gè)具有挑戰(zhàn)性的模型,特別是對(duì)于初學(xué)者,因?yàn)樗枰_發(fā)許多定制的模型元素來進(jìn)行訓(xùn)練和預(yù)測(cè)。例如,即使直接使用預(yù)先訓(xùn)練好的模型,也需要復(fù)雜的代碼來提取和解釋模型輸出的預(yù)測(cè)邊界框。


        4.我們訓(xùn)練這個(gè)模型并添加模型檢查點(diǎn)、降低學(xué)習(xí)率、提前停止和張量板。然后我們訓(xùn)練我們的模型與凍結(jié)層首先得到一個(gè)穩(wěn)定的損失和Adam Optimizer編譯,并節(jié)省權(quán)重。


        5.凍結(jié)一層也是一種通過逐步凍結(jié)隱藏層來加速神經(jīng)網(wǎng)絡(luò)訓(xùn)練的技術(shù)。在神經(jīng)網(wǎng)絡(luò)的背景下凍結(jié)一層是關(guān)于控制權(quán)值更新的方式。當(dāng)一個(gè)層被凍結(jié)時(shí),這意味著權(quán)重不能被進(jìn)一步修改。


        6.完成以上動(dòng)作后,繼續(xù)訓(xùn)練模型。這基本上是對(duì)模型進(jìn)行微調(diào)。為了應(yīng)用這個(gè)更改,我們使用Adam Optimizer重新編譯模型。然后再裝一次,然后節(jié)省重量。模型訓(xùn)練在這里完成。


        7.要將這個(gè)模型應(yīng)用于視頻/圖像,我們將輸入和輸出視頻路徑的路徑作為參數(shù),然后加載模型并傳遞配置的路徑和權(quán)重。然后,我們使用Cv2視頻捕獲指向輸出視頻文件,并確定視頻中的幀數(shù)。從輸入幀構(gòu)造一個(gè)blob,然后執(zhí)行YOLO對(duì)象檢測(cè)器的前向傳遞,最后給出邊界框


        8.執(zhí)行這一切我們最后遍歷輸出層和每個(gè)檢測(cè)在每個(gè)輸出后我們添加邊框,定義其動(dòng)態(tài)形狀,根據(jù)對(duì)象的大小,過濾掉弱概率,應(yīng)用non-maxima抑制抑制弱,重疊邊界框,并確保至少一個(gè)檢測(cè)存在。最后繪制一個(gè)邊界框矩形并在框架上進(jìn)行標(biāo)記,并將輸出框架寫入磁盤。

        最后,是我們的測(cè)試,可以看出進(jìn)行了有效檢測(cè)。

        輸入視頻截圖

        輸出視頻截圖


        結(jié)論


        我們?cè)谶@個(gè)項(xiàng)目中探索的下一步是將其作為一個(gè)web應(yīng)用程序部署。我們目前面臨的主要限制是沒有足夠的RAM和空間來在云上托管它。但是,也許使用更輕的模型,我們會(huì)嘗試,同時(shí)也有這個(gè)實(shí)時(shí)應(yīng)用。


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

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

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


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


        瀏覽 62
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 99re6这里有精品热视频 | 五月婷婷之五月婷婷 | 欧美淫色网 | 韩国黄色免费在线观看 | jlzzzz|