亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于NVIDIA Jetson TX2的道路場景分割①

        2019-01-18 08:30:34李詩菁卿粼波何小海
        計算機系統(tǒng)應(yīng)用 2019年1期
        關(guān)鍵詞:序列化引擎權(quán)值

        李詩菁, 卿粼波, 何小海, 韓 杰

        (四川大學(xué) 電子信息學(xué)院, 成都 610065)

        近年, 深度學(xué)習(xí)的迅猛崛起給各個科技領(lǐng)域的發(fā)展帶來了巨大影響. 在計算機視覺領(lǐng)域, 圖像語義分割是重要的基礎(chǔ)研究問題之一. 傳統(tǒng)的圖像分割一般采用基于閾值、邊緣、區(qū)域的分割方法, 根據(jù)顏色紋理等人工標定的特征完成分割, 過程復(fù)雜且局限性較大[1]. 基于深度學(xué)習(xí)的圖像語義分割網(wǎng)絡(luò)的分割性能遠超傳統(tǒng)算法, 可應(yīng)用到諸多領(lǐng)域如無人駕駛、智能安防、交通監(jiān)控、機器人中[2]. 在較有代表性的圖像分割網(wǎng)絡(luò)FCN (Fully Convolutional Networks)[3]、SegNet(SegNet: A Deep ConvolutionalEncoder-Decoder Architecture for ImageSegmentation)[4]、PSPNet(Pyramid Scene Parsing Network)[5]和ENet(ENet: A Deep Neural Network Architecture forReal-Time Semantic Segmentation)中, FCN是最早的圖像分割網(wǎng)絡(luò)之一, 準確度較低且耗時長; PSPNet分割的像素精確度高, 但耗時較長; ENet分割速度較快, 但分割效果較不理想; SegNet兼具較高的分割準確度與速度, 是完成道路場景分割任務(wù)較好的選擇.

        隨著人工智能的不斷發(fā)展, 深度學(xué)習(xí)網(wǎng)絡(luò)在嵌入式平臺上部署的需求也日益增長. 目前國內(nèi)外推出的可部署深度學(xué)習(xí)的主流芯片一般分為FPGA芯片和GPU芯片兩類. 在FPGA上已實現(xiàn)了一些小規(guī)模的神經(jīng)網(wǎng)絡(luò), 如Zhang等人在Xilinx Virtex 7485T FPGA上實現(xiàn)了AlexNet[6], 盧冶、陳瑤等人在XC7Z020 FPGA上實現(xiàn)了LeNet-5、Cifarnet網(wǎng)絡(luò)[7]. 基于FPGA的深度學(xué)習(xí)應(yīng)用的功耗小于GPU, 但受限于FPGA開發(fā)難度與硬件資源, 目前大規(guī)模復(fù)雜結(jié)構(gòu)的網(wǎng)絡(luò)在嵌入式上的部署還是更多地基于GPU實現(xiàn). 已有許多深度學(xué)習(xí)網(wǎng)絡(luò)逐漸被應(yīng)用到了嵌入式ARM+GPU平臺如NVIDIA JetsonTX2 (簡稱TX2)上, 構(gòu)建了目標檢測、感知導(dǎo)航等系統(tǒng)[8,9]. 因分割網(wǎng)絡(luò)相較于圖像分類、目標檢測更難實現(xiàn), 大部分高準確度的分割網(wǎng)絡(luò)在低功耗的嵌入GPU平臺上運行速度極慢, 而較少地被應(yīng)用到嵌入式平臺上.

        因此, 針對無人駕駛與交通監(jiān)控等應(yīng)用背景, 本文選取SegNet網(wǎng)絡(luò)在嵌入式平臺TX2上實現(xiàn)道路場景理解, 并采用模型簡化與轉(zhuǎn)換網(wǎng)絡(luò)模型為加速引擎的方式, 在基本保持原網(wǎng)絡(luò)分割準確度的情況下大幅度提升了分割網(wǎng)絡(luò)在嵌入式平臺中的推理速度. 本文首先合并BN層簡化了網(wǎng)絡(luò)模型, 然后基于英偉達的TensorRT2前向推理加速器采用水平層集成, 關(guān)聯(lián)層消除, 權(quán)值精度減半等優(yōu)化措施, 將網(wǎng)絡(luò)模型轉(zhuǎn)換成了加速引擎進行前向推理. 下面將分別就網(wǎng)絡(luò)結(jié)構(gòu)與模型簡化、基于TensorRT2的加速引擎構(gòu)建兩部分進行介紹.

        1 網(wǎng)絡(luò)結(jié)構(gòu)與網(wǎng)絡(luò)模型簡化

        1.1 網(wǎng)絡(luò)結(jié)構(gòu)

        本文采用SegNet網(wǎng)絡(luò), 實現(xiàn)將道路場景分為行人、道路、天空、標志、車輛、交通標線、桿狀物、自行車、側(cè)路、植物、建筑、圍墻共12類的任務(wù).

        SegNet網(wǎng)絡(luò)基本結(jié)構(gòu)為自動編-解碼器結(jié)構(gòu), 采用VGG16前13層卷積層作為編碼器, 后接13層解碼網(wǎng)絡(luò)與一個分類層. SegNet關(guān)鍵在于存儲了編碼網(wǎng)絡(luò)中每個的池化層中的最大值與其空間信息, 用于對應(yīng)解碼器的非線性上采樣, 這極大精確了分割中的邊界定位, 減少了編碼器到解碼器的參數(shù)量, 使得SegNet在速度與內(nèi)存利用上都具有很大優(yōu)勢.

        1.2 網(wǎng)絡(luò)模型簡化

        在將網(wǎng)絡(luò)模型轉(zhuǎn)換為加速引擎之前, 本文對SegNet網(wǎng)絡(luò)進行了模型簡化. SegNet網(wǎng)絡(luò)中引入了BN層, 這種層可在訓(xùn)練時期加速網(wǎng)絡(luò)收斂, 但在推理過程中會增大內(nèi)存消耗, 降低推理速度. 可將BN層與其相連的卷積層合并以簡化模型加速推理, 如圖1所示.

        圖1 BN層合并

        卷積層與BN層都是線性變換, 提供了合并的可能性. 設(shè)輸入的mini-batch: {x1··n}, BN層變化如式(1):

        式(1)中,i∈[0,n], 且i為整數(shù)與是訓(xùn)練中得到的參數(shù)為趨于0的常數(shù).

        2 基于TensorRT2的加速引擎構(gòu)建

        SegNet在TX2上的推理速度極慢, 因此本文采用NVIDIA推出的TensorRT2對網(wǎng)絡(luò)模型進行加速.

        2.1 基本流程

        TensorRT是NVIDIA公司推出的深度學(xué)習(xí)網(wǎng)絡(luò)推理引擎, 可優(yōu)化已有網(wǎng)絡(luò)模型, 大幅提升神經(jīng)網(wǎng)絡(luò)在如機器人、自動駕駛平臺上的推理速度. 目前NVIDIA公司已推出四個版本的TensorRT. 不同版本TensorRT可支持的深度學(xué)習(xí)框架不同.

        因為本文使用的SegNet網(wǎng)絡(luò)采用caffe架構(gòu), 且需要插入TensorRT不支持的層, TensorRT2版本已經(jīng)能滿足本文需求. 故本文使用TensorRT2, 基于訓(xùn)練后的網(wǎng)絡(luò)模型生成加速推理引擎, 完成高效的GPU推理性能優(yōu)化. 加速后的模型無需深度學(xué)習(xí)架構(gòu)支持, 對平臺的依賴性極小, 無論在高性能GPU(如NVIDIA Titan X)上, 還是在嵌入式平臺(例如NVIDIA TX2)上都擁有不俗的加速能力. 加速引擎構(gòu)建的基本流程如圖2.

        圖2 加速引擎構(gòu)建流程

        構(gòu)建過程中首先創(chuàng)建網(wǎng)絡(luò), 導(dǎo)入網(wǎng)絡(luò)模型并利用NvcaffeParser進行解析, 然后根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)與定義采取優(yōu)化措施生成加速引擎. 生成的加速引擎可序列化存儲到磁盤中. 在執(zhí)行階段反序列化加速引擎, 進行輸入與輸出口的綁定、GPU顯存分配與計算內(nèi)核啟動,執(zhí)行加速引擎得到分割結(jié)果.

        2.2 自定義層添加

        在上文的網(wǎng)絡(luò)模型解析過程中, 需將原網(wǎng)絡(luò)模型中的層轉(zhuǎn)換為其支持的形式. 加速引擎中除部分常見層如卷積層、激活層、全連接層等可直接轉(zhuǎn)換外, 其它TensorRT不支持的層需自行定義, 下文將這些層統(tǒng)稱為自定義層. TensorRT中支持的層可直接由上文提到的NvcaffeParser進行解析, 自定義層則需采用plugin接口添加入NvcaffeParser中.

        自定義層plugin添加的主要流程如下: 輸出確定、層配置、工作空間分配、資源管理、序列化與層執(zhí)行. 在加速引擎中, 一個層的輸入或輸出定義為tensor, tensor具有數(shù)據(jù)類型與三個維度分量, 即通道數(shù)C、寬度W與高度H. 在開始插入層時, 需對插入層的輸出進行定義, 需確定插入層的輸出數(shù)目與輸出tensor的三個維度分量{C,H,W}; 完成輸出確定后, 將進行層配置, 該過程主要獲取輸入tensor的形式; 在層配置后, 加速引擎會分配臨時的工作空間在自定義層之間共享以達到內(nèi)存利用率最大化; 同時還需要進行資源管理的配置, 主要是通過層資源初始化與銷毀來完成資源分配與釋放; 在進行完成上述部分后, 需判斷加速引擎是否需要序列化到磁盤中, 若需序列化, 則將自定義層的參數(shù)與網(wǎng)絡(luò)的其余部分合并以便后續(xù)整個網(wǎng)絡(luò)的序列化存儲; 最后在層執(zhí)行階段, 主要完成層的算法實現(xiàn), 如果未選擇序列化存儲, 則直接在資源分配后執(zhí)行該過程, 若已進行序列化存儲, 則提取序列化參數(shù)后執(zhí)行該過程, 整體過程如圖3所示.

        圖3 plugin層插入流程

        本文將網(wǎng)絡(luò)中需兩個輸出口的pooling層、upsample層與argmax分類層添加到加速模型中, 這些添加的層是網(wǎng)絡(luò)的關(guān)鍵結(jié)構(gòu), 如圖4所示. 本文將pooling層分出了兩個輸出口, 將池化結(jié)果送入下一級編碼器的同時將池化的最大特征值與位置信息輸入了對應(yīng)upsample層中. upsample層將接收的池化最大特征值按照位置信息填入上采樣的稀疏特征圖中, 空缺位置補零, 作為解碼器的輸入, 如圖5. 最終經(jīng)過層層解碼后的特征圖輸入argmax層, 得到每個像素最大可能性的分類結(jié)果.

        圖4 plugin層結(jié)構(gòu)

        圖5 plugin層實現(xiàn)過程

        2.3 優(yōu)化措施

        本文的優(yōu)化措施主要分為圖1中的引擎生成階段的優(yōu)化與圖3自定義層添加中執(zhí)行階段enqueue( )時的CUDA編程優(yōu)化.

        網(wǎng)絡(luò)模型中的各個層經(jīng)過解析之后, 在引擎生成時主要采用了以下措施進行優(yōu)化: 清除未使用的輸出層以避免不必要的計算; 整合垂直結(jié)構(gòu)的卷積層、ReLU激活層、Bias偏置項為CBR層; 將擁有同一輸入、相同操作、相似參數(shù)和不同輸出的水平層集成為一個層,例如圖6; 在平臺支持的情況下, 將數(shù)據(jù)精度需求從32位float降低為半精度的fp16, 以此提升計算效率.

        在自定義層添加時執(zhí)行層算法的函數(shù)enqueue( )中, 本文采用了CUDA編程的方式將算法中大量耗時的計算分配到GPU上并行實現(xiàn). 原網(wǎng)絡(luò)最后的分類層argmax層為CPU實現(xiàn), 若同樣采用CPU實現(xiàn), 需將輸入層的數(shù)據(jù)從GPU上復(fù)制到CPU上. 數(shù)據(jù)復(fù)制將耗費大量時間, 且argmax層算法在CPU上的執(zhí)行時間也過長. 因此本文在GPU上實現(xiàn)了argmax層前饋算法. 在CUDA C中的host函數(shù)只可由CPU調(diào)用, device函數(shù)則只可運行在GPU上, 且不能調(diào)用常用函數(shù). 因此argmax層前饋算法中調(diào)用的部分算法, 并不能在GPU上調(diào)用. 為此本文針對網(wǎng)絡(luò)的實際應(yīng)用簡化了相應(yīng)算法以便GPU實現(xiàn). 最終在得到每個像素值12類分類結(jié)果后, 在一維索引空間中并行360*480個線程,將位置一一對應(yīng)的特征值的12個分類結(jié)果進行排序,得到整幅圖像像素級別的分類.

        圖6 水平層集成

        3 實驗測試

        3.1 網(wǎng)絡(luò)訓(xùn)練

        本文采用GPU模式進行網(wǎng)絡(luò)訓(xùn)練, 硬件為基于Pascal架構(gòu)的NVIDIA Titan X顯卡, 該卡顯存為12 GB.

        為滿足針對交通監(jiān)控與自動駕駛的道路場景理解的目的, 本文從包含城市交通場景的數(shù)據(jù)庫KITTI[10]、Camvid[11]與Cityscapes[12]中選取了1300張圖像作為訓(xùn)練數(shù)據(jù)集, 并將原圖與標簽裁剪為統(tǒng)一尺寸. 此外, 選取的網(wǎng)絡(luò)訓(xùn)練需要單通道標簽, 故將原數(shù)據(jù)集中RGB標簽轉(zhuǎn)換為單通道, 并將每個像素轉(zhuǎn)換為代表天空、行人、圍墻、植物、交通標志、側(cè)道、道路、車輛等12個分類的灰度值. 在訓(xùn)練時, 為提高分類準確度, 使用預(yù)先訓(xùn)練好的VGG16網(wǎng)絡(luò)模型的權(quán)值對SegNet編碼網(wǎng)絡(luò)的權(quán)值進行初始化. 在20 000次iteration后, 網(wǎng)絡(luò)準確度就已經(jīng)達到80%以上, 在迭代36 000次時,達最高準確度92%, 迭代38 000次時達到最低損失0.019.

        3.2 測試結(jié)果

        在訓(xùn)練得到最優(yōu)網(wǎng)絡(luò)模型的基礎(chǔ)上, 本文完成了加速引擎(下文稱為SegEng)的構(gòu)建, 并將其序列化后存儲到磁盤上. NVIDIA TX2平臺支持fp16, 故本文生成SegEng時采用了半精度模式, 將其大小縮減為SegNet模型的一半. 在 NVIDIA TX2 上, 本文對 GPU模式下使用cudnn6.0加速的SegNet與SegEng的前向推理性能進行了測試對比.

        圖7 分割結(jié)果

        分割圖對比如圖7所示. 在圖像分割領(lǐng)域, 常用以下三個指標衡量分割精度: 像素精確度(G)表示圖像中被正確分類的像素比; 類平均精確度(C)表示所有類被正確分類的平均值; 交除并均值(Mean Intersection over Union, MIoU)代表所有類的IoU平均值.

        本文從測試集中選取圖片, 使用上述三個指標對迭代了40 000次得到的SegNet模型與SegEng的分割結(jié)果進行評估, 得到表1.

        表1 分割精度對比(單位: %)

        原始模型中的權(quán)值精度為32位, 加速引擎舍棄了權(quán)值中后16位的冗余信息, 將權(quán)值精度降低為16位,權(quán)值中丟棄的后16位信息對最終的像素級別分類概率影響極小, 由表1中可看到并未影響到最終的分割準確度.

        在NVIDIA TX2上, 本文對不同分辨率的1000幀視頻進行了10次測試后取平均值, 得到了表2中SegNet與SegEng推理時間的對比.

        表2 單幀圖像推理時間對比(單位: ms)

        在經(jīng)過上文的層合并、網(wǎng)絡(luò)層優(yōu)化、CUDA加速與TensorRT內(nèi)部的卷積優(yōu)化、內(nèi)存優(yōu)化、精度減半等優(yōu)化措施后, 由表 2可看出, 在 TX2上, 相較于SegNet, 本文生成的SegEng達到了約十倍的加速比,大幅度提高了SegNet在嵌入式平臺上的推理速度. 在分割 480*320大小的圖片時, 分割速度可達 10 fps, 具有在實際道路場景解析的應(yīng)用潛力.

        4 結(jié)語

        本文針對無人駕駛與交通監(jiān)控的應(yīng)用背景, 采用了圖像語義分割網(wǎng)絡(luò)SegNet完成將道路場景分割為行人、車輛、道路、植物、側(cè)道、交通標志、自行車等12類對象的任務(wù). 同時本文為提升分割網(wǎng)絡(luò)在嵌入式平臺上的推理速度, 對網(wǎng)絡(luò)模型進行了簡化, 然后基于NVIDIA推出的TensorRT2, 采用集成水平層、消除多余輸出層、采用權(quán)值精度減半、CUDA并行編程等優(yōu)化措施, 完成了網(wǎng)絡(luò)模型加速并生成了加速引擎.在NVIDIA TX2嵌入式平臺上, 本文生成的加速引擎無需深度學(xué)習(xí)架構(gòu)支持, 在分割精度基本無影響情況下, 推理速度可達原網(wǎng)絡(luò)的十倍, 為復(fù)雜結(jié)構(gòu)分割網(wǎng)絡(luò)在嵌入式平臺上的應(yīng)用提供了支持.

        猜你喜歡
        序列化引擎權(quán)值
        一種融合時間權(quán)值和用戶行為序列的電影推薦模型
        CONTENTS
        如何建構(gòu)序列化閱讀教學(xué)
        甘肅教育(2020年14期)2020-09-11 07:58:36
        藍谷: “涉藍”新引擎
        商周刊(2017年22期)2017-11-09 05:08:31
        基于權(quán)值動量的RBM加速學(xué)習(xí)算法研究
        Java 反序列化漏洞研究
        無形的引擎
        河南電力(2015年5期)2015-06-08 06:01:46
        作文訓(xùn)練微格化、序列化初探
        語文知識(2015年12期)2015-02-28 22:02:15
        基于Cocos2d引擎的PuzzleGame開發(fā)
        Java序列化技術(shù)的探討
        领导边摸边吃奶边做爽在线观看 | 亚洲精品综合久久中文字幕| 精品人妻一区二区三区在线观看| 免费人成网站在线观看欧美| 中文在线а√天堂官网| 99RE6在线观看国产精品| 你懂的视频网站亚洲视频| 亚洲性久久久影院| 久久精品人成免费| 欧洲乱码伦视频免费| 国产91会所女技师在线观看| 日韩精品欧美激情国产一区| 色综合久久久久综合一本到桃花网| 日本一区二区三区丰满熟女 | 亚州中文字幕乱码中文字幕| 日日摸夜夜添夜夜添高潮喷水 | 国产亚洲精品a片久久久| 亚洲狠狠婷婷综合久久| 久久久久亚洲AV无码专区一区| 午夜精品久久99蜜桃| 精品免费久久久久久久| 国产最新地址| 日韩av一区二区三区在线观看| 人妖一区二区三区四区| 人妻av无码系列一区二区三区| 久久精品国产亚洲综合色| 亚洲97成人精品久久久| 免费国产a国产片高清网站| 精品视频一区二区三三区四区| 91久久精品国产性色tv| 亚洲国产国语在线对白观看| 亚洲国产精品日韩av不卡在线| 91网站在线看| 操国产丝袜露脸在线播放| 天天躁日日躁aaaaxxxx| 鲁一鲁一鲁一鲁一澡| 青青草国内视频在线观看| 少妇高潮太爽了在线看| 俺来也俺去啦最新在线| 国产高清天干天天视频| 国产三级黄色免费网站|