導航:首頁 > 源碼編譯 > warp演算法

warp演算法

發布時間:2022-09-12 21:40:12

❶ [圖像演算法]-Faster RCNN詳解

paper: Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
Tensorflow-faster r-cnn github: Tensorflow Faster RCNN for Object Detection

faster rcnn是何凱明等大神在2015年提出目標檢測演算法,該演算法在2015年的ILSVRV和COCO競賽中獲得多項第一。該演算法在fast rcnn基礎上提出了RPN候選框生成演算法,使得目標檢測速度大大提高。

(1)image input;
(2)利用selective search 演算法在圖像中從上到下提取2000個左右的Region Proposal;
(3)將每個Region Proposal縮放(warp)成227*227的大小並輸入到CNN,將CNN的fc7層的輸出作為特徵;
(4)將每個Region Proposal提取的CNN特徵輸入到SVM進行分類;
(5)對於SVM分好類的Region Proposal做邊框回歸,用Bounding box回歸值校正原來的建議窗口,生成預測窗口坐標.
缺陷:
(1) 訓練分為多個階段,步驟繁瑣:微調網路+訓練SVM+訓練邊框回歸器;
(2) 訓練耗時,佔用磁碟空間大;5000張圖像產生幾百G的特徵文件;
(3) 速度慢:使用GPU,VGG16模型處理一張圖像需要47s;
(4) 測試速度慢:每個候選區域需要運行整個前向CNN計算;
(5) SVM和回歸是事後操作,在SVM和回歸過程中CNN特徵沒有被學習更新.

(1)image input;
(2)利用selective search 演算法在圖像中從上到下提取2000個左右的建議窗口(Region Proposal);
(3)將整張圖片輸入CNN,進行特徵提取;
(4)把建議窗口映射到CNN的最後一層卷積feature map上;
(5)通過RoI pooling層使每個建議窗口生成固定尺寸的feature map;
(6)利用Softmax Loss(探測分類概率) 和Smooth L1 Loss(探測邊框回歸)對分類概率和邊框回歸(Bounding box regression)聯合訓練.

相比R-CNN,主要兩處不同:
(1)最後一層卷積層後加了一個ROI pooling layer;
(2)損失函數使用了多任務損失函數(multi-task loss),將邊框回歸直接加入到CNN網路中訓練
改進:
(1) 測試時速度慢:R-CNN把一張圖像分解成大量的建議框,每個建議框拉伸形成的圖像都會單獨通過CNN提取特徵.實際上這些建議框之間大量重疊,特徵值之間完全可以共享,造成了運算能力的浪費.
FAST-RCNN將整張圖像歸一化後直接送入CNN,在最後的卷積層輸出的feature map上,加入建議框信息,使得在此之前的CNN運算得以共享.
(2) 訓練時速度慢:R-CNN在訓練時,是在採用SVM分類之前,把通過CNN提取的特徵存儲在硬碟上.這種方法造成了訓練性能低下,因為在硬碟上大量的讀寫數據會造成訓練速度緩慢.
FAST-RCNN在訓練時,只需要將一張圖像送入網路,每張圖像一次性地提取CNN特徵和建議區域,訓練數據在GPU內存里直接進Loss層,這樣候選區域的前幾層特徵不需要再重復計算且不再需要把大量數據存儲在硬碟上.
(3) 訓練所需空間大:R-CNN中獨立的SVM分類器和回歸器需要大量特徵作為訓練樣本,需要大量的硬碟空間.FAST-RCNN把類別判斷和位置回歸統一用深度網路實現,不再需要額外存儲.
(4) 由於ROI pooling的提出,不需要再input進行Corp和wrap操作,避免像素的損失,巧妙解決了尺度縮放的問題.

(1)輸入測試圖像;
(2)將整張圖片輸入CNN,進行特徵提取;
(3)用RPN先生成一堆Anchor box,對其進行裁剪過濾後通過softmax判斷anchors屬於前景(foreground)或者後景(background),即是物體or不是物體,所以這是一個二分類;同時,另一分支bounding box regression修正anchor box,形成較精確的proposal(註:這里的較精確是相對於後面全連接層的再一次box regression而言)
(4)把建議窗口映射到CNN的最後一層卷積feature map上;
(5)通過RoI pooling層使每個RoI生成固定尺寸的feature map;
(6)利用Softmax Loss(探測分類概率) 和Smooth L1 Loss(探測邊框回歸)對分類概率和邊框回歸(Bounding box regression)聯合訓練.

相比FASTER-RCNN,主要兩處不同:
(1)使用RPN(Region Proposal Network)代替原來的Selective Search方法產生建議窗口;
(2)產生建議窗口的CNN和目標檢測的CNN共享

