色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

詳解ENet:CPU可以實時的道路分割網絡

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-15 00:18 ? 次閱讀

來源:OpenCV學堂
作者:gloomyfish

前言

OpenCV DNN模塊支持的圖像語義分割網絡FCN是基于VGG16作為基礎網絡,運行速度很慢,無法做到實時語義分割。2016年提出的ENet實時語義分割網絡基于編碼與解碼的網絡語義分割方式,類似UNet網絡,通過構建自定義Block塊,在Cityscapes, CamVid, SUN數據集上實現了性能與實時雙提高。

ENet網絡結構

作者從ResNet網絡結構設計中收到啟發,定義兩個新的Block結構,如下:

其中a是初始Block,非重疊2x2最大池化,左側卷積步長為2,然后13個filters之連接合并,該結構注意是收到了Inception改進模型的啟發。B是ENet的bottleneck模塊,其中卷積可能是正常卷積、空洞卷積、反卷積,使用3x3或者5x5的filters,最終合并在一起是按空間位置相加。兩個1x1的卷積分別用來降低維度與擴展,使用BN/Dropout正則化,PReLU非線性激活。最終的ENet網絡模型結構如下:

其中stage2跟stage3結構相同,stage4跟stage5屬于解碼部分。

設計考量

常見的深度學習語義分割模型在下采樣操作上的兩個缺點:一是降低Feature Map的分辨率會導致圖像空間信息損失,特別是圖像邊緣信息,這個對語義分割精度有明顯影響;二是像素級別的語義分割網絡要求輸入跟輸出的分辨率保持一致,這個就要求強的下采樣跟強的上采樣必須對稱,這個增加了模型的計算與參數量。其中第一個問題在FCN與SegNet網絡中通過在編碼階段疊加Feature Map與在解碼階段通過稀疏上采樣來抑制,但是強的下采樣依然對整個語義分割精度有傷害,要在設計時候適當的加以限制。

但是下采樣同樣可以幫助獲得較大的感受野,區分不同的類別,作者發現空洞卷積在這個方面特別有幫助,ENet為了獲得實時性能,采用了早期下采樣策略來降低計算SegNet跟UNet都是對稱的網絡結構,ENet采用大的編碼網絡,小的解碼網絡實現的不對稱結構,編碼網絡實現分類任務,解碼網絡主要是優化細節,更好的輸出結果。

此外作者在設計過程中還考慮了非線性激活、空洞卷積、正則化方式的影響。

OpenCV DNN使用ENet道路分割

OpenCV DNN模塊從OpenCV4.0版本開始支持ENet網絡模型加載與解析,其中的道路分割模型可以從下面的地址下載

https://github.com/e-lab/ENet-training

在OpenCV DNN使用該模型時轉換Blob輸入相關參數信息如下:

mean: [0, 0, 0]

scale: 0.00392

width: 512

height: 256

rgb: true

classes: "enet-classes.txt"

其中分類文件enet-classes.txt可以從OpenCV的sample/data/dnn中發現。輸出的數據格式為:Nx20xHxW,其中N=1表示每次輸入的一張圖像,20是基于Cityscapes數據集訓練的20個類別標簽,H跟W是輸入時圖像分辨率(512x256)。

最初版本代碼實現

該代碼實現是來自C++版本的翻譯,完整的演示代碼如下:

#loadCNNmodelbin_model="D:/projects/models/enet/model-best.net";net=cv.dnn.readNetFromTorch(bin_model)#readinputdataframe=cv.imread("D:/images/software.jpg");blob=cv.dnn.blobFromImage(frame,0.00392,(512,256),(0,0,0),True,False);cv.imshow("input",frame)#Runamodelnet.setInput(blob)score=net.forward()#Putefficiencyinformation.t,_=net.getPerfProfile()label='Inferencetime:%.2fms'%(t*1000.0/cv.getTickFrequency())print(score.shape)#generatecolortablecolor_lut=[]n,con,h,w=score.shapeforiinrange(con):b=np.random.randint(0,256)g=np.random.randint(0,256)r=np.random.randint(0,256)color_lut.append((b,g,r))maxCl=np.zeros((h,w),dtype=np.int32);maxVal=np.zeros((h,w),dtype=np.float32);#findmaxscorefor20channelsonpixel-wiseforiinrange(con):forrowinrange(h):forcolinrange(w):t=maxVal[row,col]s=score[0,i,row,col]ifs>t:maxVal[row,col]=smaxCl[row,col]=i#colorfulthesegmentationimagesegm=np.zeros((h,w,3),dtype=np.uint8)forrowinrange(h):forcolinrange(w):index=maxCl[row,col]segm[row,col]=color_lut[index]h,w=frame.shape[:2]segm=cv.resize(segm,(w,h),None,0,0,cv.INTER_NEAREST)print(segm.shape,frame.shape)frame=cv.addWeighted(frame,0.2,segm,0.8,0.0)cv.putText(frame,label,(0,15),cv.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0))cv.imshow("ENet-Demo",frame)cv.imwrite("D:/result.png",frame)cv.waitKey(0)cv.destroyAllWindows()

