0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用深度學習解決目標檢測任務(wù)的簡單方法

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-10-18 09:34 ? 次閱讀

每次丟了東西,我們都希望有一種方法能快速定位出失物?,F(xiàn)在,目標檢測算法或許能做到。目標檢測的用途遍布多個行業(yè),從安防監(jiān)控,到智慧城市中的實時交通監(jiān)測。簡單來說,這些技術(shù)背后都是強大的深度學習算法。

在這篇文章中,我們會進一步地了解這些用在目標檢測中的算法,首先要從RCNN家族開始,例如RCNN、Fast RCNN和Faster RCNN。在本系列接下來的文章中我們會談到更高級的算法,例如YOLO、SSD等等。

1. 解決目標檢測任務(wù)的簡單方法(利用深度學習)

下圖是描述目標檢測算法如何工作的典型例子,圖中的每個物體(不論是任務(wù)還是風箏),都能以一定的精確度被定位出來。

首先我們要說的就是在圖像目標檢測中用途最廣、最簡單的深度學習方法——卷積神經(jīng)網(wǎng)絡(luò)(CNN)。我要講的是CNN的內(nèi)部工作原理,首先讓我們看看下面這張圖片。

網(wǎng)絡(luò)中輸入一張圖片,接著將它傳遞到多個卷積和池化層中。最后輸出目標所屬的類別,聽上去非常直接。

對每張輸入的圖片,我們都有對應(yīng)的輸出類別,那么這一技術(shù)能檢測圖片中多種目標嗎?答案是肯定的!下面就讓我們看看如何用一個卷積神經(jīng)網(wǎng)絡(luò)解決通用的目標檢測問題。

1.首先,我們把下面的圖片用作輸入:

2.之后,我們將圖片分成多個區(qū)域:

3.將每個區(qū)域看作單獨的圖片。

4.把這些區(qū)域照片傳遞給CNN,將它們分到不同類別中。

5.當我們把每個區(qū)域都分到對應(yīng)的類別后,再把它們結(jié)合在一起,完成對原始圖像的目標檢測:

使用這一方法的問題在于,圖片中的物體可能有不同的長寬比和空間位置。例如,在有些情況下,目標物體可能占據(jù)了圖片的大部分,或者非常小。目標物體的形狀也可能不同。

有了這些考慮因素,我們就需要分割很多個區(qū)域,需要大量計算力。所以為了解決這一問題,減少區(qū)域的分割,我們可以使用基于區(qū)域的CNN,它可以進行區(qū)域選擇。

2. 基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)介紹

2.1 RCNN簡介

和在大量區(qū)域上工作不同,RCNN算法提出在圖像中創(chuàng)建多個邊界框,檢查這些邊框中是否含有目標物體。RCNN使用選擇性搜索來從一張圖片中提取這些邊框。

首先,讓我們明確什么是選擇性搜索,以及它是如何辨別不同區(qū)域的。組成目標物體通常有四個要素:變化尺度、顏色、結(jié)構(gòu)(材質(zhì))、所占面積。選擇性搜索會確定物體在圖片中的這些特征,然后基于這些特征突出不同區(qū)域。下面是選擇搜索的一個簡單案例:

首先將一張圖片作為輸入:

之后,它會生成最初的sub-分割,將圖片分成多個區(qū)域:

基于顏色、結(jié)構(gòu)、尺寸、形狀,將相似的區(qū)域合并成更大的區(qū)域:

最后,生成最終的目標物體位置(Region of Interest)。

用RCNN檢測目標物體的步驟如下:

我們首先取一個預(yù)訓練卷積神經(jīng)網(wǎng)絡(luò)。

根據(jù)需要檢測的目標類別數(shù)量,訓練網(wǎng)絡(luò)的最后一層。

得到每張圖片的感興趣區(qū)域(Region of Interest),對這些區(qū)域重新改造,以讓其符合CNN的輸入尺寸要求。

得到這些區(qū)域后,我們訓練支持向量機(SVM)來辨別目標物體和背景。對每個類別,我們都要訓練一個二元SVM。

最后,我們訓練一個線性回歸模型,為每個辨識到的物體生成更精確的邊界框。

下面我們就用具體的案例解釋一下。

首先,將以下圖片作為輸入:

之后,我們會用上文中的選擇性搜索得到感興趣區(qū)域:

將這些區(qū)域輸入到CNN中,并經(jīng)過卷積網(wǎng)絡(luò):

