cs231n---語義分割 物體定位 物體檢測 物體分割

1 語義分割

語義分割是對圖像中每個像素作分類,不區分物體,只關心像素。如下:

(1)完全的卷積網絡架構

處理語義分割問題可以使用下面的模型:

其中我們經過多個卷積層處理,最終輸出體的維度是C*H*W,C表示類別個數,表示每個像素在不同類別上的得分。最終取最大得分為預測類別。

訓練這樣一個模型,我們需要對每個像素都分好類的訓練集(通常比較昂貴)。然后前向傳播出一張圖的得分體(C*H*W),與訓練集的標簽體求交叉熵,得到損失函數,然后反向傳播學習參數。

然而,這樣一個模型的中間層完全保留了圖像的大小,非常占內存,因此有下面改進的框架。

(2)先欠采樣再過采樣的框架

經過欠采樣后可以大量節省內存,提高效率,最后再經過過采樣來恢復原始圖片的大小。我們知道欠采樣可以使用卷積層和池化,下面介紹過采樣的幾種方式。

去池化?Unpooling?

去池化有Nearest Neighbor,Bed of Nails等方法:

還有一種被稱為Max Unpooling 的方法,該方法記錄下之前使用max pooling前各個最大值在數組中的索引,去池化的時候把值放到索引處,其他位置補0:

?

轉置卷積?Transpose Convolution

不同于去池化,轉置卷積法是一種可學習的過采樣方法。具體步驟是,將輸入的每個值作為權重,對濾波器進行加權,然后各個加權的濾波器按照步長拼成輸出,重疊部分相加。如下:

我們可以通過學習濾波器,來學習網絡應該如何做過采樣。

理解轉置卷積的一個一維的例子是:

在一些論文里,轉置卷積還有一些其他名字,看到的時候要知道:

另外,轉置卷積之所以被稱為轉置卷積,是因為它的矩陣形式。傳統的卷積寫成矩陣形式如下(注意這里是一維的例子):

其中x是濾波器,a是輸入。而轉置卷積寫成矩陣形式如下:

?

2 分類+定位

分類+定位的任務要求我們在給圖片打標簽之后,還要框出物體在什么地方(注意與物體檢測的區別,在分類定位中,輸出的框的個數是事先已知的,而物體檢測中則是不確定的)。如下:

此類任務常用的處理框架如下:

?

首先我們還是用CNN得到描述圖片的特征向量,然后我們接入兩個全連接網絡,一個網絡負責生成最后的類別評分,另一個負責生成紅框四個點的坐標值。因此對應兩個損失,softmax損失和回歸損失。我們將這兩個損失加權相加得到總的損失(加權值是超參數),然后進行反向傳播學習。

這里應用回歸的思路同樣可以應用于姿態估計,我們用十四個點來確定一個人的姿態情況:

應用同樣的框架(CNN+回歸全連接網絡)可以訓練這個任務:

?

3 物體檢測?

與分類+定位任務不同的是,物體檢測中需要檢測的物體數量是不確定的,因此無法直接使用上面的回歸框架。下面簡單介紹幾個框架。

(1)滑動窗口

滑動窗口的思想是隨機選取若干個不同大小不同位置的窗口,對它們應用CNN進行分類。缺點是窗口數量很大,計算代價很高。

(2)RCNN

訓練階段:

a 使用IMAGENet的數據預訓練一個CNN

b 構造訓練集:首先應用Selective Search算法從每張帶標定框的圖像中選取2000~3000個候選框。對每個候選框來說,找到與它重疊面積最大的標定框,如果重疊比例大于閾值(0.5),則將該候選框標簽設為該標定框的標簽,若重疊比例小于閾值(0.5),則標簽設為“背景”。同時對于重疊比例大于一定閾值(0.6)的候選框,還要計算出其與標定框的偏移距離。

c 每個候選區域經過預處理,送到CNN中提取出圖像特征,然后把圖像特征送到SVM分類器中,計算出標簽分類的損失。同時圖像特征還要送到回歸器中,計算偏移距離的L2損失。

d 反向傳播訓練SVM,回歸器,CNN

整體框架圖如下:

(3)Fast RCNN

RCNN訓練和預測速度很慢,主要是由于不同候選框之間的重疊部分特征重復用CNN提取導致的。因此可以采取先對整個圖像進行CNN特征提取,然后在選定候選區域,并從總的featuremap中找到每個候選區域對應的特征。框架如下:

(4)Faster RCNN

Fast RCNN的性能瓶頸是SS算法選定候選區域,在Faster RCNN中,使用網絡Region Proposal Network (RPN) 來預測候選區域,整體框架如下:

Faster RCNN是當前很先進的目標檢測框架,要了解細節看這篇論文:

Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal networks.” Advances in Neural Information Processing Systems. 2015.