改進:
(1) 如何高效快速產生建議框?
FASTER-RCNN創造性地採用卷積網路自行產生建議框,並且和目標檢測網路共享卷積網路,使得建議框數目從原有的約2000個減少為300個,且建議框的質量也有本質的提高.

從上面的三張圖可以看出,Faster R CNN由下面幾部分組成:
1.數據集,image input
2.卷積層CNN等基礎網路,提取特徵得到feature map
3-1.RPN層,再在經過卷積層提取到的feature map上用一個3x3的slide window,去遍歷整個feature map,在遍歷過程中每個window中心按rate,scale(1:2,1:1,2:1)生成9個anchors,然後再利用全連接對每個anchors做二分類(是前景還是背景)和初步bbox regression,最後輸出比較精確的300個ROIs。
3-2.把經過卷積層feature map用ROI pooling固定全連接層的輸入維度。
4.然後把經過RPN輸出的rois映射到ROIpooling的feature map上進行bbox回歸和分類。

SPP-Net是出自論文《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》
由於一般的網路結構中都伴隨全連接層,全連接層的參數就和輸入圖像大小有關,因為它要把輸入的所有像素點連接起來,需要指定輸入層神經元個數和輸出層神經元個數,所以需要規定輸入的feature的大小。而SPP-NET正好解決了這個問題。

如果原圖輸入是224x224,對於conv5出來後的輸出,是13x13x256的,可以理解成有256個這樣的filter,每個filter對應一張13x13的activation map.如果像上圖那樣將activation map pooling成4x4 2x2 1x1三張子圖,做max pooling後,出來的特徵就是固定長度的(16+4+1)x256那麼多的維度了.如果原圖的輸入不是224x224,出來的特徵依然是(16+4+1)x256;直覺地說,可以理解成將原來固定大小為(3x3)窗口的pool5改成了自適應窗口大小,窗口的大小和activation map成比例,保證了經過pooling後出來的feature的長度是一致的.

總結而言,當網路輸入的是一張任意大小的圖片,這個時候我們可以一直進行卷積、池化,直到網路的倒數幾層的時候,也就是我們即將與全連接層連接的時候,就要使用金字塔池化,使得任意大小的特徵圖都能夠轉換成固定大小的特徵向量,這就是空間金字塔池化的意義(多尺度特徵提取出固定大小的特徵向量)。

ROI pooling layer實際上是SPP-NET的一個精簡版,SPP-NET對每個proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要下采樣到一個7x7的特徵圖.對於VGG16網路conv5_3有512個特徵圖,這樣所有region proposal對應了一個7*7*512維度的特徵向量作為全連接層的輸入.

為什麼要pooling成7×7的尺度?是為了能夠共享權重。Faster RCNN除了用到VGG前幾層的卷積之外,最後的全連接層也可以繼續利用。當所有的RoIs都被pooling成(512\×7\×7)的feature map後,將它reshape 成一個一維的向量,就可以利用VGG16預訓練的權重,初始化前兩層全連接.

那麼經過何種變換才能從圖11中的窗口P變為窗口呢?比較簡單的思路就是:

注意:只有當Proposal和Ground Truth比較接近時(線性問題),我們才能將其作為訓練樣本訓練我們的線性回歸模型,否則會導致訓練的回歸模型不work(當Proposal跟GT離得較遠,就是復雜的非線性問題了,此時用線性回歸建模顯然不合理).這個也是G-CNN: an Iterative Grid Based Object Detector多次迭代實現目標准確定位的關鍵. 線性回歸就是給定輸入的特徵向量X,學習一組參數W,使得經過線性回歸後的值跟真實值Y(Ground Truth)非常接近.即.那麼Bounding-box中我們的輸入以及輸出分別是什麼呢?

如上圖中標識:
① rpn_cls:60*40*512-d ⊕ 1*1*512*18 > 60*40*92 逐像素對其9個Anchor box進行二分類
② rpn_bbox:60*40*512-d ⊕ 1*1*512*36>60*40*9*4 逐像素得到其9個Anchor box四個坐標信息

逐像素對Anchors分類標記
① 去除掉超過1000*600這原圖的邊界的anchor box
② 如果anchor box與ground truth的IoU值最大,標記為正樣本,label=1
③ 如果anchor box與ground truth的IoU>0.7,標記為正樣本,label=1
④ 如果anchor box與ground truth的IoU<0.3,標記為負樣本,label=0
剩下的既不是正樣本也不是負樣本,不用於最終訓練,label=-1

逐像素Bbox回歸糾正
除了對anchor box進行標記外,另一件事情就是計算anchor box與ground truth之間的偏移量
令:ground truth:標定的框也對應一個中心點位置坐標x ,y 和寬高w ,h
anchor box: 中心點位置坐標x_a,y_a和寬高w_a,h_a
所以,偏移量:
△x=(x -x_a)/w_a △y=(y -y_a)/h_a
△w=log(w /w_a) △h=log(h /h_a)
通過ground truth box與預測的anchor box之間的差異來進行學習,從而是RPN網路中的權重能夠學習到預測box的能力