CNN為每個區(qū)域提取特征,利用SVM將這些區(qū)域分成不同類別:

最后,用邊界框回歸預(yù)測每個區(qū)域的邊界框位置:

這就是RCNN檢測目標物體的方法。

2.2 RCNN的問題

現(xiàn)在,我們了解了RCNN能如何幫助進行目標檢測,但是這一技術(shù)有自己的局限性。訓練一個RCNN模型非常昂貴,并且步驟較多:

根據(jù)選擇性搜索,要對每張圖片提取2000個單獨區(qū)域;

用CNN提取每個區(qū)域的特征。假設(shè)我們有N張圖片,那么CNN特征就是N*2000;

用RCNN進行目標檢測的整個過程有三個模型:

用于特征提取的CNN

用于目標物體辨別的線性SVM分類器

調(diào)整邊界框的回歸模型。

這些過程合并在一起,會讓RCNN的速度變慢,通常每個新圖片需要40—50秒的時間進行預(yù)測,基本上無法處理大型數(shù)據(jù)集。

所以,這里我們介紹另一種能突破這些限制的目標檢測技術(shù)。

3. Fast RCNN

3.1 Fast RCNN簡介

想要減少RCNN算法的計算時間,可以用什么方法?我們可不可以在每張圖片上只使用一次CNN即可得到全部的重點關(guān)注區(qū)域呢,而不是運行2000次。

RCNN的作者Ross Girshick提出了一種想法,在每張照片上只運行一次CNN,然后找到一種方法在2000個區(qū)域中進行計算。在Fast RCNN中,我們將圖片輸入到CNN中,會相應(yīng)地生成傳統(tǒng)特征映射。利用這些映射,就能提取出感興趣區(qū)域。之后,我們使用一個Rol池化層將所有提出的區(qū)域重新修正到合適的尺寸,以輸入到完全連接的網(wǎng)絡(luò)中。

簡單地說,這一過程含有以下步驟:

輸入圖片。

輸入到卷積網(wǎng)絡(luò)中,它生成感興趣區(qū)域。

利用Rol池化層對這些區(qū)域重新調(diào)整,將其輸入到完全連接網(wǎng)絡(luò)中。

在網(wǎng)絡(luò)的頂層用softmax層輸出類別。同樣使用一個線性回歸層,輸出相對應(yīng)的邊界框。

所以,和RCNN所需要的三個模型不同,F(xiàn)ast RCNN只用了一個模型就同時實現(xiàn)了區(qū)域的特征提取、分類、邊界框生成。

同樣,我們還用上面的圖像作為案例,進行更直觀的講解。

首先,輸入圖像:

圖像被傳遞到卷積網(wǎng)絡(luò)中,返回感興趣區(qū)域:

之后,在區(qū)域上應(yīng)用Rol池化層,保證每個區(qū)域的尺寸相同:

最后,這些區(qū)域被傳遞到一個完全連接的網(wǎng)絡(luò)中進行分類,并用softmax和線性回歸層同時返回邊界框:

3.2 Fast RCNN的問題

但是即使這樣,F(xiàn)ast RCNN也有某些局限性。它同樣用的是選擇性搜索作為尋找感興趣區(qū)域的,這一過程通常較慢。與RCNN不同的是,F(xiàn)ast RCNN處理一張圖片大約需要2秒。但是在大型真實數(shù)據(jù)集上,這種速度仍然不夠理想。

4.Faster RCNN

4.1 Faster RCNN簡介

Faster RCNN是Fast RCNN的優(yōu)化版本,二者主要的不同在于感興趣區(qū)域的生成方法,F(xiàn)ast RCNN使用的是選擇性搜索,而Faster RCNN用的是Region Proposal網(wǎng)絡(luò)(RPN)。RPN將圖像特征映射作為輸入,生成一系列object proposals,每個都帶有相應(yīng)的分數(shù)。

下面是Faster RCNN工作的大致過程:

輸入圖像到卷積網(wǎng)絡(luò)中,生成該圖像的特征映射。

在特征映射上應(yīng)用Region Proposal Network,返回object proposals和相應(yīng)分數(shù)。

應(yīng)用Rol池化層,將所有proposals修正到同樣尺寸。

最后,將proposals傳遞到完全連接層,生成目標物體的邊界框。