總的來說比較啰嗦!

修改后代碼熟實現

上面是我在2019年3月份時候在OpenCV研習社 的代碼分享,當時主要是把C++代碼直接翻譯過來,并沒有太多考慮,今天又重新看了一下感覺自己寫了點垃圾代碼,所以重新整理了一下,把輸出解析的部分基于Numpy跟OpenCV-Python函數做了簡化,最終得到的代碼如下:

 1#loadCNNmodel 2bin_model="D:/projects/models/enet/model-best.net"; 3net=cv.dnn.readNetFromTorch(bin_model) 4#readinputdata 5frame=cv.imread("D:/images/spacecity.png"); 6blob=cv.dnn.blobFromImage(frame,0.00392,(512,256),(0,0,0),True,False); 7cv.imshow("input",frame) 8h,w,c=frame.shape 910#Runamodel11net.setInput(blob)12score=net.forward()13#Putefficiencyinformation.14t,_=net.getPerfProfile()15label='Inferencetime:%.2fms'%(t*1000.0/cv.getTickFrequency())16score=np.squeeze(score)17score=score.transpose((1,2,0))18score=np.argmax(score,2)19mask=np.uint8(score)20mask=cv.cvtColor(mask,cv.COLOR_GRAY2BGR)21cv.normalize(mask,mask,0,255,cv.NORM_MINMAX)22cmask=cv.applyColorMap(mask,cv.COLORMAP_JET)23cmask=cv.resize(cmask,(w,h))24dst=cv.addWeighted(frame,0.7,cmask,0.3,0)25cv.putText(dst,label,(50,50),cv.FONT_HERSHEY_SIMPLEX,0.75,(0,0,255),2)26cv.imshow("dst",dst)27cv.waitKey(0)

總的執行時間也大大減少,主要去除了一些無謂的循環解析輸出數據部分。CPU上10+FPS 應該沒問題!實時get!

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10878

    瀏覽量

    212167
  • 人工智能
    +關注

    關注

    1792

    文章

    47409

    瀏覽量

    238923