接著進一步對Anchors進行越界剔除和使用nms非最大值抑制,剔除掉重疊的框;比如,設定IoU為0.7的閾值,即僅保留覆蓋率不超過0.7的局部最大分數的box(粗篩)。最後留下大約2000個anchor,然後再取前N個box(比如300個);這樣,進入到下一層ROI Pooling時region proposal大約只有300個。

參考文獻:

❷ 安克65w充oppo65w

1、SuperVOOC(超級閃充)發展史:

SuperVOOC 1.0:
2016年,OPPO首次提出了超級閃充(SuperVOOC)概念;採用雙電芯串聯設計,相同的電流情況下充電功率提升一倍達到50W,15分鍾內就能充滿一部2500mAh的手機。2018年,OPPO Find X超級閃充版和OPPO Find X蘭博基尼版首發搭載。2021年,SUPERVOOC升級統一了諸多協議,並且升級為了代表歐加集團充電的品牌。

SuperVOOC 2.0:
充電功率提升接近至65W,室溫25攝氏度環境下,第一次在即將商用的機型上實現了「30分鍾充滿等效4000mAh電池能量的手機」。在2019年10月發布的Reno Ace(中國大陸機型)上首次應用。

SUPERVOOC:
是對SuperVOOC及SuperVOOC2.0的升級,涵蓋更多充電檔位及更高充電功率。目前支持7個充電檔位33W、50W、65W、67W、80W、150W、240W。

2、SuperVOOC 2.0對比SuperVOOC 1.0進行了哪些升級?
(1)適配器端:SuperVOOC 2.0適配器採用了第三代半導體——GaN氮化鎵。氮化鎵能帶來充電工作效率的提升,同時實現更小的充電器體積。OPPO也會是第一批使用氮化鎵的手機品牌。
(2)採用了新一代的串聯雙3C電芯,電芯採用MMT(極耳中置)工藝製造,使電池阻抗更低,能支持輸入更大電流(10V6.5A),且有效控制溫升。
(註:極耳是電池中的一種原材料,作為電池充放電的接觸點。)
SuperVOOC採用了熔斷式過壓保護電路,能夠帶來更高的可靠性。
(3)演算法優化:
① VFC 充電演算法:改善90%-100%的充電區間效率,縮短最後10%的充電時間。
② VCVT智能調諧演算法:以100mA一檔為一單位智能調節電壓電流,實現無級變速調整電壓,提升充電效率,降低充電帶來的熱損耗。

3、SUPERVOOC對比SuperVOOC 2.0進行了哪些升級?
(1)協議端:SUPERVOOC額外兼容了Warp、Flashcharge協議,實現了對低壓快充以及高壓快充的全面兼容。
(2)手機端:SUPERVOOC高壓版本採用了全新一代charge pump充電技術,內置高壓轉換與低壓直充兩種充電模式,根據適配器類型配置對應的充電模式,實現對高、低壓適配器的完全兼容。

❸ HartSift: 一種基於GPU的高准確性和實時SIFT

尺度不變特徵變換 (SIFT) 是最流行和最強大的特徵提取演算法之一,因為它對尺度、旋轉和光照保持不變。它已被廣泛應用於視頻跟蹤、圖像拼接、同時定位和映射(SLAM)、運動結構(SFM)等領域。然而,高計算復雜度限制了其在實時系統中的進一步應用。這些系統必須在准確性和性能之間進行權衡以實現實時特徵提取。他們採用其他更快但精度較低的演算法,如 SURF 和 PCA-SIFT。為了解決這個問題,本文提出了一種使用 CUDA 的 GPU 加速 SIFT,命名為 HartSift,充分利用單機CPU和GPU的計算資源,實現高精度、實時的特徵提取。實驗表明,在 NIVDIA GTX TITAN Black GPU 上,HartSift 可以根據圖像的大小在 3.14-10.57ms (94.61-318.47fps) 內處理圖像。此外,HartSift 分別比 OpenCV-SIFT(CPU 版本)和 SiftGPU(GPU 版本)快 59.34-75.96 倍和 4.01-6.49 倍。同時,HartSift 的性能和 CudaSIFT(迄今為止最快的 GPU 版本)的性能幾乎相同,而 HartSift 的准確度遠高於 CudaSIFT。

SIFT演算法可以提取大量顯著特徵,這些特徵在縮放、旋轉、光照和3D視點保持不變,還提供了跨越雜訊和仿射失真的穩健匹配。但SIFT的高計算復雜度限制了其在大規模數據和實時系統中的進一步應用。而復雜度較低的演算法,如SURF、PCA-SIFT的准確性又不太高。因此,在主流計算平台上實現高精度、實時的SIFT是一個重要而有意義的研究課題。

