從AI到deep learning影像辨識
文章推薦指數: 80 %
而近幾年影像辨識、物件偵測(object detection)技術應用於交通領域也相當成功,最常見的應用就是將路面上的車輛偵測出來,比起過去透過移動偵測(motion ...
2019年11月18日星期一
從AI到deeplearning影像辨識
最近剛好在做深度學習(deeplearning)相關資料的整理
就順便把資料整理上來做一個紀錄
簡單介紹一下:從AI到deeplearning影像辨識
近年來人工智慧(ArtificialIntelligence,AI)發展非常迅速,給人們帶來許多意外驚喜。
從2016年開始AI相關的技術廣泛應用於智慧控制、機器人、自動化控制、遺傳學、法學資訊、棋類遊戲、醫學領域以及語言圖像辨識領域,尤其在影像辨識、語言分析等方面,在許多的研究成果中,在單方面的能力展現已達到超越人類的水準。
但AI的發展並不是近期才開始,最早在1956年8月由被稱為人工智慧之父的約翰·麥卡錫(JohnMcCarthy)所發起的達特矛斯夏季人工智慧研究計劃(DartmouthSummerResearchProjectonArtificialIntelligence),對於AI有了初步的定義,該會議持續了一個月,進而催生後續人工智慧的發展。
而AI的發展過程中,大致呈現了三個浪潮,如下圖:
資料來源:大和有話說
在第一次的AI潮流中,由於當時的電腦運算能力有限,且發展是在網際網路之前,雖然這個階段未能提出真正有效解決實用問題的方法,但也在此奠下未來人工智慧發展的基礎。
第二階段的AI高峰,出現在電腦普及的時代,這時的電腦算力逐步提升,許多以”專家經驗”作為算法邏輯的專案系統(expertsystem)開始發展,但由於其僅能處理特定問題或是範圍非常有限,因此熱潮很快就消退了。
而近期由於電腦性能的大幅提升,甚至是易於大量矩陣運算的GraphicsProcessingUnit,GPU有了快速的發展,算力的大幅提升,讓機器學習(machinelearning)的想法被大量提出,其中最受矚目的深度學習(deeplearning)在此佔據了非常重要的角色,由於透過模仿人腦結構和功能的數學模型-類神經網路(neuralnetwork)有了相當成熟的發展,進而能透過非常大量的數據資料來學習,而達到人類預期的辨識成果。
GPU的發展加速了深度學習(deeplearning)的實用發展,比傳統CPU更適合深度學習進行開發、訓練、運算,下圖顯示採用5個CPU叢集的架構與1~3個GPU進行效能速度上的比較,在所有列出的深度學習模型上,CPU都遠遠落後於GPU的處理效能,甚至在多數模型上有極大的效能差異。
資料來源:http://ilikesqldata.com/gpus-vs-cpus-for-deployment-of-deep-learning-models/
深度學習(deeplearning)在人工神經網路(artificialneuralnetwork)的基礎下,發展出了像是深度神經網路(deepneuralnetworks,DNN)、卷積深度神經網路(convolutionalneuralnetworks,CNN)等多層次模型,能夠解決更複雜、更抽象的分類和識別,尤其在電腦視覺領域獲得了成功的應用,而最熱門的場域非自動駕駛莫屬了。
而其他AI的主要應用還包含了語音辨識以及自然語言處理(NLP),相關的發展早已進入一般人的日常生活,包含像apple、google、microsoft都相繼提出語音助理等服務,其成熟程度可見一班。
而更進階的像是搭載了NLP的聊天機器人(chatbot),facebook與line也接連推出相關的應用服務,可達到如同真人一般的進行文字訊息的對答,也成為了大家目光的焦點。
影像辨識領域也是近年來深度學習最蓬勃發展的一塊,舉凡智慧家居、自駕車、生產瑕疵品檢測、安防監控、醫療影像等應用,都和深度學習(deeplearning)影像辨識技術息息相關。
雖然在一般圖片的辨識已有同等於人類的辨識率,但針對動態影像的辨識準確度卻仍比不上人類,而因此各種演算法也如雨後春筍般地推出,如下圖所示:
資料來源:https://pythonawesome.com/a-paper-list-of-object-detection-using-deep-learning/
而近幾年影像辨識、物件偵測(objectdetection)技術應用於交通領域也相當成功,最常見的應用就是將路面上的車輛偵測出來,比起過去透過移動偵測(motiondetection)或是前景分離(foregroundextraction)等技術的成果還要好,深度學習的技術由於透過大量影像資料的訓練,較不易受到光影變化的影響,也不易受到物體大小的限制。
許多深度學習的方法相當耗時費力,但至今已經有許多能達到即時(realtime)演算的方法被提出,而其呈現的效果也相當不錯,例如像是:FasterR-CNN、SSD,YOLO等,皆已達到即時運算的程度,就算是影像中有物件重疊(overlap)的狀況,深度學習還是具有一定的偵測率,這是在過去傳統的演算法難以做到的,偵測物件的效果如下段影片所示。
物件偵測(objectrecognition)後加上過去的物件追蹤(objecttracking)技術,就能在辨識車種、辨識行人後加入計算流量、判別移動軌跡等應用,已具有相當大的實用性。
影像辨識的發展相當早,早期從圖形識別(patternrecognition)演進而來,也就是通過電腦用數學技術方法來研究圖型的自動處理和判讀。
隨著電腦技術的發展,開始研究複雜的資訊處理過程,而資訊處理過程的一個重要形式是對於環境及客觀形體的辨識。
對人類來說,特別重要的是對光學資訊(通過視覺器官來獲得)的辨識,也就是圖型識別的重要發展,其也應用於聲學辨識。
圖形識別著重在抽取主要表達特徵值(features),利用這些特徵值作為分類的依據,再利用一些具備統計學的模型進行分類,進而產出我們期望的結果,例如像是採用:支持向量機(supportvectormachine,SVM)、隱藏馬可夫模型(hiddenmarkovmodel,HMM)作為分類器。
這些分類器可依據擷取出的特徵值進行訓練,訓練後產生的模型就能進行分類,整個運作流程如下圖所示:
因此早期的研究都會偏重在影像的前置處理(pre-processing)以及特徵值的擷取(featuresextraction),尤其是特徵值的擷取,期望能夠找到最具代表性的特徵值去進行分類器的訓練,但相關的研究很難擺脫人的主觀意識或是過去自身經驗的枷鎖。
而深度學習的一大進展,就是減去了特徵值擷取(featuresextraction),由自身的類神經網路透過訓練階段去學習如何擷取特徵值,人工的部份僅需要專注在來源影像的標記(labeling)以及進行影像的前處理(pre-process),接著就將影像以及標記資訊進行深度學習的訓練(training),流程如下圖所示:
而圖形識別等技術在實際的應用上已經相當成功,在市場上可見到代表性的成熟技術像是文字辨識(opticalcharacterrecognition,OCR)、車牌辨識(licenseplaterecognition,LPR)、人臉辨識(facerecognition)…等等,皆是過去相當受歡迎的產品。
但也因為現今深度學習的快速發展,這些過去相當成熟的產品再次受到挑戰,更新更快的算法,更高的準確率,傳統的演算法可能會漸漸被深度學習的技術所取代。
在深度學習上,影像辨識相關的技術大致可分為三個類型,一種是影像分類(imageclassification),一種是物件辨識(objectrecognition),最後是加入物件分割(instancesegmentation),以下進行相關的技術介紹。
(一)影像分類(imageclassification)
在物件偵測的技術演進中,一開始是從影像分類(imageclassification)延伸而來,從許多來源影像去進行分類,一張影像只會被判別為一種類別,簡單的流程如下圖所示:
資料來源:https://medium.com/@harsathAI/cats-and-dogs-classifier-convolutional-neural-network-with-python-and-tensorflow-9-steps-of-6259c92802f3
透過大量已分類影像作為訓練資料的來源,深度學習能夠很快速、很準確地進行分類。
但這樣的功能僅適用於少數的條件,能應用的範圍不大,於是在影像分類後有了物件標記(objectlocation)的需求,是否能在影像中把分類的物件標記出來,並明確的框選出物件的位置和大小。
但這樣也僅限於一張影像裡面的一個物件,因此一張影像多個物件偵測(objectdetection)就成了後續發展的方向。
但物件在畫面中可能並非固定的方向,因此框選的資訊也逐漸無法滿足需求,是否能更精確地描述物件的形狀,並做到實體切割(instancesegmentation)的目的,成了後續發展的重點,而整個發展過程與差異可參考下圖:
資料來源:https://medium.com/zylapp/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852
(二)物件辨識(objectrecognition)
物件辨識(objectrecognition)在深度學習上已經有相當不錯的成果,過去傳統的物件辨識技術通常需要搭配相當複雜的前置影像處理,包含影像前處理(pre-process)、前景偵測(foregrounddetection)、物件偵測(objectdetection)、物件分割(objectsegmentation)…等等,最後才將分割後的物件影像進行特徵值擷取(featuresextraction),再進一步去做物件辨識。
而深度學習將大部分的動作,透過訓練的過程進行學習,流程僅需將影像作前處理(pre-process),就能將影像提供給深度學習模型(model),並產出其辨識結果,而辨識結果包含了物件偵測(objectdetection)的資訊,如:物件的位置、物件的大小…等;也包含了物件辨識(objectrecognition)的資訊,如:物件的種類、辨識分數…等。
目前主流的深度學習物件辨識模型,皆會採用MSCOCOdataset做為訓練的來源影像的資料集,該資料集由微軟團隊於2014年發布,共收集了8萬多張訓練用影像,其中標記了生活上常見的80種物件,例如:貓、狗、飛機、桌子、汽車…等等,並提供了約4萬張的測試影像。
而在2019年再度更新此資料集,雖然沒有新增不同的物件種類,但影像數量則增加至30萬張影像。
該資料集提供了一個完全開放的內容,透過相同的資料集做為基準,各家提出的演算模型才能有客觀的比較依據。
(三)物件切割(objectsegmentation)
上節所述的物件辨識(objectrecognition)已經能產出物件的辨識分類、辨識分數,以及物件偵測(objectdetection)資訊,但此資訊僅包含了像是座標位置,以及物件大小等,較為粗略的物件描述,表現出來的僅是一個框選住物件的矩形。
但物件本身的形狀、物件的角度等,並不能提供比較好的描述,因此實體切割(instancesegmentation)就是在處理如何完整的切割出物件的輪廓,而不僅僅是一個位置和一個粗略的範圍,成了這塊的研究目標。
而上述提到的MSCOCOdataset也包含了實體切割(instancesegmentation)的資訊,最新的資料集中,包含了超過200萬個切割物件。
而基於實體切割(instancesegmentation)此目的而衍生出的MaskR-CNN成了這類深度學習模型的基底,例如:mask_inception、mask_resnet是目前常見的模型。
目前的技術成果,在實體切割(instancesegmentation)上的效率會低於單純的物件辨識(objectrecognition),雖然對比過去已經有了長足的進步,許多模型已經可以達到一秒數張的處理效率,但若是以影像串流的連續性來說,還是很難達到足夠快速的運算成果,或許未來不久後,會有更快的突破性進展。
張貼者:
yy
於
凌晨1:50
以電子郵件傳送這篇文章BlogThis!分享至Twitter分享至Facebook分享到Pinterest
標籤:
AI,
deeplearning,
imageclassification,
instancesegmentation,
objectrecognition
沒有留言:
張貼留言
較新的文章
較舊的文章
首頁
訂閱:
張貼留言(Atom)
yy
檢視我的完整簡介
熱門文章
使用EmguCV
影像辨識-YOLOdarknet編譯建置方法
C#影像處理的速度極限
EmguCVImageProcess:Manipulatingthepixelspart1
C#有關async/await的實作方式
TrainingTesseractOCR3.0.1
從AI到deeplearning影像辨識
C#YOLOWrapper:Alturos.Yolo
VisualStudio2012建立安裝專案
EmguCVImageProcess:Manipulatingthepixelspart2
網誌存檔
►
2020
(3)
►
七月
(1)
►
六月
(1)
►
五月
(1)
▼
2019
(13)
▼
十一月
(1)
從AI到deeplearning影像辨識
►
七月
(1)
►
六月
(1)
►
五月
(1)
►
四月
(3)
►
二月
(3)
►
一月
(3)
►
2013
(26)
►
十一月
(1)
►
十月
(2)
►
九月
(1)
►
八月
(2)
►
七月
(2)
►
六月
(3)
►
五月
(4)
►
四月
(2)
►
三月
(2)
►
二月
(3)
►
一月
(4)
►
2012
(25)
►
十二月
(4)
►
十一月
(3)
►
十月
(3)
►
九月
(4)
►
八月
(6)
►
七月
(5)
標籤
C#
(57)
.NET
(53)
Image
(38)
EmguCV
(37)
ImageProcess
(37)
影像辨識
(6)
Capture
(5)
Video
(5)
VideoProcess
(5)
Windows
(5)
filtering
(5)
imagerecognition
(5)
objectrecognition
(5)
tensorflow
(5)
AI
(4)
Erode
(4)
Func
(4)
VisualStudio2010
(4)
YOLO
(4)
cornersdetection
(4)
darknet
(4)
dilate
(4)
emgutf
(4)
histogram
(4)
Bitmap
(3)
CI/CD
(3)
Canny
(3)
Cannyalgorithm
(3)
Morphological
(3)
ObjectDetection
(3)
VisualStudio2017
(3)
WindowsForm
(3)
WindowsService
(3)
buildserver
(3)
edgesdetection
(3)
gitlab
(3)
gitlabrunner
(3)
侵蝕
(3)
形態學
(3)
擴張
(3)
物件辨識
(3)
邊緣偵測
(3)
Alturos.Yolo
(2)
Backprojecting
(2)
Closing
(2)
CvInvoke
(2)
DNN
(2)
GPU
(2)
Houghtransform
(2)
MSVS2017
(2)
OpenCV
(2)
OpenCV3.4.0
(2)
Performance
(2)
SURF
(2)
Sobelfilter
(2)
SpeededUpRobustFeatures
(2)
TensorFlowSharp
(2)
VisualStudio2012
(2)
YOLOv3
(2)
connectedcomponents
(2)
cuda10.0
(2)
cudnn
(2)
cudnn64_7.dll
(2)
cvFindFundamentalMat
(2)
epipolarlines
(2)
extractingcontours
(2)
fundamentalmatrix
(2)
linesdetection
(2)
x64
(2)
物件偵測
(2)
閉鎖
(2)
AP
(1)
AlexeyAB.darknet
(1)
AppDomain
(1)
AppDomainSetup
(1)
BackgroundSubstractorMOG2
(1)
BeginInvoke
(1)
BruteForceMatcher
(1)
CPU
(1)
ColorDialog
(1)
Computervision
(1)
DLL
(1)
Error1001
(1)
FN
(1)
FP
(1)
FaceNet
(1)
Fastdetection
(1)
FeatureDetection
(1)
FeatureTracking
(1)
FeaturefromAcceleratedSegmentTest
(1)
FitLine
(1)
GCA憑證
(1)
GTX1080Ti
(1)
Gaussianfilter
(1)
GrabCut
(1)
Haarcascades
(1)
HarrisCorner
(1)
InstallShieldLE
(1)
Laplacian
(1)
Line2DFitting
(1)
Log4Net
(1)
MVC
(1)
Meanfilter
(1)
Medianfilter
(1)
Memory
(1)
Model-View-Controller
(1)
OCR
(1)
OpenFileDialog
(1)
Opening
(1)
Orca
(1)
PerformanceCounter
(1)
Process
(1)
RANSAC
(1)
RTX2070
(1)
RTX2080
(1)
Robertsoperator
(1)
SIFT
(1)
Saltandpeppernoise
(1)
Sandcastle
(1)
Scale-InvariantFeatureTransform
(1)
Scharroperator
(1)
ServiceController
(1)
Sobeloperator
(1)
System.BadImageFormatException
(1)
TN
(1)
TP
(1)
Task.Run
(1)
Tesseract
(1)
Tesseract3.0.1
(1)
VideoWriter
(1)
Watershed
(1)
YOLOWrapper
(1)
YOLOv4
(1)
Zero-crossing
(1)
app.config
(1)
approximatepolygon
(1)
artifacts
(1)
async
(1)
async/await
(1)
averageprecision
(1)
await
(1)
background
(1)
boundingrectangle
(1)
boxfilter
(1)
caffe
(1)
cameracalibration
(1)
certificatechain
(1)
circlesdetection
(1)
convexhull
(1)
convolution
(1)
cvComputeCorrespondEpilines
(1)
cvCornerHarris
(1)
cvFindHomography
(1)
cvInitUndistortRectifyMap
(1)
cvRemap
(1)
cvRunningAvg
(1)
cvWarpPerspective
(1)
deeplearning
(1)
enclosingcircle
(1)
facedetection
(1)
facerecognition
(1)
fast
(1)
firefox
(1)
foreground
(1)
goodfeaturestotrack
(1)
haarcascade_frontalface_alt2.xml
(1)
homography
(1)
hysteresisthresholding
(1)
imageclassification
(1)
imagepyramids
(1)
instancesegmentation
(1)
lock
(1)
mAP
(1)
meanshiftalgorithm
(1)
mixtureofGaussian
(1)
modelzoo
(1)
opencv_face_detector_uint8.pb
(1)
precision
(1)
probing
(1)
pyrDown
(1)
pyrUp
(1)
recall
(1)
res10_300x300_ssd_iter_140000_fp16.caffemodel
(1)
runningaverage
(1)
symmetricalmatchingscheme
(1)
tensorflowmodelzoo
(1)
testingserver
(1)
x86
(1)
xcopy
(1)
人臉辨識
(1)
分水嶺演算法
(1)
去背
(1)
召回率
(1)
安全連線失敗
(1)
安裝專案
(1)
巨集
(1)
建置事件
(1)
影像切割,前景切割
(1)
憑證串鍊
(1)
憑證串鍊失敗
(1)
效能
(1)
斷開
(1)
準確率
(1)
監控
(1)
線段偵測
(1)
邊角偵測
(1)
非同步
(1)
訂閱
發表文章
Atom
發表文章
留言
Atom
留言
總網頁瀏覽量
延伸文章資訊
- 1影像辨識 - 南華大學
自己所需要辨識的影像邊緣。執行的過程是先讀取影像,將影像灰階二值化,並且以3 種不同邊緣偵測法,將選取的影. 像值輸入演算法分析,分別得到輸入影像的邊緣結果及其 ...
- 2關於影像辨識,所有你應該知道的深度學習模型 - Medium
- 3其實我都是照著課本作影像辨識的- 鄉下老師- udn部落格
雖然細節的技術關鍵很多,但是我最想分享告訴初學者的是:萬丈高樓平地起,我的主要辨識流程其實跟課本寫的完全一樣!相信某些工具或特殊演算法必有 ...
- 4AI 紙本資料辨識之經驗分享- Shu-Yu Huang - 台灣人工智慧學校
A.2.2. Table-OCR影像分割. 基於框線的特性,透過影像分割演算法將原本的標籤中有框線的部分一條一條偵測出來,接著 ...
- 5介紹影像辨識的處理流程- Day 10 - iT 邦幫忙