① 機器視覺演算法有哪些
機器視覺演算法基本步驟;
1、圖像數據解碼
2、圖像特徵提取
3、識別圖像中目標。
機器視覺是人工智慧正在快速發展的一個分支。
簡單說來,機器視覺就是用機器代替人眼來做測量和判斷。
機器視覺系統是通過機器視覺產品(即圖像攝取裝置,分CMOS和CCD兩種)將被攝取目標轉換成圖像信號,傳送給專用的圖像處理系統,得到被攝目標的形態信息,根據像素分布和亮度、顏色等信息,轉變成數字化信號;圖像系統對這些信號進行各種運算來抽取目標的特徵,進而根據判別的結果來控制現場的設備動作。
現在做視覺檢測的公司比較多,國內國外都有,許多視覺算是很好的。
能提供完整的機器視覺軟體解決方案,也可以為客戶提供演算法級的定製,覆蓋所有的工業應用領域,適用范圍比較廣。機器視覺的應用會越來越多,因為計算的水平越來越高,可以處理更復雜的視覺演算法;其實好多的東西,包括現在流行的GPS,最早都是外國的公司在做,程序都是中國人在做外包;
光機電的應用我個人覺得已經很成熟了,不會再有新東西。
② 機器學習一般常用的演算法有哪些哪個平台學習機器演算法比較好
樓主肯定機器習解才提種問題問題專業程度看起機器習工程師詞彙 機器習基礎PCA模型理論貝葉斯boost,Adaboost, 模式識別各種特徵諸HogHaar,SIFT等 深度習DBNCNNBPRBM等等 非專業身略懂點 沒用針需求具體設計或者需要自全新設計合適算現熱門算CNN(convolutional neural networks)卷積神經中國絡 優點:需要訓練獲取特徵習程自提取圖像特徵免規量訓練本間本足夠情況能夠非精確識別結般都能95%+確率 缺點:硬體要求高CUDA並行框架算用火般台式機跑Demo花費間資源佔用高塊算通病
③ 經典目標檢測演算法介紹
姓名:牛曉銀;學號:20181213993;學院:計算機科學與技術
轉自:https://zhuanlan.hu.com/p/34142321
【嵌牛導讀】:目標檢測,也叫目標提取,是一種基於目標幾何和統計特徵的圖像分割。隨著計算機技術的發展和計算機視覺原理的廣泛應用,利用計算機圖像處理技術對目標進行實時跟蹤研究越來越熱門,對目標進行動態實時跟蹤定位在智能化交通系統、軍事目標檢測及醫學導航手術中手術器械定位等方面具有廣泛的應用價值。
【嵌牛鼻子】:目標檢測、檢測模型、計算機視覺
【嵌牛提問】:你知道或者用過哪些目標檢測演算法?
【嵌牛正文】:
(一)目標檢測經典工作回顧
本文結構
兩階段模型因其對圖片的兩階段處理得名,也稱為基於區域(Region-based)的方法,我們選取R-CNN系列工作作為這一類型的代表。
R-CNN: R-CNN系列的開山之作
論文鏈接: Rich feature hierarchies for accurate object detection and semantic segmentation
本文的兩大貢獻:1)CNN可用於基於區域的定位和分割物體;2)監督訓練樣本數緊缺時,在額外的數據上預訓練的模型經過fine-tuning可以取得很好的效果。第一個貢獻影響了之後幾乎所有2-stage方法,而第二個貢獻中用分類任務(Imagenet)中訓練好的模型作為基網路,在檢測問題上fine-tuning的做法也在之後的工作中一直沿用。
傳統的計算機視覺方法常用精心設計的手工特徵(如SIFT, HOG)描述圖像,而深度學習的方法則倡導習得特徵,從圖像分類任務的經驗來看,CNN網路自動習得的特徵取得的效果已經超出了手工設計的特徵。本篇在局部區域應用卷積網路,以發揮卷積網路學習高質量特徵的能力。
R-CNN將檢測抽象為兩個過程,一是基於圖片提出若干可能包含物體的區域(即圖片的局部裁剪,被稱為Region Proposal),文中使用的是Selective Search演算法;二是在提出的這些區域上運行當時表現最好的分類網路(AlexNet),得到每個區域內物體的類別。
另外,文章中的兩個做法值得注意。
一是數據的准備。輸入CNN前,我們需要根據Ground Truth對提出的Region Proposal進行標記,這里使用的指標是IoU(Intersection over Union,交並比)。IoU計算了兩個區域之交的面積跟它們之並的比,描述了兩個區域的重合程度。
文章中特別提到,IoU閾值的選擇對結果影響顯著,這里要談兩個threshold,一個用來識別正樣本(如跟ground truth的IoU大於0.5),另一個用來標記負樣本(即背景類,如IoU小於0.1),而介於兩者之間的則為難例(Hard Negatives),若標為正類,則包含了過多的背景信息,反之又包含了要檢測物體的特徵,因而這些Proposal便被忽略掉。
另一點是位置坐標的回歸(Bounding-Box Regression),這一過程是Region Proposal向Ground Truth調整,實現時加入了log/exp變換來使損失保持在合理的量級上,可以看做一種標准化(Normalization)操作。
小結
R-CNN的想法直接明了,即將檢測任務轉化為區域上的分類任務,是深度學習方法在檢測任務上的試水。模型本身存在的問題也很多,如需要訓練三個不同的模型(proposal, classification, regression)、重復計算過多導致的性能問題等。盡管如此,這篇論文的很多做法仍然廣泛地影響著檢測任務上的深度模型革命,後續的很多工作也都是針對改進這一工作而展開,此篇可以稱得上"The First Paper"。
Fast R-CNN: 共享卷積運算
論文鏈接: Fast R-CNN
文章指出R-CNN耗時的原因是CNN是在每一個Proposal上單獨進行的,沒有共享計算,便提出將基礎網路在圖片整體上運行完畢後,再傳入R-CNN子網路,共享了大部分計算,故有Fast之名。
上圖是Fast R-CNN的架構。圖片經過feature extractor得到feature map, 同時在原圖上運行Selective Search演算法並將RoI(Region of Interset,實為坐標組,可與Region Proposal混用)映射到到feature map上,再對每個RoI進行RoI Pooling操作便得到等長的feature vector,將這些得到的feature vector進行正負樣本的整理(保持一定的正負樣本比例),分batch傳入並行的R-CNN子網路,同時進行分類和回歸,並將兩者的損失統一起來。
RoI Pooling 是對輸入R-CNN子網路的數據進行准備的關鍵操作。我們得到的區域常常有不同的大小,在映射到feature map上之後,會得到不同大小的特徵張量。RoI Pooling先將RoI等分成目標個數的網格,再在每個網格上進行max pooling,就得到等長的RoI feature vector。
文章最後的討論也有一定的借鑒意義:
multi-loss traing相比單獨訓練classification確有提升
multi-scale相比single-scale精度略有提升,但帶來的時間開銷更大。一定程度上說明CNN結構可以內在地學習尺度不變性
在更多的數據(VOC)上訓練後,精度是有進一步提升的
Softmax分類器比"one vs rest"型的SVM表現略好,引入了類間的競爭
更多的Proposal並不一定帶來精度的提升
小結
Fast R-CNN的這一結構正是檢測任務主流2-stage方法所採用的元結構的雛形。文章將Proposal, Feature Extractor, Object Classification&Localization統一在一個整體的結構中,並通過共享卷積計算提高特徵利用效率,是最有貢獻的地方。
Faster R-CNN: 兩階段模型的深度化
論文鏈接: Faster R-CNN: Towards Real Time Object Detection with Region Proposal Networks
Faster R-CNN是2-stage方法的奠基性工作,提出的RPN網路取代Selective Search演算法使得檢測任務可以由神經網路端到端地完成。粗略的講,Faster R-CNN = RPN + Fast R-CNN,跟RCNN共享卷積計算的特性使得RPN引入的計算量很小,使得Faster R-CNN可以在單個GPU上以5fps的速度運行,而在精度方面達到SOTA(State of the Art,當前最佳)。
本文的主要貢獻是提出Regional Proposal Networks,替代之前的SS演算法。RPN網路將Proposal這一任務建模為二分類(是否為物體)的問題。
第一步是在一個滑動窗口上生成不同大小和長寬比例的anchor box(如上圖右邊部分),取定IoU的閾值,按Ground Truth標定這些anchor box的正負。於是,傳入RPN網路的樣本數據被整理為anchor box(坐標)和每個anchor box是否有物體(二分類標簽)。RPN網路將每個樣本映射為一個概率值和四個坐標值,概率值反應這個anchor box有物體的概率,四個坐標值用於回歸定義物體的位置。最後將二分類和坐標回歸的損失統一起來,作為RPN網路的目標訓練。
由RPN得到Region Proposal在根據概率值篩選後經過類似的標記過程,被傳入R-CNN子網路,進行多分類和坐標回歸,同樣用多任務損失將二者的損失聯合。
小結
Faster R-CNN的成功之處在於用RPN網路完成了檢測任務的"深度化"。使用滑動窗口生成anchor box的思想也在後來的工作中越來越多地被採用(YOLO v2等)。這項工作奠定了"RPN+RCNN"的兩階段方法元結構,影響了大部分後續工作。
單階段(1-stage)檢測模型
單階段模型沒有中間的區域檢出過程,直接從圖片獲得預測結果,也被成為Region-free方法。
YOLO
論文鏈接: You Only Look Once: Unified, Real-Time Object Detection
YOLO是單階段方法的開山之作。它將檢測任務表述成一個統一的、端到端的回歸問題,並且以只處理一次圖片同時得到位置和分類而得名。
YOLO的主要優點:
快。
全局處理使得背景錯誤相對少,相比基於局部(區域)的方法, 如Fast RCNN。
泛化性能好,在藝術作品上做檢測時,YOLO表現比Fast R-CNN好。
YOLO的工作流程如下:
1.准備數據:將圖片縮放,劃分為等分的網格,每個網格按跟Ground Truth的IoU分配到所要預測的樣本。
2.卷積網路:由GoogLeNet更改而來,每個網格對每個類別預測一個條件概率值,並在網格基礎上生成B個box,每個box預測五個回歸值,四個表徵位置,第五個表徵這個box含有物體(注意不是某一類物體)的概率和位置的准確程度(由IoU表示)。測試時,分數如下計算:
等式左邊第一項由網格預測,後兩項由每個box預測,以條件概率的方式得到每個box含有不同類別物體的分數。 因而,卷積網路共輸出的預測值個數為S×S×(B×5+C),其中S為網格數,B為每個網格生成box個數,C為類別數。
3.後處理:使用NMS(Non-Maximum Suppression,非極大抑制)過濾得到最後的預測框
損失函數的設計
損失函數被分為三部分:坐標誤差、物體誤差、類別誤差。為了平衡類別不均衡和大小物體等帶來的影響,損失函數中添加了權重並將長寬取根號。
小結
YOLO提出了單階段的新思路,相比兩階段方法,其速度優勢明顯,實時的特性令人印象深刻。但YOLO本身也存在一些問題,如劃分網格較為粗糙,每個網格生成的box個數等限制了對小尺度物體和相近物體的檢測。
SSD: Single Shot Multibox Detector
論文鏈接: SSD: Single Shot Multibox Detector
SSD相比YOLO有以下突出的特點:
多尺度的feature map:基於VGG的不同卷積段,輸出feature map到回歸器中。這一點試圖提升小物體的檢測精度。
更多的anchor box,每個網格點生成不同大小和長寬比例的box,並將類別預測概率基於box預測(YOLO是在網格上),得到的輸出值個數為(C+4)×k×m×n,其中C為類別數,k為box個數,m×n為feature map的大小。
小結
SSD是單階段模型早期的集大成者,達到跟接近兩階段模型精度的同時,擁有比兩階段模型快一個數量級的速度。後續的單階段模型工作大多基於SSD改進展開。
檢測模型基本特點
最後,我們對檢測模型的基本特徵做一個簡單的歸納。
檢測模型整體上由基礎網路(Backbone Network)和檢測頭部(Detection Head)構成。前者作為特徵提取器,給出圖像不同大小、不同抽象層次的表示;後者則依據這些表示和監督信息學習類別和位置關聯。檢測頭部負責的類別預測和位置回歸兩個任務常常是並行進行的,構成多任務的損失進行聯合訓練。
相比單階段,兩階段檢測模型通常含有一個串列的頭部結構,即完成前背景分類和回歸後,把中間結果作為RCNN頭部的輸入再進行一次多分類和位置回歸。這種設計帶來了一些優點:
對檢測任務的解構,先進行前背景的分類,再進行物體的分類,這種解構使得監督信息在不同階段對網路參數的學習進行指導
RPN網路為RCNN網路提供良好的先驗,並有機會整理樣本的比例,減輕RCNN網路的學習負擔
這種設計的缺點也很明顯:中間結果常常帶來空間開銷,而串列的方式也使得推斷速度無法跟單階段相比;級聯的位置回歸則會導致RCNN部分的重復計算(如兩個RoI有重疊)。
另一方面,單階段模型只有一次類別預測和位置回歸,卷積運算的共享程度更高,擁有更快的速度和更小的內存佔用。讀者將會在接下來的文章中看到,兩種類型的模型也在互相吸收彼此的優點,這也使得兩者的界限更為模糊。
④ HOG演算法什麼意思
特徵梯度直方圖演算法,現在非常流行的一種行人檢測的演算法,一般配合LBP和SVM分類器效果很好。你要想具體了解可以去WIKI 或者 navneet的網站看看專業解釋。
不過HOG函數已經集成在了OPENCV庫裡面,因此其實沒有必要非要搞懂這個演算法。。。
⑤ 圖像的特徵提取都有哪些演算法
圖像的經典特徵提取方法:
1 HOG(histogram of Oriented Gradient,方向梯度直方圖)
2 SIFT(Scale-invariant features transform,尺度不變特徵變換)
3 SURF(Speeded Up Robust Features,加速穩健特徵,對sift的改進)
4 DOG(Difference of Gaussian,高斯函數差分)
5 LBP(Local Binary Pattern,局部二值模式)
6 HAAR(haar-like ,haar類特徵,注意haar是個人名,haar這個人提出了一個用作濾波器的小波,為這個濾波器命名為haar濾波器,後來有人把這個濾波器用到了圖像上,就是圖像的haar特徵)
圖像的一般提取特徵方法:
1 灰度直方圖,顏色直方圖
2 均值,方差
3 信號處理類的方法:灰度共生矩陣,Tamura紋理特徵,自回歸紋理特徵,小波變換。
4 傅里葉形狀描述符,小波描述符等,
⑥ viola jones人臉檢測原理
Viola-jones人臉檢測演算法是一種基於滑動窗口的目標檢測演算法,但它卻克服了滑動窗口檢測帶來的低效問題,可以用於實時人臉檢測,主要歸功於以下三點:
我參考論文[1]實現了Viola Jones中提到的attention cascade檢測框架,此處是 github傳送門 。
下面進一步詳細介紹整個檢測原理。
基於滑窗的目標檢測基本原理很簡單,首先構建一個classifier(分類器),以人臉檢測為例,分類器的工作是判斷給定大小的圖像的是否為人臉,用該分類器從左至右從上到下掃描整幅圖像,掃描獲取的部分圖像稱為子窗(文章中子窗大小為24x24像素),當分類器判斷子窗是人臉時,即完成了人臉檢測。
這樣處理有個問題,如果圖像中包含的人臉變大了,此時採用固定大小的子窗就無法進行檢測。通常有兩種解決方法,1. 採用image-pyramid(圖像金字塔),也就是通過resize獲得多種不同大小圖像並堆疊在一起,用固定大小分類器同時對所有圖像進行掃描;2. 採用不同大小的分類器進行掃描。文章中用到的是第二種方法,盡管如此,雖然避免了調整圖像大小帶來的計算開銷,但不同大小的分類器意味著有更多子窗需要進行處理。
如何構建一個足夠快的分類器來對每個子窗進行快速判斷。
分類器的構建有兩種方式,一種是pixel-based(基於像素),另一種是feature-based(基於特徵)。當把神經網路作為圖像分類器時,輸入是圖像的像素值,即基於像素的分類器。用圖像像素作為輸入不包含任何和待分類目標有關的特定信息,往往訓練這種分類器需要大量數據,並且分類過程較慢。基於特徵的分類器就是先針對圖像進行特徵提取(HOG特徵,SIFT特徵等),再利用獲取的特徵進行分類。這種分類器不需要大量訓練數據,且計算量一般會在特徵計算部分,相對較小。
文章採用的是基於特徵的分類器,選取了一種較為簡單的特徵即haar-like特徵。利用矩形個數對可以將haar-like特徵分為三類,分別由兩個,三個,和四個 大小相同 的矩形組成。全部列舉出來可以分為以下(a)(b)(c)(d)(e)五類(注意是五類不是五個,具體有多少個haar-like特徵是由子窗大小決定的)。如下圖所示(文章[1]中的圖)。
當子窗大小給定後,我們可以用五個參數唯一確定 一個 haar-like特徵,即特徵種類(a/b/c/d/e),左上角x軸坐標,左上角y軸坐標,矩形的長,矩形的寬。對應的特徵值等於位於白色矩形框中像素值總和減去位於黑色矩形框中的像素值總和。文章中用到的子窗大小為24x24像素,可以計算出來總共有162336個特徵(把在子窗中所有可能位置和可能大小的特徵全部列舉出來)。利用haar-like特徵進行分類只需兩步:
haar-like特徵有兩個優點,第一是它是scale-invariant(不隨圖片大小而改變)的,第二是可以通過積分圖像快速計算。簡單的說下第一點的含義,例如我們用24x24像素的訓練樣本訓練獲取一組haar-like特徵和對應的門限值,當對圖像進行掃描時,子窗大小調整為SxS像素,此時只需將特徵中的矩形大小按同樣比例進行縮放(門限值同樣需要縮放),計算所得的特徵值依然是有效的。
積分圖像是受卷積的微分性質啟發而定義一種數據結構。積分圖像定義:
其中 為積分圖像, 為原圖像。積分圖像中 位置處的像素值等於原圖中位於 的左側和上方的所有像素值之和。有了積分圖像我們就可以快速計算haar-like特徵,以特徵(a)為例,如下圖所示。
S1到S6是積分圖像在這六個頂點上的值。該特徵值等於位於A中的像素總和減去位於B中的像素總和,而A中像素總和等於S5+S1-S2-S4,B中像素總和等於S6+S2-S3-S5,並且無論矩形多大,我們總能在固定時間內計算出特徵值(6次索引操作和少量的加法乘法計算)。積分圖像只需計算一次後續可以一直使用,事實上在演算法實現時,我們只需保存樣本的積分圖像,原圖像反而不用保存。
現在找到了一類特徵用於構建分類器,和快速計算該類特徵的方法。分類器是由一組特徵構成的,而不是一個,如何找到一組有效的特徵。
文章列舉了前人的一些特徵選取方法(此處就不列舉了),它們雖然取得了一定的效果,但最終選出來的特徵數量還是太多。文章將adaBoost演算法用於特徵選取(創新點),即每次訓練的弱分類器的過程看做特徵選取的過程,一次從162336個特徵中選取一個特徵(同時還包括了對應的門限值,極性,加權誤差)。
adaboost演算法就不詳細介紹了,它的基本思想是訓練一系列「弱」分類器,組成一個committee(即每個弱分類器都有投票權,但是權重不同,加權誤差越小的弱分類器權重越大)。adaboost採用迭代訓練方式,給定一個t階committee,如何尋找第t+1個弱分類器和對應的權重,以最小化在一定分布下的訓練樣本的加權指數損失。這個優化過程可以轉換為對訓練樣本的分布進行調整(即增大上一輪錯誤判斷的樣本的權重,減小正確判斷的樣本權重),在調整後的樣本分布下尋找最小化加權0-1損失的弱分類器並計算對應的加權0-1損失。
可以利用adaboost找到一組特徵構成分類器,使得該分類器有極高的准確率和召回率(這種分類器勢必會有較大的計算量),這樣會導致圖像中的每一個子窗都享有同等的計算量,掃描一整幅圖會有幾十萬甚至上百萬子窗,總體計算量依然很大。實際上一幅圖像中只有極少可能包含人臉的位置是我們感興趣的,其他不包含人臉的子窗我們希望能夠快速篩除,將更精細的計算用於包含人臉的子窗。
文章引入了attention-cascade的機制(注意力級聯),即訓練多個分類器進行級聯,替代單一的分類器。結構如下圖所示(文章[3]中的圖)。
上圖所示的分類器有三級,上一級的輸出是下一級的輸入,只有預測為正的樣本才能傳遞給下一級,預測為負的樣本直接舍棄。大部分非人臉子窗往往在前幾級分類器就被舍棄,這樣使得掃描每個子窗所需的平均計算量大大減小。
分類器是一級一級訓練之後級聯起來的,訓練分類器時,整個級聯分類器的假負率(fpr_overall)有一個訓練目標(文章[1]中設置為10e-7),同時每一級有一對訓練目標,即假正率和假負率。每級分類器訓練的思想是在假負率極低的情況下(文章[1]中設置為0.005)盡量得到一個較低的假正率(文章中[1]中設置為0.5),即我們保證在正樣本盡可能多的通過該級分類器的情況下盡量篩除更多的負樣本。文章[3]通過一個鬆弛量來調節假正率和假負率。
下一級用到的訓練數據是由所有的正樣本和上一級輸出的假正樣本組成的,這樣訓練的好處是可以讓處於級聯後半部分的分類器「看到」更多負樣本數據,缺點是訓練後期假正樣本很難獲取,訓練時間會比較長。
盡管我們獲取了一個級聯分類器,但依然不能保證對同一幅圖中的一張人臉只會檢測到一次(子窗相對人臉有所便宜或者縮放子窗大小都可能導致重復檢測),如何消除重復檢測,獲得更好的檢測效果。
文章[3]中說的較為簡略,主要是針對檢測框構建並查集,並對並查集中的候選框求平均得出最終的檢測框。
文章[1]中是採用連通分量演算法,計算每種大小檢測框的置信度,根據置信度選取最終結果,但前提是檢測器在圖像中掃描的步進必須是1個像素,處理時間可能會比較長。
只能用於正臉檢測,如果人臉朝屏幕內外或者在屏幕平面上旋轉均有可能失效
在背景較亮,人臉較暗的情況下可能失效。
在有遮擋的情況下大概率失效。
⑦ 深度學習比sift,spin image,HoG,RIFT,GLOH,Textons等傳統特徵提取好在哪
深度學習,提取特徵需要大的圖像庫(目前一般都百萬級了)。
傳統方法,提取特徵一幅圖像就可以。
⑧ 機器學習演算法有哪些,最常用是哪些幾種,有什麼優點
樓主肯定對機器學習了解不多才會提這種問題。這問題專業程度看起來和「機器學習工程師」這詞彙一樣。
機器學習,基礎的PCA模型理論,貝葉斯,boost,Adaboost,
模式識別中的各種特徵,諸如Hog,Haar,SIFT等
深度學習里的DBN,CNN,BP,RBM等等。
非專業出身,只是略懂一點。
沒有常用的,只是針對需求有具體的設計,或者需要自己全新設計一個合適的演算法,現在最熱門的算是CNN(convolutional neural networks)卷積神經網路了。
優點:不需要訓練獲取特徵,在學習過程中自動提取圖像中的特徵,免去了常規方法中,大量訓練樣本的時間。在樣本足夠大的情況下,能夠得到非常精確的識別結果。一般都能95%+的正確率。
缺點:硬體要求高,CUDA的並行框架算是用的很火的了。但是一般的台式機跑一個Demo花費的時間長資源佔用高。不過這也是這塊演算法的通病。