而SIFT演算法具有很好的並行性,可以正確移植到GPU上。因此,在配備GPU的異構計算系統上實現高性能的SIFT具有重要的實用價值。

SIFT 演算法包含三個階段,包括高斯差分(DoG)金字塔的構建、精確的關鍵點定位和 128 維描述符生成。由於每個階段都有自己的並行特性,因此必須使用不同的並行粒度和優化來實現高性能。尤其是後兩個階段,負載不平衡不利於GPU優化,會導致性能下降。

本文的主要貢獻和創新可以概括如下:

有許多工作嘗試在GPU上使用SIFT演算法。

然而,為了實現高性能,他們省略了 SIFT 演算法的一些重要步驟,例如將輸入圖像加倍、保持尺度變化的連續性和擬合二次函數以定位準確的關鍵點信息。作者的實驗表明,這些遺漏會導致 SIFT 丟失很多關鍵點和准確性。

Lowe將輸入圖像尺寸加倍作為高斯金字塔 的最底層,每個尺度 通過高斯卷積產生:

高斯金字塔確定之後,利用相同Octave的層級相減,得到差分金字塔:

其中 ,在本文中, .

檢測尺度空間極值

將DoG金字塔每個像素與相鄰像素比較,同層8個,上下層9個,若像素是局部最大值或局部最小值,將其視為關鍵點候選。

去除無效關鍵點

去除較低對比度和不穩定邊緣響應的候選關鍵點,通過將3D二次函數擬合到附近數據執行子像素插值,以獲取精確的位置、比例和主曲率比。

方向分配

將候選關鍵點周圍的梯度累積到36 bins的直方圖中,根據每層的尺度計算搜索半徑。每個緊鄰像素由一個高斯加權窗口加權,梯度方向累計到36 bins的方向直方圖中。峰值為主要梯度方向,同時超過峰值80%的局部峰值bin也被視為關鍵點方向。

對關鍵點周圍像素計算梯度直方圖,搜索半徑比上一步驟大得多,同樣用一個高斯加權函數用於為每個鄰居的梯度值分配權重。

根據梯度方向將最終的梯度值累積到一個 360-bin 的圓形方向直方圖。最後,直方圖將被歸一化、平滑並轉換為 128D 描述符。

構建金字塔應該保持順序,以保證尺度空間變化連續性。Acharya和Bjorkman為加快這一過程,犧牲准確性打破構建順序。考慮到不能使准確性降低,構建順序在HartSift中保留。

分離卷積核

對於 大小的卷積核處理 大小的圖像需要進行 次運算,如果將2D卷積核拆解為兩個1D的卷積核,計算量減少至 . 通過使用共享內存和向量化方法,更容易實現合並全局內存訪問並減少一維卷積的冗餘訪問。

Uber 內核

Uber內核將多個不同任務放到一個物理內核中,在一個內核中並行處理任務,而不需要在內核之間切換。差分金字塔第 層由高斯金字塔第 和第 層決定。將高斯差分金字塔和高斯卷積核封裝在單個核中,可以充分挖掘並行性。

線程不需要重復讀取高斯金字塔第 層的值,這是由於第 層的值計算完後,結果會放在寄存器內而不是全局內存中。藉助Uber內核的優勢,我們可以節省 的空間和 的內核運行時間

異構並行

HartSift 採用異構並行方法來加速這一階段。CPU 和 GPU 將並行協作,構建 DoG 金字塔。

由於GPU處理小圖像沒有優勢,作者將 以下的圖像放到CPU處理,大圖像放到GPU處理。用戶也可以自行設置分離點,確保CPU和GPU負載平衡。

存在兩個問題:

負載均衡

Warp是GPU最小並行執行單元,即以鎖步方式執行的 32 個線程的集合。若負載不均衡,則warp執行時間取決於最後一個線程完成的時間,warp負載不均衡會導致GPU效率降低。

由於候選關鍵點分布的隨機性,幾乎所有經線都包含不同數量的空閑線程。如果這些warp繼續處理以下部分,就會出現兩個級別的負載不平衡.

在去除無效的候選關鍵點部分時,線程將進行亞像素插值以獲得准確的候選關鍵點信息,從而去除具有低對比度或不穩定邊緣響應的關鍵點候選。換句話說,一些線程會比其他線程更早返回一次。負載不平衡會變得更加嚴重。

為了突破性能瓶頸,HartSift 引入了重新平衡工作負載和多粒度並行優化。

重新平衡工作負載

當檢測到負載不平衡時,HartSift 將通過啟動具有適當粒度的新內核並分派每個具有 32 個活動線程的新經線來重新平衡工作負載。

此外,啟動三個內核分別處理這三個部分,不僅可以重新平衡工作量,還可以根據不同部分的並行特性提供多粒度的並行。