那么Region Proposal Network具體是如何工作的呢?首先,將CNN中得來的特征映射輸入到Faster RCNN中,然后將其傳遞到Region Proposal Network中。RPN會在這些特征映射上使用一個滑動窗口,每個窗口會生成具有不同形狀和尺寸的k個anchor box:

Anchor boxes是固定尺寸的邊界框,它們有不同的形狀和大小。對每個anchor,RPN都會預(yù)測兩點:

首先是anchor就是目標物體的概率(不考慮類別)

第二個就是anchor經(jīng)過調(diào)整能更合適目標物體的邊界框回歸量

現(xiàn)在我們有了不同形狀、尺寸的邊界框,將它們傳遞到Rol池化層中。經(jīng)過RPN的處理,proposals可能沒有所述的類別。我們可以對每個proposal進行切割,讓它們都含有目標物體。這就是Rol池化層的作用。它為每個anchor提取固定尺寸的特征映射:

之后,這些特征映射會傳遞到完全連接層,對目標進行分類并預(yù)測邊界框。

4.2 Faster RCNN的問題

目前為止,我們所討論的所有目標檢測算法都用區(qū)域來辨別目標物體。網(wǎng)絡(luò)并非一次性瀏覽所有圖像,而是關(guān)注圖像的多個部分。這就會出現(xiàn)兩個問題:

算法需要讓圖像經(jīng)過多個步驟才能提取出所有目標

由于有多個步驟嵌套,系統(tǒng)的表現(xiàn)常常取決于前面步驟的表現(xiàn)水平

5. 上述算法總結(jié)

下表對本文中提到的算法做了總結(jié):

目標檢測是很有趣的領(lǐng)域,在商業(yè)中也大有前景。得益于現(xiàn)代硬件和計算資源的發(fā)展,才能讓這一技術(shù)有重要的突破。

本文只是目標檢測算法的開門介紹,在下一篇文章中,我們會講解YOLO、RetinaNet這樣更流行的算法,請繼續(xù)關(guān)注!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4777

    瀏覽量

    100974
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4625

    瀏覽量

    93129
  • 深度學習
    +關(guān)注

    關(guān)注

    73

    文章

    5511

    瀏覽量

    121356