(5)SSD

SSD的思想是將圖像劃分為很多個格子,以每個格子的中心可以衍生出若干個base boxes。使用神經網絡一次性的對這些格子進行分類,對這些baseboxes進行回歸。

上圖中,一個圖像劃分為7*7個grid,每個grid有3個base boxes。我們需要用回歸為每個base boxes預測五個值,為每個格子進行分類打分。直接使用一個的CNN神經網絡輸出7*7*(5*B+C)的大小即可。

更多細節參看論文:Liu et al, “SSD: Single-Shot MultiBox Detector”, ECCV 2016?

?

(6)各種物體檢測框架的對比

有很多變量可控:

這篇論文對比了各種框架:

Huang et al, “Speed/accuracy trade-offs for modern convolutional object detectors”, CVPR 2017?

FasterCNN比SSD具有更高的精度,但是沒有SSD快。

?

(7)Dense Captioning?

?Dense Captioning 是對圖片中的每個事物做檢測,并用語言進行描述:

Dense Captioning其實就是Object Detection + Captioning ,其框架可以使用faster RCNN結合LSTM來做。具體參考文獻:

Johnson, Karpathy, and Fei-Fei, “DenseCap: Fully Convolutional Localization Networks for Dense Captioning”, CVPR 2016?

?

4 物體分割?

物體分割要做的是在物體檢測上更進一步,從像素層面把各個物體分割出來。

Mask RCNN是當前很前沿的一種方法,其將faster RCNN和語義分割結合成一個框架,具有非常好的效果!框架為:

如上圖,首先將圖像使用CNN處理為特征,然后經過一個RPN網絡生成候選區域,投射到之前的feature map。到這里與faster RCNN一樣。之后有兩個分支,一個分支與faster RCNN相同,預測候選框的分類和邊界值,另一個分支則與語義分割相似,為每個像素做分類。

mask RCNN具有超級好的效果,有機會一定要拜讀一下。

He et al, “Mask R-CNN”, arXiv 2017

?

?5 總結

這些成功的計算機視覺框架和模型給我們的啟示是,將具有基本功能的模塊整合成一個可訓練的端到端系統,可以完成更加復雜的功能。通過向網絡中引入多個損失函數的分支,可以讓其完成多目標的聯合優化。

?

轉載于:https://www.cnblogs.com/coldyan/p/8391559.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390279.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390279.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390279.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

http協議內容

前言: http協議: 對瀏覽器客戶端 和 服務器端 之間數據傳輸的格式規范http1.0:當前瀏覽器客戶端與服務器端建立連接之后, 只能發送一次請求,一次請求之后連接關閉。 http1.1:當前瀏覽器客戶端與服務器端建…

array_combine()

轉載于:https://www.cnblogs.com/xiaobiaomei/p/8392728.html

CSS外邊距(margin)重疊及防止方法

#css外邊距margin重疊及防止方法CSS外邊距(margin)重疊及防止方法 #1-什么是外邊距margin重疊1. 什么是外邊距(margin)重疊 外邊距重疊是指兩個或多個盒子(可能相鄰也可能嵌套)的相鄰邊界(其間沒有任何非空內容、補白、邊框)重合在一起而形成一個單一邊界。 #2-相鄰marign重疊的…

composer windows安裝

一.前期準備: 1.下載安裝包,https://getcomposer.org/download/ 2.在php.ini文檔中打開extensionphp_openssl.dll 3.下載php_ssh2.dll、php_ssh2.pdb,http://windows.php.net/downloads/pecl/releases/ssh2/0.12/ 4.把php_ssh2.dll、php_ssh2.pdb文件放php的ext文件夾 5.重啟ap…

spring整合mybatis采坑

本來這個錯誤是整合spring和mybatis遇到的錯誤,但是一直沒有解決,但是在做SpringMVC時也了出現了這樣的錯誤org.springframework.beans.factory.BeanCreationException: Error creating bean with name sqlSessionFactory defined in class path resourc…

處理測試環境硬盤爆滿

測試環境經常會收到這類告警 第一步 登陸機器查看硬盤使用 執行df 好吧,使用情況真不妙,根目錄占用過大 第二步 確定哪個文件太大或者文件過多 進入爆滿的目錄,如這里是根目錄 cd / 然后找下面哪個文件夾或者文件太大,有幾種方式: 1.dusudo du -h --max-depth1 | sort -hr 越前…

LeetCode-46. Permutations