多粒度並行

重新平衡工作負載優化保證每個內核中的線程和經線被完全載入,多粒度並行優化保證工作負載將平均分配到線程和經線。此外,不同內核的並行粒度取決於工作負載的特性。

HartSift通過將一個線程映射到一個或多個像素,採用與關鍵點候選檢測部分和無效關鍵點去除部分並行的線程粒度。然而,線程粒度並行會導致方向分配部分的負載不平衡,因為不同關鍵點的相鄰區域半徑不同。線程粒度並行會為單個線程分配過多的工作,這在某些情況下限制了硬體資源的利用率。所以在這部分應用混合粒度並行:扭曲粒度構建直方圖,線程粒度找出並將主導方向分配給相應的關鍵點。

基於扭曲的直方圖演算法

作者針對每個關鍵點提出了一種基於扭曲粒度和原子操作的高性能直方圖演算法,以充分利用局部性。

該階段關鍵點的鄰域半徑遠大於前一階段。需要為每個關鍵點累積數千個鄰居到一個 360-bin 直方圖。如果採用前一階段的基於原子扭曲的直方圖演算法,會對這一階段的性能產生不同的影響。

HartSift引入了一種atomic-free的直方圖演算法,進一步提升了這一階段的性能。

該演算法包含三個步驟:

為了消除線程間的負載不平衡,實現全局合並訪問,HartSift 使用一個warp 來處理一個keypoint 的所有鄰居。當線程計算出它們的方向 bin 時,它們需要根據bin變數的值將梯度值累加到局部直方圖。考慮到有如此多的鄰居並且一個經線的一些線程可能具有相同的 bin,演算法1引入了一種無原子的多鍵約簡方法來累積每個經線的部分和。這種方法可以利用warp級shuffle和vote指令完全消除原子操作和本地同步。它根據bin對經紗的線程進行分組並指定每組具有最低車道的線程作為隊長線程。隊長線程將保存他們自己的 bin 的部分總和,並將它們並行地累積到駐留在共享內存中的本地直方圖,而不會發生 bank 沖突和同步。在遍歷所有鄰居後,HartSift 將最終的局部直方圖復制到駐留在全局內存中的全局直方圖。

本文提出了一種GPU上的並行SIFT,命名為Hart-Sift,它可以在單機內同時使用CPU和GPU來實現高精度和實時的特徵提取。HartSift根據每個階段的不同特點,通過適當採用不同的優化策略來提升性能,例如負載均衡、基於warp的直方圖演算法和不同尺度樣本的atomic-free直方圖演算法等。在NVIDIA GTX TITAN Black GPU上,HartSift可以在3.14 ~ 10.57ms(94.61 ~ 318.47fps)內提取高精度特徵,輕松滿足高精度和實時性的苛刻要求。另外,與OpenCV-SIFT和SiftGPU相比,HartSift獲得了59.34 ~ 75.96倍和4.01 ~ 6.49倍加速分別。同時,HartSift 和 CudaSIFT 的性能幾乎相同,但 HartSift 遠比 CudaSIFT 准確。

❹ 求CSS解釋:word-warp word-break table-layout

word-wrap : normal | break-word 取值: normal :默認值。允許內容頂開指定的容器邊界break-word :內容將在邊界內換行。如果需要,詞內換行( word-break )也將發生說明:設置或檢索當當前行超過指定容器的邊界時是否斷開轉行。
此屬性僅作用於有布局的對象,如塊對象。內聯要素要使用該屬性,必須先設定對象的 height 或 width 屬性,或者設定 position 屬性為 absolute ,或者設定 display 屬性為 block 。
此屬性對於 currentStyle 對象而言是只讀的。對於其他對象而言是可讀寫的。
對應的腳本特性為 wordWrap 。 word-break : normal | break-all | keep-all 取值:normal :默認值。允許在詞間換行break-all :該行為與亞洲語言的 normal 相同。也允許非亞洲語言文本行的任意字內斷開。該值適合包含一些非亞洲文本的亞洲文本keep-all :與所有非亞洲語言的 normal 相同。對於中文,韓文,日文,不允許字斷開。適合包含少量亞洲文本的非亞洲文本說明:設置或檢索對象內文本的字內換行行為。尤其在出現多種語言時。
對於中文,應該使用 break-all 。
此屬性對於 currentStyle 對象而言是只讀的。對於其他對象而言是可讀寫的。
對應的腳本特性為 wordBreak 。 table-layout : auto | fixed 取值: auto :默認值。默認的自動演算法。布局將基於各單元格的內容。表格在每一單元格內所有內容讀取計算之後才會顯示出來fixed :固定布局的演算法。在這種演算法中,表格和列的寬度取決於 col 對象的寬度總和,假如沒有指定,則會取決於第一行每個單元格的寬度。假如表格沒有指定寬度( width )屬性,則表格被呈遞的默認寬度為 100% 。說明:設置或檢索表格的布局演算法。
你可以通過此屬性改善表格呈遞性能。此屬性導致IE以一次一行的方式呈遞表格內容從而提供給信息用戶更快的速度。此屬性依據此下順序使用其中一種方式布置表格欄寬度:
使用 col 或 colGroup 對象的寬度( width )屬性信息。
使用表格第一行內的單元格的寬度( width )信息。
依據表格列數等分表格寬度。而不考慮表格內容的實際寬度。 假如單元格的內容超過了列寬度,內容將會被換行。假如無法換行,則內容會被裁切。假如此屬性被設置為 fixed ,則 overflow 能夠被用於控制處理溢出單元格( td )寬度的內容。假如表格行高度被指定了,那麼換行的內容如果超出了指定表格行高度也會在縱向上被裁切。
設置此屬性值為 fixed ,有助於提高表格性能。對於長表格效果尤其顯著。
設置表格行高可以進一步提高呈遞速度,瀏覽器不需要檢測行內每一個單元格內容去確定行高就可以開始解析以及呈遞。
此屬性對於 currentStyle 對象而言是只讀的。對於其他對象而言是可讀寫的。
對應的腳本特性為 tableLayout 。

