在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenCV使用深度學(xué)習(xí)做邊緣檢測的流程

新機(jī)器視覺 ? 來源:AI算法與圖像處理 ? 作者:AI算法與圖像處理 ? 2021-05-08 11:05 ? 次閱讀

導(dǎo)讀

分析了Canny的優(yōu)劣,并給出了OpenCV使用深度學(xué)習(xí)做邊緣檢測的流程。

在這篇文章中,我們將學(xué)習(xí)如何在OpenCV中使用基于深度學(xué)習(xí)的邊緣檢測,它比目前流行的canny邊緣檢測器更精確。邊緣檢測在許多用例中是有用的,如視覺顯著性檢測,目標(biāo)檢測,跟蹤和運(yùn)動(dòng)分析,結(jié)構(gòu)從運(yùn)動(dòng),3D重建,自動(dòng)駕駛,圖像到文本分析等等。

什么是邊緣檢測?

邊緣檢測是計(jì)算機(jī)視覺中一個(gè)非常古老的問題,它涉及到檢測圖像中的邊緣來確定目標(biāo)的邊界,從而分離感興趣的目標(biāo)。最流行的邊緣檢測技術(shù)之一是Canny邊緣檢測,它已經(jīng)成為大多數(shù)計(jì)算機(jī)視覺研究人員和實(shí)踐者的首選方法。讓我們快速看一下Canny邊緣檢測。

Canny邊緣檢測算法

1983年,John Canny在麻省理工學(xué)院發(fā)明了Canny邊緣檢測。它將邊緣檢測視為一個(gè)信號處理問題。其核心思想是,如果你觀察圖像中每個(gè)像素的強(qiáng)度變化,它在邊緣的時(shí)候非常高。

在下面這張簡單的圖片中,強(qiáng)度變化只發(fā)生在邊界上。所以,你可以很容易地通過觀察像素強(qiáng)度的變化來識別邊緣。

現(xiàn)在,看下這張圖片。強(qiáng)度不是恒定的,但強(qiáng)度的變化率在邊緣處最高。(微積分復(fù)習(xí):變化率可以用一階導(dǎo)數(shù)(梯度)來計(jì)算。)

Canny邊緣檢測器通過4步來識別邊緣:

去噪:因?yàn)檫@種方法依賴于強(qiáng)度的突然變化,如果圖像有很多隨機(jī)噪聲,那么會將噪聲作為邊緣。所以,使用5×5的高斯濾波器平滑你的圖像是一個(gè)非常好的主意。

梯度計(jì)算:下一步,我們計(jì)算圖像中每個(gè)像素的強(qiáng)度的梯度(強(qiáng)度變化率)。我們也計(jì)算梯度的方向。

d1e241c6-aef2-11eb-bf61-12bb97331649.png

梯度方向垂直于邊緣,它被映射到四個(gè)方向中的一個(gè)(水平、垂直和兩個(gè)對角線方向)。

非極大值抑制:現(xiàn)在,我們想刪除不是邊緣的像素(設(shè)置它們的值為0)。你可能會說,我們可以簡單地選取梯度值最高的像素,這些就是我們的邊。然而,在真實(shí)的圖像中,梯度不是簡單地在只一個(gè)像素處達(dá)到峰值,而是在臨近邊緣的像素處都非常高。因此我們在梯度方向上取3×3附近的局部最大值。

d206e58a-aef2-11eb-bf61-12bb97331649.png

遲滯閾值化:在下一步中,我們需要決定一個(gè)梯度的閾值,低于這個(gè)閾值所有的像素都將被抑制(設(shè)置為0)。而Canny邊緣檢測器則采用遲滯閾值法。遲滯閾值法是一種非常簡單而有效的方法。我們使用兩個(gè)閾值來代替只用一個(gè)閾值:

高閾值 = 選擇一個(gè)非常高的值,這樣任何梯度值高于這個(gè)值的像素都肯定是一個(gè)邊緣。

