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


代碼演示
OpenCV DNN本身是不支持該網絡直接加載與執行的,必須通過OpenCV4中支持的自定義層方法,首先解析HED網絡的自定義多層輸出,然后重載它的forward方法之后,才可以正確執行。
自定義層解析的代碼如下:
#自定義層
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]]
加載網絡,進行多全層次的邊緣檢測:
#自定義層
#注冊自定義層
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)
運行效果
圖像測試

視頻測試

論文與源碼
源碼與預訓練模型
https://github.com/s9xie/hed
論文地址:
https://arxiv.org/abs/1504.06375
審核編輯 :李倩
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
神經網絡
+關注
關注
42文章
4838瀏覽量
107778 -
算法
+關注
關注
23文章
4784瀏覽量
98060 -
檢測算法
+關注
關注
0文章
122瀏覽量
25757
原文標題:OpenCV4 調用HED邊緣檢測算法
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
小華半導體數字電源算法配置工具DPACT介紹
小華半導體數字電源算法配置工具(DPACT)是一款基于公司豐富參考設計方案,專為電力電子控制算法開發而設計的圖形化開發工具。該工具深度集成XHCODE底層配置環境,支持用戶以圖形化方式,快速在現有
請問CW32F030的采樣算法能移植到別的品牌MCU之中嗎?
我看官方介紹說通過創新的軟硬件過采樣算法,實現較高的 ADC 測量精度,相較競品提高約 1 位有效值。這個算法是在固件庫之中是么?是可以移植到其他品牌MCU之中嗎?可以讓其提高一些精度嗎?
發表于 01-19 08:14
用于單片機幾種C語言算法
平均值中所占的比重。加權平均值濾波法可突出一部分信號抵制另一部分信號,以提高采樣值變化的靈敏度。樣例程序代碼如下:
滑動平均濾波算法
以上介紹和各種平均濾波算法有一個共同點,即每獲取一個有效采樣值
發表于 11-27 06:00
SM4算法實現分享(一)算法原理
SM4分組加密算法采用的是非線性迭代結構,以字為單位進行加密、解密運算,每次迭代稱為一輪變換,每輪變換包括S盒變換、非線性變換、線性變換、合成變換。加解密算法與密鑰擴展都是采用32輪非線性迭代結構
發表于 10-30 08:10
Camellia算法的實現(基于開源蜂鳥E203協處理器)
硬件加速器的效果。
Camellia算法的介紹
Camellia 算法由 NTT 公司和 Mitsubishi 電子公司與 2000 年聯合開發,是一種Feistel 結構的分組密碼(分組長度為
發表于 10-30 07:04
SM4算法原理及分享1
SM4算法是一種分組密碼算法。其分組長度為128bit,密鑰長度也為128bit。加密算法與密鑰擴展算法均采用32輪非線性迭代結構,以字(32位)為單位進行加密運算,每一次迭代運算均
發表于 10-30 06:54
AES加解密算法邏輯實現及其在蜂鳥E203SoC上的應用介紹
這次分享我們會簡要介紹AES加解密算法的邏輯實現,以及如何將AES算法做成硬件協處理器集成在蜂鳥E203 SoC上。
AES算法介紹
AE
發表于 10-29 07:29
國密系列算法簡介及SM4算法原理介紹
保證,而國產密碼算法實現了密碼算法的自主可控,對于保障我國的國家安全具有重要意義。目前,我國大力推廣國密算法的應用,并涌現出一系列國家商用密碼應用的優秀案例。
本文將對SM4算法的原理
發表于 10-24 08:25
加密算法的應用
加密是一種保護信息安全的重要手段,近年來隨著信息技術的發展,加密技術的應用越來越廣泛。本文將介紹加密算法的發展、含義、分類及應用場景。
1. 加密算法的發展
加密算法的歷史可以追
發表于 10-24 08:03
Montgomery模乘介紹
Montgomery模乘介紹
Montgomery 模乘算法是最有效的大整數模乘算法之一它的一個顯著特點是消除了mod n 的除法運算。Montgomery 算法的基本思想是計算 ,設
發表于 10-22 07:35
德州儀器Dynamic Z-Track算法的特性和優勢
本應用手冊介紹了德州儀器 (TI) 電池電量監測算法的簡短歷史,說明了負載電流頻繁、快速變化時電池電量監測計運行時的挑戰,并詳細介紹了應用于動態負載電流應用的 Dynamic Z-Track (IT-DZT)
DFT算法與FFT算法的優劣分析
算法之間有什么不同,采用相關算法的依據。下面就來介紹一下兩種算法的不同以及適用的一些場合。 DFT算法,是連續傅里葉變換在時域和頻域上都離散
昂科燒錄器支持HED華大電子的超低功耗微控制器CIU32L051R8T
昂科技術作為芯片燒錄領域的領導者,在其新版燒錄軟件發布之際,宣布擴展了兼容芯片型號列表。新增型號包含了HED華大電子的超低功耗微控制器CIU32L051R8T。目前,該芯片已獲得昂科通用燒錄平臺AP8000的支持。
基于FPGA實現FOC算法之PWM模塊設計
哈嘍,大家好,從今天開始正式帶領大家從零到一,在FPGA平臺上實現FOC算法,整個算法的框架如下圖所示,如果大家對算法的原理不是特別清楚的話,可以先去百度上學習一下,本教程著重介紹實現
HED算法介紹
評論