一、問題描述 就是全排列問題。 二、問題解決 應該哪一本數據結構的書上都有講了。 void get_permute(vector<int>& nums, int pos, vector<vector<int>>& result) {if (nums.size() pos) {result.push_back(nums);return;}for (int i pos; i <…

web操作系統開發的_哪種操作系統更適合Web開發

web操作系統開發的If youre new to web development and are in the market for a new laptop, you might be wondering which operating system is best.如果您是Web開發的新手&#xff0c;并且正在購買新的筆記本電腦&#xff0c;您可能想知道哪種操作系統是最好的。 Spoile…

白鷺引擎 - 顯示對象的基準點與橫縱坐標 ( 繪制一個來回移動的綠色方塊 )

class Main extends egret.DisplayObjectContainer {/** * Main 類構造器, 初始化的時候自動執行, ( 子類的構造函數必須調用父類的構造函數 super )* constructor 是類的構造函數, 類在實例化的時候調用* egret.Event.ADDED_TO_STAGE, 在將顯示對象添加到舞臺顯示列表時調度*/…

SpringBoot項目屬性配置

我們知道&#xff0c;在項目中&#xff0c;很多時候需要用到一些配置的東西&#xff0c;這些東西可能在測試環境和生產環境下會有不同的配置&#xff0c;后面也有可能會做修改&#xff0c;所以我們不能在代碼中寫死&#xff0c;要寫到配置中。我們可以把這些內容寫到applicatio…

670. 最大交換

670. 最大交換 給定一個非負整數&#xff0c;你至多可以交換一次數字中的任意兩位。返回你能得到的最大值。 示例 1 : 輸入: 2736 輸出: 7236 解釋: 交換數字2和數字7。 示例 2 : 輸入: 9973 輸出: 9973 解釋: 不需要交換。 解題思路 目標就是優先鎖定高位&#xff0c;像…

flexbox布局_Flexbox vs Grid-如何構建最常見HTML布局

flexbox布局There are so many great CSS resources all over the internet. But what if you just want a simple layout and you want it NOW? 互聯網上有很多很棒CSS資源。 但是&#xff0c;如果您只是想要一個簡單的布局而現在就想要呢&#xff1f; In this article, I d…

789. 逃脫阻礙者

789. 逃脫阻礙者 你在進行一個簡化版的吃豆人游戲。你從 [0, 0] 點開始出發&#xff0c;你的目的地是 target [xtarget, ytarget] 。地圖上有一些阻礙者&#xff0c;以數組 ghosts 給出&#xff0c;第 i 個阻礙者從 ghosts[i] [xi, yi] 出發。所有輸入均為 整數坐標 。 每一…

計算機視覺-自定義對象檢測器

1、模板匹配 運行指令&#xff1a;python template_matching.py --source 3.jpg --template 2.jpg import argparse import cv2ap argparse.ArgumentParser() ap.add_argument("-s", "--source", requiredTrue, help"Path to the source image"…

Java 微信公眾號導出所有粉絲(openId)

由于公眾號換了公司主體&#xff0c;需要做遷移&#xff0c;玩家的openId數據需要做處理。 (我是按我要的json格式&#xff0c;將粉絲導成了1萬條數據的一個json文件) 文件格式&#xff1a; {"info":[{"openId":"ogVous494ltuNmO4zHb1seHeGLSk"}…

javascript閉包_JavaScript閉包教程–帶有JS閉包示例代碼

javascript閉包Closures – many of you JavaScript devs have probably heard this term before. When I started my journey with JavaScript, I encountered closures often. And I think theyre one of the most important and interesting concepts in JavaScript. 閉包–…

1646. 獲取生成數組中的最大值

1646. 獲取生成數組中的最大值 給你一個整數 n 。按下述規則生成一個長度為 n 1 的數組 nums &#xff1a; nums[0] 0 nums[1] 1 當 2 < 2 * i < n 時&#xff0c;nums[2 * i] nums[i] 當 2 < 2 * i 1 < n 時&#xff0c;nums[2 * i 1] nums[i] nums[i …

docker保存日志文件到本地

其實很簡單 docker logs 你需要添加的額外參數 容器id >文件名稱 然后查看這個文件就可以了&#xff0c;也可以通過ftp協議下載到本地

防反射JavaScript –如何讓您的JS等待

Debounce methods do not execute when invoked. Instead, they wait for a predetermined time before executing. If the same method is called again, the previous is cancelled and the timer restarts.防抖動方法在調用時不執行。 而是&#xff0c;它們在執行之前等待預…

21天學通Visual.Basic pdf

下載地址&#xff1a;網盤下載《21天學通Visual Basic(第2版)》是Visual Basic 6.0的入門教程&#xff0c;主要針對沒有程序設計基礎的讀者&#xff0c;詳細介紹了Visual Basic 6.0的基本概念和編程技術。書中通過大量的范例及綜合練習來介紹Visual Basic 6.0的基本概念、語言特…