低閾值 = 選擇一個(gè)非常低的值,任何梯度值低于該值的像素絕對不是邊緣。

在這兩個(gè)閾值之間有梯度的像素會被檢查,如果它們和邊緣相連,就會留下,否則就會去掉。

遲滯閾值化

Canny 邊緣檢測的問題:

由于Canny邊緣檢測器只關(guān)注局部變化,沒有語義(理解圖像的內(nèi)容)理解,精度有限(很多時(shí)候是這樣)。

Canny邊緣檢測器在這種情況下會失敗,因?yàn)闆]有理解圖像的上下文

語義理解對于邊緣檢測是至關(guān)重要的,這就是為什么使用機(jī)器學(xué)習(xí)或深度學(xué)習(xí)的基于學(xué)習(xí)的檢測器比canny邊緣檢測器產(chǎn)生更好的結(jié)果。

OpenCV中基于深度學(xué)習(xí)的邊緣檢測

OpenCV在其全新的DNN模塊中集成了基于深度學(xué)習(xí)的邊緣檢測技術(shù)。你需要OpenCV 3.4.3或更高版本。這種技術(shù)被稱為整體嵌套邊緣檢測或HED,是一種基于學(xué)習(xí)的端到端邊緣檢測系統(tǒng),使用修剪過的類似vgg的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像到圖像的預(yù)測任務(wù)。

HED利用了中間層的輸出。之前的層的輸出稱為side output,將所有5個(gè)卷積層的輸出進(jìn)行融合,生成最終的預(yù)測。由于在每一層生成的特征圖大小不同,它可以有效地以不同的尺度查看圖像。

網(wǎng)絡(luò)結(jié)構(gòu):整體嵌套邊緣檢測

HED方法不僅比其他基于深度學(xué)習(xí)的方法更準(zhǔn)確,而且速度也比其他方法快得多。這就是為什么OpenCV決定將其集成到新的DNN模塊中。以下是這篇論文的結(jié)果:

d3af918e-aef2-11eb-bf61-12bb97331649.png

在OpenCV中訓(xùn)練深度學(xué)習(xí)邊緣檢測的代碼

OpenCV使用的預(yù)訓(xùn)練模型已經(jīng)在Caffe框架中訓(xùn)練過了,可以這樣加載:

sh download_pretrained.sh

網(wǎng)絡(luò)中有一個(gè)crop層,默認(rèn)是沒有實(shí)現(xiàn)的,所以我們需要自己實(shí)現(xiàn)一下。

class CropLayer(object):

def __init__(self, params, blobs):

self.xstart = 0

self.xend = 0

self.ystart = 0

self.yend = 0

# Our layer receives two inputs. We need to crop the first input blob

# to match a shape of the second one (keeping batch size and number of channels)

def getMemoryShapes(self, inputs):

inputShape, targetShape = inputs[0], inputs[1]

batchSize, numChannels = inputShape[0], inputShape[1]

height, width = targetShape[2], targetShape[3]

self.ystart = (inputShape[2] - targetShape[2]) // 2

self.xstart = (inputShape[3] - targetShape[3]) // 2

self.yend = self.ystart + height

self.xend = self.xstart + width

return [[batchSize, numChannels, height, width]]

def forward(self, inputs):

return [inputs[0][:,:,self.ystart:self.yend,self.xstart:self.xend]]

現(xiàn)在,我們可以重載這個(gè)類,只需用一行代碼注冊該層。

cv.dnn_registerLayer(‘Crop’, CropLayer)

現(xiàn)在,我們準(zhǔn)備構(gòu)建網(wǎng)絡(luò)圖并加載權(quán)重,這可以通過OpenCV的dnn.readNe函數(shù)。

net = cv.dnn.readNet(args.prototxt, args.caffemodel)

現(xiàn)在,下一步是批量加載圖像,并通過網(wǎng)絡(luò)運(yùn)行它們。為此,我們使用cv2.dnn.blobFromImage方法。該方法從輸入圖像中創(chuàng)建四維blob。