❺ 目前做醫學三維重建的廠家有哪些

第1章緒論
1.1醫學圖像三維重建的研究意義
1.2醫學圖像三維重建的應用
1.3國內外三維重建研究現狀
1.4本書內容簡介
第2章三維重建演算法概述
2.1體數據三維數學模型
2.2醫學圖像體數據
2.2.1CT層片圖像
2.2.2磁共振層片圖像
2.3直接三維重建演算法
2.3.1三維繪制模型
2.3.2圖像空間為序的直接三維重建演算法
2.3.3物體空間為序的直接三維重建演算法
2.4間接三維重建演算法
2.4.1基於等值面抽取的三維表面重建演算法
2.4.2頻域體繪制技術
2.5三維重建中的加速技術
2.6本章小結
第3章三維重建中關鍵技術研究
3.1Shear—warp投影演算法原理
3.1.1物體空間中基本視向的選取
3.1.2Shear—warp變換的因子分解
3.2有序體數據的數據結構
3.3體素分類的快速三線性插值
3.3.1分類插值的體素模型
3.3.2體素分類插值運算量分析
3.3.3分類插值對三維重建效果分析比較
3.4本章小結
第4章基於最大密度投影的血管造影演算法
4.1血管造影演算法實現
4.1.1CT層片圖像骨組織半自動分割去除演算法
4.1.2採用傳統光線追蹤的最大密度投影演算法的實現
4.2傳統光線追蹤演算法優化分析
4.2.1最大密度投影演算法中簡化流程可行性分析
4.2.2採用多模式的最大密度投影效果比較
4.2.3對MRl圖像血管造影結果條紋干擾的優化
4.3基於有序體數據的最大密度投影演算法
4.3.1最大密度投影演算法的計算量分析
4.3.2基於有序體數據最大密度投影演算法的偽代碼
4.3.3有序體數據的最大密度投影演算法繪制速度比較分析
4.3.4血管造影圖像質量比較分析
4.3.5頭部MRl層片圖像組血管造影結果
4.3.6頭頸部MRl層片圖像組血管造影結果
4.4本章小結
第5章基於等值面的三維表面重建
5.1對等值面的三維表面重建演算法分類
5.2層片二維輪廓線三角形網格的表面重構
5.2.1二維輪廓線三角形網格劃分演算法的描述
5.2.2多解析度三角形網格劃分演算法實現
5.2.3多解析度三維表面重建結果
5.3對等值面的直接三維表面重建演算法
5.3.1基於Shear—warp投影演算法的直接三維表面重建
……
第6章三維體數據的直接體繪制
第7章基於微機三維重建系統的軟體實現
第8章數字數據集的預處理
第9章數字人數據集的三維重建
第10章數字人眼角膜三維表面重建
附錄一圖目錄
附錄二表目錄
參考文獻
後記

❻ R-CNN 系列 object detection 演算法

在 object detection 領域,近 5 年的突破性進展似乎都與一個名字有關系:Ross Girshick。梳理從 R-CNN,Fast R-CNN, Faster R-CNN 到 Mask R-CNN 等各種經典模型,Ross Girshick 都是作者之一,甚至連 YOLO 的作者中也出現了 Ross Girshick 的名字。

這位大神簡歷如下:

從演算法到實現框架再到數據集,這位大神實現了一條龍的突破~

本文的目的是整理總結 R-CNN 系列演算法的發展歷程和模型本身的核心思想,不涉及太多技術細節(例如訓練數據預處理,超參數設置等)。
參考文獻主要是上述各演算法的原文以及下列資源:

