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

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

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

HED算法介紹

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 作者:OpenCV學(xué)堂 ? 2022-07-28 10:10 ? 次閱讀

HED算法介紹

圖像邊緣檢測是圖像處理與計(jì)算機(jī)視覺領(lǐng)域最基礎(chǔ)也是最重要的任務(wù)之一,早期的Canny邊緣檢測到現(xiàn)在還在使用,但是Canny邊緣檢測過于依賴人工閾值的設(shè)定,無法在通用場景下工作,如何找到一個(gè)在自然場景下可以正確工作的邊緣檢測器,答案是使用CNN。2015年的時(shí)候有人提出了基于卷積神經(jīng)網(wǎng)絡(luò)的邊緣檢測算法HED全稱為《Holistically-Nested Edge Detection》, 先看一下HED與Canny的效果對比:

4d337462-0dbb-11ed-ba43-dac502259ad0.jpg

作者提出HED算法是受到了全卷積網(wǎng)絡(luò)與深度監(jiān)督網(wǎng)絡(luò)的啟發(fā)與影響,作者以VGGNet與FCN作為基礎(chǔ)網(wǎng)絡(luò)進(jìn)行改進(jìn),對VGG網(wǎng)絡(luò)進(jìn)行conv1_2, conv2_2, conv3_3, conv4_3, conv5_3多個(gè)特征層的輸出,借助FCN全卷積網(wǎng)絡(luò)的設(shè)計(jì),通過權(quán)重融合層實(shí)現(xiàn)各個(gè)層相連接,去掉了VGG網(wǎng)絡(luò)的后半部分,大大減少了網(wǎng)絡(luò)浮點(diǎn)數(shù)計(jì)算次數(shù),網(wǎng)絡(luò)架構(gòu)示意圖如下:

4d4e30cc-0dbb-11ed-ba43-dac502259ad0.jpg

代碼演示

OpenCV DNN本身是不支持該網(wǎng)絡(luò)直接加載與執(zhí)行的,必須通過OpenCV4中支持的自定義層方法,首先解析HED網(wǎng)絡(luò)的自定義多層輸出,然后重載它的forward方法之后,才可以正確執(zhí)行。

自定義層解析的代碼如下:

#自定義層
classCropLayer(object):
def__init__(self,params,blobs):
self.xstart=0
self.xend=0
self.ystart=0
self.yend=0

defgetMemoryShapes(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]]

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

加載網(wǎng)絡(luò),進(jìn)行多全層次的邊緣檢測:

#自定義層
#注冊自定義層
cv.dnn_registerLayer('Crop',CropLayer)

#Loadthemodel.
net=cv.dnn.readNet("D:/projects/models/hed/deploy.prototxt","D:/projects/models/hed/hed_pretrained_bsds.caffemodel")

kWinName='Holistically-NestedEdgeDetection'
cv.namedWindow('Input',cv.WINDOW_AUTOSIZE)
cv.namedWindow(kWinName,cv.WINDOW_AUTOSIZE)

cap=cv.VideoCapture(0)
whilecv.waitKey(1)0:
hasFrame,frame=cap.read()
frame=cv.flip(frame,1)
ifnothasFrame:
cv.waitKey()
break
cv.imshow('Input',frame)

inp=cv.dnn.blobFromImage(frame,scalefactor=1.0,size=(500,500),
mean=(104.00698793,116.66876762,122.67891434),
swapRB=False,crop=False)
net.setInput(inp)
out=net.forward()
out=out[0,0]
out=cv.resize(out,(frame.shape[1],frame.shape[0]))
cv.imshow(kWinName,out)

運(yùn)行效果

圖像測試

4d652318-0dbb-11ed-ba43-dac502259ad0.jpg

視頻測試

4d74f270-0dbb-11ed-ba43-dac502259ad0.jpg

論文與源碼

源碼與預(yù)訓(xùn)練模型
https://github.com/s9xie/hed
論文地址:
https://arxiv.org/abs/1504.06375