blob = cv.dnn.blobFromImage(image, scalefactor, size, mean, swapRB, crop)

其中:

image:是我們想要發(fā)送給神經(jīng)網(wǎng)絡(luò)進(jìn)行推理的輸入圖像。

scalefactor:圖像縮放常數(shù),很多時(shí)候我們需要把uint8的圖像除以255,這樣所有的像素都在0到1之間。默認(rèn)值是1.0,不縮放。

size:輸出圖像的空間大小。它將等于后續(xù)神經(jīng)網(wǎng)絡(luò)作為blobFromImage輸出所需的輸入大小。

swapRB:布爾值,表示我們是否想在3通道圖像中交換第一個(gè)和最后一個(gè)通道。OpenCV默認(rèn)圖像為BGR格式,但如果我們想將此順序轉(zhuǎn)換為RGB,我們可以將此標(biāo)志設(shè)置為True,這也是默認(rèn)值。

mean:為了進(jìn)行歸一化,有時(shí)我們計(jì)算訓(xùn)練數(shù)據(jù)集上的平均像素值,并在訓(xùn)練過程中從每幅圖像中減去它。如果我們在訓(xùn)練中做均值減法,那么我們必須在推理中應(yīng)用它。這個(gè)平均值是一個(gè)對應(yīng)于R, G, B通道的元組。例如Imagenet數(shù)據(jù)集的均值是R=103.93, G=116.77, B=123.68。如果我們使用swapRB=False,那么這個(gè)順序?qū)⑹牵˙, G, R)。

crop:布爾標(biāo)志,表示我們是否想居中裁剪圖像。如果設(shè)置為True,則從中心裁剪輸入圖像時(shí),較小的尺寸等于相應(yīng)的尺寸,而其他尺寸等于或大于該尺寸。然而,如果我們將其設(shè)置為False,它將保留長寬比,只是將其調(diào)整為固定尺寸大小。

在我們這個(gè)場景下:

inp = cv.dnn.blobFromImage(frame, scalefactor=1.0, size=(args.width, args.height),

mean=(104.00698793, 116.66876762, 122.67891434), swapRB=False,

crop=False)

現(xiàn)在,我們只需要調(diào)用一下前向方法。

net.setInput(inp)

out = net.forward()

out = out[0, 0]

out = cv.resize(out, (frame.shape[1], frame.shape[0]))

out = 255 * out

out = out.astype(np.uint8)

out=cv.cvtColor(out,cv.COLOR_GRAY2BGR)

con=np.concatenate((frame,out),axis=1)

cv.imshow(kWinName,con)

原文標(biāo)題:在OpenCV中基于深度學(xué)習(xí)的邊緣檢測

文章出處:【微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • OpenCV
    +關(guān)注

    關(guān)注

    32

    文章

    642

    瀏覽量

    42446
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5554

    瀏覽量

    122494

