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的效果對比:
代碼演示
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)行效果
圖像測試
視頻測試
論文與源碼
源碼與預(yù)訓(xùn)練模型
https://github.com/s9xie/hed
論文地址:
https://arxiv.org/abs/1504.06375
審核編輯 :李倩
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4814瀏覽量
103604 -
算法
+關(guān)注
關(guān)注
23文章
4710瀏覽量
95378 -
檢測算法
+關(guān)注
關(guān)注
0文章
122瀏覽量
25498
原文標(biāo)題:OpenCV4 調(diào)用HED邊緣檢測算法
文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基于FPGA實(shí)現(xiàn)FOC算法之PWM模塊設(shè)計(jì)

黑芝麻智能視覺與4D毫米波雷達(dá)前融合算法介紹

FOC 算法實(shí)現(xiàn)永磁同步電機(jī)調(diào)整指南
PID控制算法的C語言實(shí)現(xiàn):PID算法原理
什么是BP神經(jīng)網(wǎng)絡(luò)的反向傳播算法
算法加速的概念、意義、流程和應(yīng)用
常見的lvs負(fù)載均衡算法
?ISP算法及架構(gòu)分析介紹

【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+內(nèi)容簡介
【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+介紹基礎(chǔ)硬件算法模塊
【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+第九章sigma delta adc閱讀與分享
【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+一本介紹基礎(chǔ)硬件算法模塊實(shí)現(xiàn)的好書
激光雷達(dá)在SLAM算法中的應(yīng)用綜述

PID算法的基本原理介紹
時(shí)間復(fù)雜度為 O(n^2) 的排序算法

評論