收藏 人收藏

    評論

    相關推薦

    汽車導航軟件是如何知道道路實時擁堵情況的

    知道前方道路是否擁堵,屬于實況導航。實況導航必須在聯網條件下實現,導航軟件通過當地交通服務機構獲得道路實況,再通過導航界面顯示并報告給用戶。 道路實時情況來源有幾種: 1、早期的
    發表于 11-28 14:42

    Altium Designer 19用顏色區分內電層的各個分割區域的方法

    在進行多層板設計的時候,當PCB中的一個內電層上有多個分割區域的的時候,可以用不同的顏色區別,顯示清晰,方便識別分割區域的網絡。 其實就是通過改變其所屬的
    發表于 09-25 17:50

    C6748 ENET_ECHO例程燒寫到NOR后網絡起不來

    C6748 的CMD中區都是放在DDR2中,ENET_ECHO例程燒寫到NOR沒問題,網絡正常。發現運行速度慢,嘗試CMD修改放到RAM中運行,仿真器可以跑,但是燒寫到NOR后網絡都起
    發表于 09-26 08:29

    如何通過任務分割提高嵌入式系統的實時性?

    如何通過任務分割提高嵌入式系統的實時性?
    發表于 04-28 07:00

    iMX6UL核心板CPUENET1_TX_CLK信號是可以配置成50Mhz時鐘輸出嗎?

    iMX6UL核心板和開發板之間的以太網RMII接口,將CPUENET1_TX_CLK信號直接連到PHY芯片(KSZ8081RNB)的X1管腳了,此處未使用外部時鐘;我有個疑問,這里CPUE
    發表于 01-11 07:27

    你能確認ENET-AVB2對應ENET1控制器,ENET-AVB1對應ENET0控制器嗎?

    在IMX8X參考手冊IMX8DQXPRM中表2-5。連接內存映射給出以下映射:基址 5B05_0000 處的 ENET-AVB2基本地址 5B04_0000 處的 ENET-AVB1 你能確認ENET-AVB2對應
    發表于 04-07 07:47

    rt1052 ENET_ReadFrame返回kStatus_ENET_RxFrameFail,要做什么處理?

    我在使用rt1052時,調用ENET_ReadFrame,如果返回kStatus_ENET_RxFrameFail,需要做什么處理,其返回的代碼部分如下:/* 將幀存儲在多個緩沖區描述符上
    發表于 04-14 08:20

    ENET_RXBD_NUM值是否影響接收中斷響應?

    時間。但是當ENET_RXBD_NUM為4時,我發現網絡傳輸時間超過4ms,而ENET_RXBD_NUM為1時,網絡傳輸時間為200us。為什么差異如此之大?我沒有設置RXIC。問題一
    發表于 04-17 06:37

    通過任務分割提高嵌入式系統的實時

    分析長任務對嵌入式系統實時性的影響,在此基礎上提出任務分割是提高嵌入式系統實時性的一種有效途徑; 總結長任務分割的方法, 給出一個通過任務分割
    發表于 05-15 15:07 ?4次下載

    Facebook AI使用單一神經網絡架構來同時完成實例分割和語義分割

    這一新架構“全景 FPN ”在 Facebook 2017 年發布的 Mask R-CNN 的基礎上添加了一個用于語義分割的分支。這一新架構可以同時對圖像進行實例和語義分割,而且精確度與只進行實例或語義
    的頭像 發表于 04-22 11:46 ?2898次閱讀
    Facebook AI使用單一神經<b class='flag-5'>網絡</b>架構來同時完成實例<b class='flag-5'>分割</b>和語義<b class='flag-5'>分割</b>

    一文匯總當前主流的分割網絡

    本文的12篇文章總結了當前主流的分割網絡及其結構,涵蓋從編解碼結構到解碼器設計;從感受野到多尺度融合;從CNN到RNN與CRF;從2D分割到3D分割;從語義
    的頭像 發表于 06-29 09:21 ?7384次閱讀
    一文匯總當前主流的<b class='flag-5'>分割</b><b class='flag-5'>網絡</b>

    RGPNET:復雜環境下實時通用語義分割網絡

    本文介紹的論文提出了一種新的實時通用語義分割體系結構RGPNet,在復雜環境下取得了顯著的性能提升。作者: Tom Hardy首發:3D視覺工坊...
    的頭像 發表于 12-10 19:15 ?670次閱讀

    分析總結基于深度神經網絡的圖像語義分割方法

    隨著深度學習技術的快速發展及其在語義分割領域的廣泛應用,語義分割效果得到顯著提升。對基于深度神經網絡的圖像語義分割方法進行分析與總結,根據網絡
    發表于 03-19 14:14 ?21次下載
    分析總結基于深度神經<b class='flag-5'>網絡</b>的圖像語義<b class='flag-5'>分割</b>方法

    MELSEC iQ F FX5 ENET硬件手冊

    MELSEC iQ-F FX5-ENET 硬件手冊 產品規格書.FX5-ENET 型以太網模塊 ( 以下簡稱 FX5-ENET),是智能設備站與 CC-Link IE 現場網絡 Ba
    發表于 08-28 09:24 ?0次下載
    MELSEC iQ F FX5 <b class='flag-5'>ENET</b>硬件手冊

    MELSEC iQ F FX5 ENET/IP硬件手冊

    MELSEC iQ-F FX5-ENET/IP 硬件手冊 產品規格書.FX5-ENET/IP型以太網模塊 (以下簡稱 FX5-ENET/IP),是智能設備站與 EtherNet/IP網絡
    發表于 08-28 09:23 ?1次下載
    MELSEC iQ F FX5 <b class='flag-5'>ENET</b>/IP硬件手冊
    主站蜘蛛池模板: 吉吉影音先锋av资源| 日本伦子欲| 美女张开腿露出尿口扒开来摸动漫| 美女拔萝卜| 呻吟翘臀后进爆白浆| 亚洲欧美日韩人成| 99re久久热在线视频| 丰满饥渴老太性hd| 黄色三级网站| 欧美内射深插日本少妇| 午夜伦理电影在线观免费| 中文字幕完整高清版| 动漫美女人物被黄漫在线看| 户外露出野战hd| 热99re久久精品国产首页| 亚洲精品沙发午睡系列| 99午夜视频| 狠狠狠色丁香婷婷综合久久| 欧美日韩亚洲第一区在线| 亚洲精品tv久久久久久久久久| 99久久99久久精品免费看子| 国产日韩亚洲精品视频| 女人高潮特级毛片| 亚洲精品电影天堂网| YELLOW高清在线观看2019| 精品国产一区二区三区久久影院| 强奷乱码欧妇女中文字幕熟女| 亚洲黄色录像片| 菠萝菠萝蜜高清观看在线| 久久re热线视频国产| 少妇高潮A视频| 91亚洲精品福利在线播放| 国产美女影院| 情欲.美女高潮| 中文字幕成人| 国产午夜精品视频在线播放 | 成人在线观看播放| 久久中文骚妇内射| 亚洲大爷操| 吃奶啃奶玩乳漫画| 男女夜晚在爽视频免费观看|