原文標(biāo)題:在OpenCV中基于深度學(xué)習(xí)的邊緣檢測

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    行業(yè)首創(chuàng):基于深度學(xué)習(xí)視覺平臺的AI驅(qū)動(dòng)輪胎檢測自動(dòng)化

    全球領(lǐng)先的輪胎制造商 NEXEN TIRE 在其輪胎生產(chǎn)檢測過程中使用了基于友思特伙伴Neurocle開發(fā)的AI深度學(xué)習(xí)視覺平臺,實(shí)現(xiàn)缺陷檢測率高達(dá)99.96%,是該行業(yè)首個(gè)使用AI平
    的頭像 發(fā)表于 03-19 16:51 ?357次閱讀
    行業(yè)首創(chuàng):基于<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>視覺平臺的AI驅(qū)動(dòng)輪胎<b class='flag-5'>檢測</b>自動(dòng)化

    邊緣學(xué)習(xí):降本增效,開啟物流新未來

    在當(dāng)今數(shù)字化浪潮下,物流行業(yè)正經(jīng)歷著深刻變革。邊緣學(xué)習(xí)作為一項(xiàng)基于AI的創(chuàng)新技術(shù),已在物流領(lǐng)域嶄露頭角。它不僅能幫助物流企業(yè)應(yīng)對突發(fā)公共衛(wèi)生事件帶來的挑戰(zhàn),還在包裹檢測、分類和流程問題
    的頭像 發(fā)表于 12-20 09:07 ?342次閱讀

    AI模型部署邊緣設(shè)備的奇妙之旅:目標(biāo)檢測模型

    1、簡介 人工智能圖像識別是人工智能領(lǐng)域的一個(gè)重要分支,它涉及計(jì)算機(jī)視覺、深度學(xué)習(xí)、機(jī)器學(xué)習(xí)等多個(gè)領(lǐng)域的知識和技術(shù)。圖像識別主要是處理具有一定復(fù)雜性的信息。計(jì)算機(jī)采用與人類類似的圖像識別原理,即對
    發(fā)表于 12-19 14:33

    AI模型部署邊緣設(shè)備的奇妙之旅:如何在邊緣端部署OpenCV

    、車輛和其他重要元素。 2 基礎(chǔ)知識 OpenCV 是一個(gè)開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,廣泛用于圖像處理、視頻捕捉、物體檢測等領(lǐng)域。一些常用操作及其目的: 讀取圖片 使用 cv2.imread
    發(fā)表于 12-14 09:31

    AI模型部署邊緣設(shè)備的奇妙之旅:如何在邊緣端部署OpenCV

    力的研究工具。在深度學(xué)習(xí)中,我們會經(jīng)常接觸到兩個(gè)名稱,圖像處理和計(jì)算機(jī)視覺,它們之間有什么區(qū)別呢?圖像處理(ImageProcessing)目的:圖像處理主要集中在
    的頭像 發(fā)表于 12-14 09:10 ?807次閱讀
    AI模型部署<b class='flag-5'>邊緣</b>設(shè)備的奇妙之旅:如何在<b class='flag-5'>邊緣</b>端部署<b class='flag-5'>OpenCV</b>

    如何用OpenCV的相機(jī)捕捉視頻進(jìn)行人臉檢測--基于米爾NXP i.MX93開發(fā)板

    的是Haar特征人臉檢測,此外OpenCV中還集成了深度學(xué)習(xí)方法來實(shí)現(xiàn)人臉檢測。 【參考資料】 使用O
    發(fā)表于 11-15 17:58

    FPGA深度學(xué)習(xí)能走多遠(yuǎn)?

    ,共同進(jìn)步。 歡迎加入FPGA技術(shù)微信交流群14群! 交流問題(一) Q:FPGA深度學(xué)習(xí)能走多遠(yuǎn)?現(xiàn)在用FPGA深度
    發(fā)表于 09-27 20:53

    DSP國產(chǎn)教學(xué)實(shí)驗(yàn)箱_實(shí)驗(yàn)案例_操作教程:5-11 邊緣檢測

    一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)Canny邊緣檢測的原理,掌握圖像的讀取方法,并實(shí)現(xiàn)邊緣檢測。 二、實(shí)驗(yàn)原理 邊緣
    發(fā)表于 07-19 10:38

    圖像邊緣檢測系統(tǒng)的設(shè)計(jì)流程

    圖像邊緣檢測系統(tǒng)的設(shè)計(jì)流程是一個(gè)涉及多個(gè)步驟的復(fù)雜過程,它旨在從圖像中提取出重要的結(jié)構(gòu)信息,如邊界、輪廓等。這些邊緣信息對于圖像分析、機(jī)器視覺、圖像壓縮等領(lǐng)域至關(guān)重要。以下是一個(gè)詳細(xì)的
    的頭像 發(fā)表于 07-17 16:39 ?650次閱讀

    opencv圖像識別有什么算法

    OpenCV(Open Source Computer Vision Library)是一個(gè)開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,提供了大量的圖像處理和計(jì)算機(jī)視覺相關(guān)的算法。以下是一些常見的OpenCV
    的頭像 發(fā)表于 07-16 10:40 ?1764次閱讀

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個(gè)開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV
    的頭像 發(fā)表于 07-16 10:38 ?1936次閱讀

    opencv的主要功能有哪些

    OpenCV提供了豐富的圖像處理功能,包括圖像的讀取、顯示、保存、轉(zhuǎn)換等。此外,OpenCV還支持圖像的濾波、邊緣檢測、形態(tài)學(xué)操作、圖像金字塔等高級圖像處理技術(shù)。 特征
    的頭像 發(fā)表于 07-16 10:35 ?2609次閱讀

    深度學(xué)習(xí)在工業(yè)機(jī)器視覺檢測中的應(yīng)用

    隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,其在工業(yè)機(jī)器視覺檢測中的應(yīng)用日益廣泛,并展現(xiàn)出巨大的潛力。工業(yè)機(jī)器視覺檢測是工業(yè)自動(dòng)化領(lǐng)域的重要組成部分,通過圖像處理和計(jì)算機(jī)視覺技術(shù),實(shí)現(xiàn)對產(chǎn)品表面缺陷、
    的頭像 發(fā)表于 07-08 10:40 ?1781次閱讀

    基于AI深度學(xué)習(xí)的缺陷檢測系統(tǒng)

    在工業(yè)生產(chǎn)中,缺陷檢測是確保產(chǎn)品質(zhì)量的關(guān)鍵環(huán)節(jié)。傳統(tǒng)的人工檢測方法不僅效率低下,且易受人為因素影響,導(dǎo)致誤檢和漏檢問題頻發(fā)。隨著人工智能技術(shù)的飛速發(fā)展,特別是深度學(xué)習(xí)技術(shù)的崛起,基于A
    的頭像 發(fā)表于 07-08 10:30 ?2347次閱讀

    基于深度學(xué)習(xí)的小目標(biāo)檢測

    在計(jì)算機(jī)視覺領(lǐng)域,目標(biāo)檢測一直是研究的熱點(diǎn)和難點(diǎn)之一。特別是在小目標(biāo)檢測方面,由于小目標(biāo)在圖像中所占比例小、特征不明顯,使得檢測難度顯著增加。隨著深度
    的頭像 發(fā)表于 07-04 17:25 ?1904次閱讀
    主站蜘蛛池模板: 久久精品视频国产 | 美女视频永久黄网站在线观看 | 亚洲欧美在线精品一区二区 | 很色视频| 久久久久免费观看 | 午夜天堂影院 | 天堂电影在线 | 天天爱夜夜 | 欧美一区二区高清 | 黄色网一级片 | 黄视频免费观看 | 国产成人mv在线观看入口视频 | 免费的毛片网站 | 性欧美视频videos6一9 | 女人精69xxxxxx | 狠狠五月深爱婷婷网 | 国产高清视频在线免费观看 | 求网址你懂的手机在线观看网站 | 国产亚洲欧美日本一二三本道 | 久久综合香蕉久久久久久久 | 免费看三级黄色片 | 丁香五月欧美成人 | 欧美色图亚洲综合 | 欧美三级色图 | 久久六月丁香婷婷婷 | 欧美一级片手机在线观看 | 国产福利vr专区精品 | 嫩草影院网站入口 | 成人永久免费视频网站在线观看 | 亚洲人成影院在线高清 | 精品国内一区二区三区免费视频 | 性毛片 | 俺去插 | 亚洲 自拍 欧美 综合 | 天天干天天在线 | 国产精品漂亮美女在线观看 | 久久久久久久国产免费看 | 欧美视频精品一区二区三区 | 天堂社区在线视频 | 特黄特色的视频免费播放 | 两性色午夜视频免费网 |