審核編輯 :李倩


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

    關(guān)注

    42

    文章

    4771

    瀏覽量

    100772
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4612

    瀏覽量

    92901
  • 檢測算法
    +關(guān)注

    關(guān)注

    0

    文章

    119

    瀏覽量

    25220

原文標(biāo)題:OpenCV4 調(diào)用HED邊緣檢測算法

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    ?ISP算法及架構(gòu)分析介紹

    一、ISP算法及架構(gòu)分析介紹 ISP即Image Signal Processor,是一種圖像處理架構(gòu),不是我們用的下載器。 ISP其實(shí)算是圖像處理的一個(gè)特例,一般應(yīng)用于前端設(shè)備(相對于SENSOR
    的頭像 發(fā)表于 11-26 10:05 ?397次閱讀
    ?ISP<b class='flag-5'>算法</b>及架構(gòu)分析<b class='flag-5'>介紹</b>

    【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+內(nèi)容簡介

    的Matlab建模和RTL設(shè)計(jì),可幫助數(shù)字IC設(shè)計(jì)者掌握常用算法設(shè)計(jì)思路、工具和流程,從根本上提高設(shè)計(jì)基本算法電路和復(fù)雜算法電路的能力。本書共分為12章。第1~2章介紹
    發(fā)表于 11-21 17:14

    【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+介紹基礎(chǔ)硬件算法模塊

    作為嵌入式開發(fā)者往往比較關(guān)注硬件和軟件的協(xié)調(diào)。本書介紹了除法器,信號發(fā)生器,濾波器,分頻器等基本算法的電路實(shí)現(xiàn),雖然都是基礎(chǔ)內(nèi)容,但是也是最常用到的基本模塊。 隨著逆全球化趨勢的出現(xiàn),過去的研發(fā)
    發(fā)表于 11-21 17:05

    【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+第九章sigma delta adc閱讀與分享

    sigma-deleta ADC https://mp.weixin.qq.com/s/0grIIVJGTnXQQy5_ahN3SQPDM系列文章之三:sigma-deleta思想應(yīng)用實(shí)踐之降幀率算法 本文后面還介紹
    發(fā)表于 11-20 13:58

    【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+一本介紹基礎(chǔ)硬件算法模塊實(shí)現(xiàn)的好書

    作為嵌入式開發(fā)者往往比較關(guān)注硬件和軟件的協(xié)調(diào)。本書介紹了除法器,信號發(fā)生器,濾波器,分頻器等基本算法的電路實(shí)現(xiàn),雖然都是基礎(chǔ)內(nèi)容,但是也是最常用到的基本模塊,本書的內(nèi)容比較對本人胃口。 我們先來
    發(fā)表于 11-20 13:42

    激光雷達(dá)在SLAM算法中的應(yīng)用綜述

    SLAM算法運(yùn)行的重要傳感器?;诩す饫走_(dá)的SLAM算法,對激光雷達(dá)SLAM總體框架進(jìn)行介紹,詳細(xì)闡述前端里程計(jì)、后端優(yōu)化、回環(huán)檢測、地圖構(gòu)建模塊的作用并總結(jié)所使用的算法;按由2D到
    的頭像 發(fā)表于 11-12 10:30 ?585次閱讀
    激光雷達(dá)在SLAM<b class='flag-5'>算法</b>中的應(yīng)用綜述

    時(shí)間復(fù)雜度為 O(n^2) 的排序算法

    , O(n2) 的排序算法可能會比 O(nlogn) 的排序算法執(zhí)行效率高。不過隨著數(shù)據(jù)規(guī)模增大, O(nlogn) 的排序算法是不二選擇。本篇我們主要對 O(n2) 的排序算法進(jìn)行
    的頭像 發(fā)表于 10-19 16:31 ?1160次閱讀
    時(shí)間復(fù)雜度為 O(n^2) 的排序<b class='flag-5'>算法</b>

    圖像識別算法都有哪些方法

    圖像識別算法是計(jì)算機(jī)視覺領(lǐng)域的核心任務(wù)之一,它涉及到從圖像中提取特征并進(jìn)行分類、識別和分析的過程。隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,圖像識別算法已經(jīng)取得了顯著的進(jìn)展。本文將介紹圖像識別算法
    的頭像 發(fā)表于 07-16 11:14 ?5584次閱讀

    bp神經(jīng)網(wǎng)絡(luò)算法的基本流程包括哪些

    BP神經(jīng)網(wǎng)絡(luò)算法,即反向傳播神經(jīng)網(wǎng)絡(luò)算法,是一種常用的多層前饋神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法。它通過反向傳播誤差來調(diào)整網(wǎng)絡(luò)的權(quán)重和偏置,從而實(shí)現(xiàn)對輸入數(shù)據(jù)的分類或回歸。下面詳細(xì)介紹BP神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-04 09:47 ?647次閱讀

    BLDC電機(jī)控制算法詳解

    算法。本文將詳細(xì)介紹BLDC電機(jī)的控制算法,包括電速算法、電流環(huán)控制算法、磁場導(dǎo)向控制算法等,并
    的頭像 發(fā)表于 06-14 10:49 ?1059次閱讀

    常用的電機(jī)控制算法有哪些

    在電機(jī)控制領(lǐng)域,選擇合適的控制算法對于實(shí)現(xiàn)高效、精確且穩(wěn)定的電機(jī)運(yùn)行至關(guān)重要。以下將詳細(xì)介紹幾種常用的電機(jī)控制算法,并通過具體的分析和實(shí)例,探討它們的特點(diǎn)、應(yīng)用以及優(yōu)勢。
    的頭像 發(fā)表于 06-05 16:31 ?2353次閱讀

    計(jì)算機(jī)視覺的十大算法

    隨著科技的不斷發(fā)展,計(jì)算機(jī)視覺領(lǐng)域也取得了長足的進(jìn)步。本文將介紹計(jì)算機(jī)視覺領(lǐng)域的十大算法,包括它們的基本原理、應(yīng)用場景和優(yōu)缺點(diǎn)。這些算法在圖像處理、目標(biāo)檢測、人臉識別等領(lǐng)域有著廣泛的應(yīng)用,對計(jì)算機(jī)
    的頭像 發(fā)表于 02-19 13:26 ?1242次閱讀
    計(jì)算機(jī)視覺的十大<b class='flag-5'>算法</b>

    AC電機(jī)控制算法是什么

    AC電機(jī)控制算法是一種用于控制交流電機(jī)運(yùn)行的技術(shù),它可以實(shí)現(xiàn)對電機(jī)的啟動、停止、速度調(diào)節(jié)和位置控制等功能。本文將對AC電機(jī)控制算法的原理、分類和應(yīng)用進(jìn)行詳細(xì)介紹。 一、AC電機(jī)控制算法
    的頭像 發(fā)表于 01-11 11:21 ?1088次閱讀
    AC電機(jī)控制<b class='flag-5'>算法</b>是什么

    FPGA圖像處理之CLAHE算法

    在FPGA圖像處理--CLAHE算法(一)中介紹了為啥要用CLAHE算法來做圖像增強(qiáng)。
    的頭像 發(fā)表于 01-04 12:23 ?2539次閱讀
    FPGA圖像處理之CLAHE<b class='flag-5'>算法</b>

    FPGA圖像處理-CLAHE算法介紹(一)

    介紹CLAHE算法之前必須要先提一下直方圖均衡化,直方圖均衡化算法是一種常見的圖像增強(qiáng)算法,可以讓像素的亮度分配的更加均勻從而獲得一個(gè)比較好的觀察效果。
    的頭像 發(fā)表于 01-02 13:32 ?1744次閱讀
    FPGA圖像處理-CLAHE<b class='flag-5'>算法</b><b class='flag-5'>介紹</b>(一)