日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机视觉那些事儿(1):基本任务

發(fā)布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机视觉那些事儿(1):基本任务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文主要介紹深度學習在計算機視覺領域(Computer vision)基本任務中的應用,包括分類、檢測、分割(語義與實體)。

目錄

引言

分類(Classification)

目標檢測(Object Detection)

Two-stage算法

One-stage算法

語義分割(Semantic Segmentation)

實體分割(Instance Segmentation)


引言

大約在5億年以前,處于寒武紀的地球上的生物開始進化出了眼睛;從此,地球進入了生物大爆炸時代。有學者認為,這是因為眼睛的出現(xiàn),地球上的生物為了躲避天敵的捕獵,因此必須不斷進化。

自從人工智能一詞首次在1956年提出以后,就有學者開始研究計算機視覺。他們希望計算機能夠像人類一樣,通過傳感器(那時主要指照相機)來描述所看到的信息。如果把計算機比作人的大腦的話,那么計算機視覺就是計算機的眼睛,計算機通過計算機視覺來感知世界


分類(Classification

分類就是給定一張圖片,判斷圖片所屬類別,這里主要指圖片中的目標所屬類別。作為計算機視覺界的奧林匹克ImageNet包含著超過140萬張圖片,其所含目標為1000種。


圖片分類經(jīng)典網(wǎng)絡

在描述神經(jīng)網(wǎng)絡時,通常用conv代表卷積層bn代表批歸一層pool代表池化層。最常見的網(wǎng)絡結構順序是:conv -> bn -> relu -> pool,其中卷積層用于提取特征、池化層用于下采樣。隨著網(wǎng)絡深度的進行,圖像的空間大小將越來越小,而通道數(shù)會越來越大。這里介紹圖片分類中的幾種經(jīng)典網(wǎng)絡:

LeNet-5: 由Facebook人工智能研究院院長Yann LeCun所發(fā)明。 網(wǎng)絡基本架構如圖所示。當時,LeNet-5被成功用于ATM以對支票中的手寫數(shù)字進行識別。

AlexNet:ILSVRC 2012年的冠軍,由Hinton和其學生Alex Krizhevsky所發(fā)明。網(wǎng)絡基本如圖所示。AlexNet有著和LeNet-5相似網(wǎng)絡結構,但網(wǎng)絡深度更深、參數(shù)也更多。AlexNet的關鍵點是:(1). 使用了ReLU激活函數(shù),使之有更好的梯度特性、訓練更快。(2). 使用了dropout。(3). 使用數(shù)據(jù)增強技術,使用GPU加速訓練。AlexNet的意義在于它以高出第二名10%的性能取得了當年ILSVRC競賽的冠軍,稱為計算機視覺以及人工智能的里程碑。

VGG-16/VGG-19 :VGG網(wǎng)絡結構如圖所示。VGG網(wǎng)絡的關鍵點是:(1). 結構簡單,只有3×3卷積和2×2池化兩種網(wǎng)絡,并且重復堆疊相同的模塊組合。卷積層不改變空間大小,每經(jīng)過一次池化層,空間大小減半。(2). 參數(shù)量大,而且大部分的參數(shù)集中在全連接層中。(3). 合適的網(wǎng)絡初始化和使用批量歸一層

GoogLeNet:GoogLeNet試圖回答在設計網(wǎng)絡時究竟應該選多大尺寸的卷積、或者應該選多大的池化層。其提出了Inception模塊,網(wǎng)絡結構如圖所示。GoogLeNet的關鍵點是:(1). 多分支分別處理,并級聯(lián)結果。(2). 為了降低計算量,用了1×1卷積降維。GoogLeNet使用了全局平均池化替代全連接層,使網(wǎng)絡參數(shù)大幅減少。

ResNet:ILSVRC 2015年的冠軍。ResNet旨在解決網(wǎng)絡加深后訓練難度增大的現(xiàn)象。其提出了residual模塊,包含兩個3×3卷積和一個跳躍連接(左圖)。跳躍連接可以有效緩解反向傳播時由于深度過深導致的梯度消失現(xiàn)象,這使得網(wǎng)絡加深之后性能不會變差。跳躍連接是深度學習又一重要思想。ResNet的關鍵點是:(1). 使用跳躍連接,使訓練深層網(wǎng)絡更容易,并且重復堆疊相同的模塊組合。(2). ResNet大量使用了批量歸一層。(3). 對于很深的網(wǎng)絡(超過50層),ResNet使用了更高效的瓶頸(bottleneck)結構(右圖)。ResNet在ImageNet上取得了超過人類的準確率。


目標檢測(Object Detection)

識別出目標所屬類別后,如何獲取目標在圖片中的位置信息呢?這就需要進行目標檢測了。目前目標檢測算法主要分為兩類:one-stage算法和two-stage算法,其區(qū)別是two-stage算法是先生成候選區(qū)域,然后再進一步選擇目標位置。總的來說,two-stage算法精度更高,但速度較慢,而one-stage算法精度相對較低,但速度比two-stage快。

Two-stage算法

RCNN:網(wǎng)絡如圖所示首先生成2k個候選區(qū)域,候選區(qū)域生成算法通常基于圖像的顏色、紋理、面積、位置等合并相似的像素,最終得到一系列的候選矩陣區(qū)域。相比于用滑動窗把圖像所有區(qū)域都滑動一遍,基于候選區(qū)域的方法十分高效。另一方面,這些候選區(qū)域生成算法的查準率(precision)一般,但查全率(recall)通常比較高,這使得我們不容易遺漏圖像中的目標。

之后,對每個候選區(qū)域進行全連接網(wǎng)絡連接,進行目標定位,即兩分支(分類+回歸)輸出。其中,我們仍然需要回歸分支的原因是,候選區(qū)域只是對包含目標區(qū)域的一個粗略的估計,我們需要有監(jiān)督地利用回歸分支得到更精確的包圍盒預測結果。R-CNN的重要性在于當時目標檢測已接近瓶頸期,而R-CNN利于在ImageNet預訓練模型微調的方法一舉將VOC上mAP由35.1%提升至53.7%,確定了深度學習下目標檢測的基本思路。

Fast R-CNN:R-CNN的弊端是R-CNN的運行效率不高,預測一張圖像需要47秒。Fast R-CNN同樣基于候選區(qū)域進行目標檢測,網(wǎng)絡結構如圖所示,但受SPPNet啟發(fā),在Fast R-CNN中,不同候選區(qū)域的卷積特征提取部分是共享的。也就是說,我們先用卷積網(wǎng)絡進行圖片的特征提取,并提取conv5卷積特征。之后,基于在原始圖像上運行候選區(qū)域生成算法的結果在卷積特征上進行采樣,這一步稱為興趣區(qū)域池化。最后,對每個候選區(qū)域,進行目標定位,即兩分支(分類+回歸)輸出。

興趣區(qū)域池化(region of interest pooling, RoI pooling) 興趣區(qū)域池化旨在由任意大小的候選區(qū)域對應的局部卷積特征提取得到固定大小的特征,這是因為下一步的兩分支網(wǎng)絡由于有全連接層,需要其輸入大小固定。其做法是,先將候選區(qū)域投影到卷積特征上,再把對應的卷積特征區(qū)域空間上劃分成固定數(shù)目的網(wǎng)格(數(shù)目根據(jù)下一步網(wǎng)絡希望的輸入大小確定,例如VGGNet需要7×7的網(wǎng)格),最后在每個小的網(wǎng)格區(qū)域內進行最大池化,以得到固定大小的匯合池化。和經(jīng)典最大池化一致,每個通道的興趣區(qū)域池化是獨立的。

Faster R-CNN:網(wǎng)絡結構如圖所示,Faster R-CNN而利用候選區(qū)域網(wǎng)絡從conv5特征中產生候選區(qū)域,并且將候選區(qū)域網(wǎng)絡集成到整個網(wǎng)絡中端到端訓練。

候選區(qū)域網(wǎng)絡(region proposal networks, RPN) 在卷積特征上的通過兩層卷積(3×3和1×1卷積),輸出兩個分支。其中,一個分支用于判斷每個錨盒是否包含了目標,另一個分支對每個錨盒輸出候選區(qū)域的4個坐標。候選區(qū)域網(wǎng)絡實際上延續(xù)了基于滑動窗進行目標定位的思路,不同之處在于候選區(qū)域網(wǎng)絡在卷積特征而不是在原圖上進行滑動。由于卷積特征的空間大小很小而感受野很大,即使使用3×3的滑動窗,也能對應于很大的原圖區(qū)域。Faster R-CNN實際使用了3組大小(128×128、256×256、512×512)、3組長寬比(1:1、1:2、2:1),共計9個錨盒,這里錨盒的大小已經(jīng)超過conv5特征感受野的大小。對一張1000×600的圖像,可以得到20k個錨盒。

為什么要使用錨盒(anchor box) 錨盒是預先定義形狀和大小的包圍盒。使用錨盒的原因包括:

  • 圖像中的候選區(qū)域大小和長寬比不同,直接回歸比對錨盒坐標修正訓練起來更困難。
  • conv5特征感受野很大,很可能該感受野內包含了不止一個目標,使用多個錨盒可以同時對感受野內出現(xiàn)的多個目標進行預測。
  • 使用錨盒也可以認為這是向神經(jīng)網(wǎng)絡引入先驗知識的一種方式。我們可以根據(jù)數(shù)據(jù)中包圍盒通常出現(xiàn)的形狀和大小設定一組錨盒。錨盒之間是獨立的,不同的錨盒對應不同的目標。

基于候選區(qū)域的目標檢測算法通常需要兩步:第一步是從圖像中提取深度特征,第二步是對每個候選區(qū)域進行定位(包括分類和回歸)。其中,第一步是圖像級別計算,而第二步是區(qū)域級別計算。R-CNN, Fast R-CNN, Faster R-CNN, 這些算法的演進思路是逐漸提高網(wǎng)絡中圖像級別計算的比例,同時降低區(qū)域級別計算的比例。


One-stage算法

基于候選區(qū)域的方法由于有兩步操作,雖然檢測性能比較好,但速度較慢。基于直接回歸的方法不需要候選區(qū)域,直接輸出分類/回歸結果。這類方法速度通常更快,可以滿足實時性使用。

YOLO :網(wǎng)絡結構如圖所示,將圖像劃分成7×7的網(wǎng)格,其中圖像中的真實目標被其劃分到目標中心所在的網(wǎng)格及其最接近的錨盒。對每個網(wǎng)格區(qū)域,網(wǎng)絡需要預測:每個錨盒包含目標的概率(不包含目標時應為0,否則為錨盒和真實包圍盒的IoU)、每個錨盒的4個坐標、該網(wǎng)格的類別概率分布。每個錨盒的類別概率分布等于每個錨盒包含目標的概率乘以該網(wǎng)格的類別概率分布。相比基于候選區(qū)域的方法,YOLO需要預測包含目標的概率的原因是,圖像中大部分的區(qū)域不包含目標,而訓練時只有目標存在時才對坐標和類別概率分布進行更新。

YOLO的優(yōu)點在于:

  • 基于候選區(qū)域的方法的感受野是圖像中的局部區(qū)域,而YOLO可以利用整張圖像的信息。
  • 有更好的泛化能力。

YOLO的局限在于:

  • 不能很好處理網(wǎng)格中目標數(shù)超過預設固定值,或網(wǎng)格中有多個目標同時屬于一個錨盒的情況。
  • 對小目標的檢測能力不夠好。
  • 對不常見長寬比的包圍盒的檢測能力不強。
  • 計算損失時沒有考慮包圍盒大小。大的包圍盒中的小偏移和小的包圍盒中的小偏移應有不同的影響。

SSD :相比YOLO,SSD在卷積特征后加了若干卷積層以減小特征空間大小,并通過綜合多層卷積層的檢測結果以檢測不同大小的目標。此外,類似于Faster R-CNN的RPN,SSD使用3×3卷積取代了YOLO中的全連接層,以對不同大小和長寬比的錨盒來進行分類/回歸。

非最大抑制(non-max suppression, NMS) :目標檢測可能會出現(xiàn)的一個問題是,模型會對同一目標做出多次預測,得到多個包圍盒。NMS旨在保留最接近真實包圍盒的那一個預測結果,而抑制其他的預測結果。NMS的做法是,首先,對每個類別,NMS先統(tǒng)計每個預測結果輸出的屬于該類別概率,并將預測結果按該概率由高至低排序。其次,NMS認為對應概率很小的預測結果并沒有找到目標,所以將其抑制。然后,NMS在剩余的預測結果中,找到對應概率最大的預測結果,將其輸出,并抑制和該包圍盒有很大重疊(如IoU大于0.3)的其他包圍盒。重復上一步,直到所有的預測結果均被處理。


語義分割(Semantic Segmentation)

語義分割是目標檢測更進階的任務,是像素識別,即需要識別圖片中的像素所屬目標。

基本思路 逐像素進行圖像分類。我們將整張圖像輸入網(wǎng)絡,使輸出的空間大小和輸入一致,通道數(shù)等于類別數(shù),分別代表了各空間位置屬于各類別的概率,即可以逐像素地進行分類。

全卷積網(wǎng)絡+反卷積網(wǎng)絡 為使得輸出具有三維結構,全卷積網(wǎng)絡中沒有全連接層,只有卷積層和匯合層。但是隨著卷積和匯合的進行,圖像通道數(shù)越來越大,而空間大小越來越小。要想使輸出和輸入有相同的空間大小,全卷積網(wǎng)絡需要使用反卷積和反匯合來增大空間大小。

反卷積(deconvolution)/轉置卷積(transpose convolution) 標準卷積的濾波器在輸入圖像中進行滑動,每次和輸入圖像局部區(qū)域點乘得到一個輸出,而反卷積的濾波器在輸出圖像中進行滑動,每個由一個輸入神經(jīng)元乘以濾波器得到一個輸出局部區(qū)域。反卷積的前向過程和卷積的反向過程完成的是相同的數(shù)學運算。和標準卷積的濾波器一樣,反卷積的濾波器也是從數(shù)據(jù)中學到的。

反最大池化(max-unpooling) 通常全卷積網(wǎng)絡是對稱的結構,在最大池化時需要記下最大值所處局部區(qū)域位置,在對應反最大池化時將對應位置輸出置為輸入,其余位置補零。反最大池化可以彌補最大池化時丟失的空間信息。反最大池化的前向過程和最大池化的反向過程完成的是相同的數(shù)學運算。


實體分割(Instance Segmentation)

實體分割也是像素識別,且當圖片中有多個相同類別的目標后,網(wǎng)絡需要對同類別目標的像素進行劃分。

基本思路 目標檢測+語義分割。先用目標檢測方法將圖像中的不同實例框出,再用語義分割方法在不同包圍盒內進行逐像素標記。

Mask R-CNN 用FPN進行目標檢測,并通過添加額外分支進行語義分割(額外分割分支和原檢測分支不共享參數(shù)),即Mask R-CNN有三個輸出分支(分類、坐標回歸、和分割)。此外,Mask R-CNN的其他改進有:(1). 改進了RoI池化,通過雙線性差值使候選區(qū)域和卷積特征的對齊不因量化而損失信息。(2). 在分割時,Mask R-CNN將判斷類別和輸出模板(mask)這兩個任務解耦合,用sigmoid配合對率(logistic)損失函數(shù)對每個類別的模板單獨處理,取得了比經(jīng)典分割方法用softmax讓所有類別一起競爭更好的效果。

總結

以上是生活随笔為你收集整理的计算机视觉那些事儿(1):基本任务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。