R-CNN,一般認為全稱是 Region-based CNN 或者作者原文中提到的 Regions with CNN features。

概括地說,R-CNN 的步驟如下圖所示:

下面詳細介紹 R-CNN 中的關鍵環節。

對於輸入的圖片,首先利用 selective search 演算法 生成約 2000 個 region。關於 selective search 演算法可以參考 原文 ,也可以參考 我們之前的博客文章 。原文中提到 R-CNN 對各種 region proposal 演算法沒有偏好,之所以選擇 selective search 演算法僅僅是為了方便與前人工作做對比。

這一部分的目的是對於每一個 region,通過 CNN (原文選用 AlexNet) 進行特徵提取,得到統一長度的 feature vector,以便後續的分類。

由於每個 region 的大小差別比較大,而 AlexNet 默認接收 227×227 pixel 的圖片,這里就需要對 region 做一些預處理,主要是 region 大小的轉化。

要把一個任意大小的圖片轉化成 227×227 像素的圖片方法有很多,原文中介紹了 4 種方式:

分別是:

最終作者選擇了 warp + padding 的方式,一方面 warp 相對來說是最簡單的,直接把任意大小的圖片縮放成 227×227 即可,另外 padding 是在原 region 周圍稍微添加了一些像素點,從實際效果看提高了檢測正確率。

將統一大小的 region 送入 CNN 中,進行特徵提取。 如何得到這個 CNN 也是一個問題。

針對目標檢測的數據集 ILSVRC detection dataset 包含了 200 類物體,PASCAL VOC (Visual Object Classes) 包含了 20 類物體。相對來說帶有標簽的訓練數據比較少,不足以訓練一個大型的 CNN,因此採用了 transfer learning 的技術。原文中並沒有提到 transfer learning 這個名詞,只是說 fine-tuning
首先借用在 ImageNet 上已經訓練好的 CNN 模型(最初的文章中用了 AlexNet,後來 arXiv 上新版文章中用了 VGG,效果提升很明顯),然後在 PASCAL 數據集上進行 fine-tuning。這里對 AlexNet 網路結構的改變只是將原本對應 ImageNet 1000 類輸出的 classification layer 替換成了對應 N+1 類輸出的 classification layer,該層權重隨機初始化。對於 PASCAL 數據集 N=20,ILSVRC 數據集 N=200,另外 +1 對應 background 類型。

經過 fine-tuning 之後,CNN softmax layer 之前的 4096 維向量即為該 region 的 feature vector.

得到 region 的 feature vector 之後,送入 SVM 進行最後的分類。

這里 SVM 的訓練是針對不同類型的物體分開進行的,每一類訓練一個 SVM,它只給出針對這一類物體的分類結果。之所以最後用 SVM 分類,而不是直接用 CNN 的 softmax 進行分類,原文作者的解釋是嘗試過 softmax 之後發現效果比 SVM 差一些,但是同時指出如果調整一些訓練策略,softmax 和 SVM 之間的差距有可能縮小。這也為後來基於 R-CNN 的改進埋下了伏筆。

得到所有 region 對應的檢測結果(即包含某種類型物體的概率 score)之後,還有一步操作: Non-Maximum Suppression (NMS) 。如果兩個 region 檢測到同一類物體,比如都檢測到了行人,一個 region score 較高,而另一個 score 較低,當這兩個 region 的 IoU (intersection-over-union) 超過某個閾值時,即它們重合較多時,只保留那個 score 較高的 region.

object detection 的任務除了檢測圖中的物體,還要給出定位,即用 bounding box 盡量准確的圈出該物體。前邊基於 region 的分類過程可能能夠正確辨識出 region 中的物體,但是初始的 region 並不一定是一個合適的 bbox。在 R-CNN 最後又添加了一個線性回歸模型,基於 feature vector 來預測正確的 bbox 相對於 region 的位置變換,即預測 bbox 應該如何調整。這個訓練過程也是 class-specific 的。

在最終使用時,R-CNN 輸出包含兩部分:

理論上來說,更新 bbox 的位置之後,應該在新的 bbox 中重新進行分類,這樣准確度可能更高一些,但是原文作者發現實際上並沒有明顯改進。因此,實際使用中並沒有對新的 bbox 重新分類。

總的來說,上述 R-CNN 的訓練是分多步走的:先是 fine-tuning 一個 CNN 得到 feature vector,然後訓練 SVM 進行分類,最後還要再訓練一個線性回歸環節預測 bounding box 的調整。

Fast R-CNN 的改進是不再使用獨立的 SVM 和線性回歸,而是統一用 CNN 將這三個環節整合起來。Fast R-CNN 在訓練時間和檢測時間方面比當時已有的其他演算法快若干數量級。