原文標題:基礎(chǔ)目標檢測算法介紹(一):CNN、RCNN、Fast RCNN和Faster RCNN

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AI模型部署邊緣設(shè)備的奇妙之旅:目標檢測模型

    挑戰(zhàn)的方法。 2 目標檢測模型介紹 在目標檢測任務(wù)中,有著許許多多的模型,如 Picodet、
    發(fā)表于 12-19 14:33

    Pytorch深度學習訓練的方法

    掌握這 17 種方法,用最省力的方式,加速你的 Pytorch 深度學習訓練。
    的頭像 發(fā)表于 10-28 14:05 ?238次閱讀
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>學習</b>訓練的<b class='flag-5'>方法</b>

    請問DRV135有沒有簡單方法可以實現(xiàn)單端輸出?

    在設(shè)計產(chǎn)品過程中,因為產(chǎn)品體積限制,DRV135有沒有簡單方法可以實現(xiàn)單端輸出?請教了!
    發(fā)表于 10-16 06:14

    慧視小目標識別算法 解決目標檢測中的老大難問題

    隨著深度學習和人工智能技術(shù)的興起與技術(shù)成熟,一大批如FasterR-CNN、RetinaNet、YOLO等可以在工業(yè)界使用的目標檢測算法已逐步成熟并進入實際應(yīng)用,大多數(shù)場景下的
    的頭像 發(fā)表于 07-17 08:29 ?544次閱讀
    慧視小<b class='flag-5'>目標</b>識別算法   解決<b class='flag-5'>目標</b><b class='flag-5'>檢測</b>中的老大難問題

    基于Python的深度學習人臉識別方法

    基于Python的深度學習人臉識別方法是一個涉及多個技術(shù)領(lǐng)域的復(fù)雜話題,包括計算機視覺、深度學習、以及圖像處理等。在這里,我將概述一個基本的
    的頭像 發(fā)表于 07-14 11:52 ?1302次閱讀

    將格式化數(shù)據(jù)存儲到char數(shù)組的最簡單方法是什么?

    os_printf將文本格式化為 UART 輸出的函數(shù)。 將格式化數(shù)據(jù)存儲到 char 數(shù)組的最簡單方法是什么?
    發(fā)表于 07-11 08:01

    深度學習中的時間序列分類方法

    時間序列分類(Time Series Classification, TSC)是機器學習深度學習領(lǐng)域的重要任務(wù)之一,廣泛應(yīng)用于人體活動識別、系統(tǒng)監(jiān)測、金融預(yù)測、醫(yī)療診斷等多個領(lǐng)域。隨
    的頭像 發(fā)表于 07-09 15:54 ?1080次閱讀

    深度學習在工業(yè)機器視覺檢測中的應(yīng)用

    識別等任務(wù)。傳統(tǒng)的機器視覺檢測方法通常依賴于手工設(shè)計的特征和固定的算法,難以應(yīng)對復(fù)雜多變的工業(yè)環(huán)境。而深度學習的引入,為工業(yè)機器視覺
    的頭像 發(fā)表于 07-08 10:40 ?1136次閱讀

    基于AI深度學習的缺陷檢測系統(tǒng)

    在工業(yè)生產(chǎn)中,缺陷檢測是確保產(chǎn)品質(zhì)量的關(guān)鍵環(huán)節(jié)。傳統(tǒng)的人工檢測方法不僅效率低下,且易受人為因素影響,導(dǎo)致誤檢和漏檢問題頻發(fā)。隨著人工智能技術(shù)的飛速發(fā)展,特別是深度
    的頭像 發(fā)表于 07-08 10:30 ?1596次閱讀

    基于深度學習的小目標檢測

    )的廣泛應(yīng)用,小目標檢測的性能得到了顯著提升。本文將詳細探討基于深度學習的小目標檢測技術(shù),包括其
    的頭像 發(fā)表于 07-04 17:25 ?994次閱讀

    變頻器壓力調(diào)節(jié)最簡單方法是什么

    變頻器壓力調(diào)節(jié)是一種廣泛應(yīng)用于工業(yè)自動化領(lǐng)域的技術(shù),它通過改變電機的轉(zhuǎn)速來實現(xiàn)對壓力的精確控制。本文將詳細介紹變頻器壓力調(diào)節(jié)的最簡單方法,包括其原理、步驟和注意事項,以幫助用戶更好地理解和應(yīng)用這一
    的頭像 發(fā)表于 06-18 09:24 ?3225次閱讀

    基于深度學習的缺陷檢測方案

    圖像預(yù)處理通常包括直方圖均衡化、濾波去噪、灰度二值化、再次濾波幾部分,以得到前后景分離的簡單化圖像信息;隨后利用數(shù)學形態(tài)學、傅里葉變換、Gabor 變換等算法以及機器學習模型完成缺陷的標記與
    發(fā)表于 04-23 17:23 ?990次閱讀
    基于<b class='flag-5'>深度</b><b class='flag-5'>學習</b>的缺陷<b class='flag-5'>檢測</b>方案

    深度解析深度學習下的語義SLAM

    隨著深度學習技術(shù)的興起,計算機視覺的許多傳統(tǒng)領(lǐng)域都取得了突破性進展,例如目標檢測、識別和分類等領(lǐng)域。近年來,研究人員開始在視覺SLAM算法中引入
    發(fā)表于 04-23 17:18 ?1343次閱讀
    <b class='flag-5'>深度</b>解析<b class='flag-5'>深度</b><b class='flag-5'>學習</b>下的語義SLAM

    深度學習檢測目標常用方法

    深度學習的效果在某種意義上是靠大量數(shù)據(jù)喂出來的,小目標檢測的性能同樣也可以通過增加訓練集中小目標樣本的種類和數(shù)量來提升。
    發(fā)表于 03-18 09:57 ?770次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學習</b><b class='flag-5'>檢測</b>小<b class='flag-5'>目標</b>常用<b class='flag-5'>方法</b>

    基于深度學習的芯片缺陷檢測梳理分析

    雖然表面缺陷檢測技術(shù)已經(jīng)不斷從學術(shù)研究走向成熟的工業(yè)應(yīng)用,但是依然有一些需要解決的問題?;谝陨戏治隹梢园l(fā)現(xiàn),由于芯片表面缺陷的獨特性質(zhì),通用目標檢測算法不適合直接應(yīng)用于芯片表面缺陷檢測
    發(fā)表于 02-25 14:30 ?1648次閱讀
    基于<b class='flag-5'>深度</b><b class='flag-5'>學習</b>的芯片缺陷<b class='flag-5'>檢測</b>梳理分析