Fast R-CNN 整體框架如下:

基本步驟:

在上述各環節中,我認為比較關鍵的有兩個:一是 RoI projection,即將 image 上的 RoI 映射到 feature map 上的 RoI。二是通過 RoI pooling layer 將 feature map 上不同大小的 RoI 轉化成統一大小的 sub feature map。而這兩個環節都借鑒了 SPPnets ,其中 RoI pooling layer 是 SPPnets 中 Spatial Pyramid Pooling layer 的特例。

原本 R-CNN 是在原圖上選取若干RoI,然後經過 CNN 處理,最後提取出 feature vector。對於每個圖片上不同的 RoI 來說,從輸入到輸出沒有任何共享的東西。

RoI projection 的作用是將 R-CNN 中對 image RoI 的處理推遲到了 feature map 上,這樣可以讓一個 image 的所有 RoI 共享從 image 到 feature map 的卷積處理過程。這很顯然會加速訓練和測試過程。至於如何將 image RoI 映射到 feature map RoI,已經有了 非常細致的討論 ,這里不再贅述。

如何將 feature map 上不同大小的 RoI 轉化成統一大小的 sub feature map? 這里 有非常直觀的動畫演示。

概括如下:
假設我們已經得到下面的 feature map (只考慮 2D)

其中 RoI 為黑框部分,大小為 。

我們希望將 RoI 轉化成 2×2 大小,可以選擇一個 2×2 的窗口如下

對每一個格子進行 max pooling 操作,得到如下的 2×2 的 feature map

總的來說,如果 RoI 大小為 ,希望得到的 feature map 大小為 ,則窗口中格子數目為 。可以根據具體情況向上或向下取整。

結合實際應用,如果 CNN 網路選用 VGG16,結構如下:

將最後一個 max pooling layer 替換為 RoI pooling layer。前部的卷積層對輸入圖片的大小沒有嚴格限制,這一限制主要是在 fully connected layer,所以為了配合 VGG16 網路結構,要確保每個 RoI 輸出的 feature map 依然為 。

對於 VGG16 網路結構的修改還包括:

在 Fast R-CNN 中,region proposal 是由 CNN 網路之外的演算法提供的,例如 selective search。相對於後續的 region recognition 過程,region proposal 這一步實際上是整個演算法的速度瓶頸。

Faster R-CNN 之所以 "Faster",就是因為提出了 Region Proposal Network (RPN) ,加速了 region proposal 過程。Faster R-CNN 本質上就是 RPN + Fast R-CNN.

整個 Faster R-CNN 結構如下:

或者更加詳細的結構如下:

RPN 和 Fast R-CNN 共享從 image 到最後一層 CNN 輸出的 feature map 這一段網路結構。 有些文章 也將 Faster R-CNN 看做三個模塊:用於生成 feature map 的 Feature network,用於生成 region proposal 的 RPN,以及用於最終的 object detection 的 Detection network。我們這里還是採用 RPN + Fast R-CNN 的形式。

RPN 的輸入是原始 image,輸出是 region proposals。在具體實現中,RPN 是 fully convolutional network (FCN),只包含 convolutional layer,原本在分類/回歸中常用的全連通層也由卷積操作替代。

有了 region proposals,後邊的操作與 Fast R-CNN 是相同的。

原文中採用 alternating training 的方式:

❼ 全球著名軟體公司

全球著名軟體公司

如今,不少企業都想擁有屬於自己企業或產品的手機APP,但其中最困擾企業主的問題就是:開發一款手機APP到底需要多少錢?

簡單點來說,要視手機APP的需求及質量而言,價位一般在幾千到十幾萬左右,更高端的價格更高。

四、APP開發公司的所在地

需要注意的是,同樣實力的APP開發公司,在不同的城市也會導致APP的成本費用高一些

閱讀全文

與warp演算法相關的資料

熱點內容
卡爾曼濾波演算法書籍 瀏覽:761
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:837
安卓怎麼下載60秒生存 瀏覽:797
外向式文件夾 瀏覽:229
dospdf 瀏覽:425
怎麼修改騰訊雲伺服器ip 瀏覽:380
pdftoeps 瀏覽:487
為什麼鴻蒙那麼像安卓 瀏覽:730
安卓手機怎麼拍自媒體視頻 瀏覽:180
單片機各個中斷的初始化 瀏覽:718
python怎麼集合元素 瀏覽:475
python逐條解讀 瀏覽:827
基於單片機的濕度控制 瀏覽:493
ios如何使用安卓的帳號 瀏覽:877
程序員公園采訪 瀏覽:805
程序員實戰教程要多長時間 瀏覽:968
企業數據加密技巧 瀏覽:129
租雲伺服器開發 瀏覽:807
程序員告白媽媽不同意 瀏覽:330
攻城掠地怎麼查看伺服器 瀏覽:595