• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      TensorFlow在圖像識別系統(tǒng)中的應(yīng)用

      2019-05-17 02:52:12邢艷芳段紅秀何光威
      計算機技術(shù)與發(fā)展 2019年5期
      關(guān)鍵詞:準確度卷積深度

      邢艷芳,段紅秀,何光威

      (中國傳媒大學南廣學院,江蘇 南京 211172)

      0 引 言

      眾所周知,人工智能將是未來發(fā)展的大方向,深度學習則是人工智能領(lǐng)域的一個重要分支,在圖像和語音識別等領(lǐng)域取得了重要突破。隨著深度學習的發(fā)展,相關(guān)神經(jīng)網(wǎng)絡(luò)模型也不斷推陳出新。TensorFlow是目前主流的深度學習框架,文中以該框架為基礎(chǔ),采用Google MobileNet模型,Ubuntu 16.04開源Linux操作系統(tǒng),CUDA 9.0運算平臺,cuDNN 7.0.5并行架構(gòu),選取從網(wǎng)絡(luò)中爬取的圖片作為數(shù)據(jù)集,進行訓練和識別。

      1 TensorFlow框架

      TensorFlow[1-5]是Google公司推出的開源人工智能系統(tǒng),具有靈活性、高效性以及良好的可擴展性、可移植性等特征,可應(yīng)用于從智能手機到大型計算集群的多種計算環(huán)境。

      TensorFlow的主要流程是:

      (1)產(chǎn)生對應(yīng)的數(shù)據(jù)集。數(shù)據(jù)集可從網(wǎng)上下載公開數(shù)據(jù),也可以通過爬蟲自動化測試或者手工尋找等方式來制作。

      (2)對數(shù)據(jù)進行轉(zhuǎn)換和歸一化。將導(dǎo)入的數(shù)據(jù)轉(zhuǎn)換成指定格式,使維度和類型符合TensorFlow直接處理的要求。

      (3)劃分數(shù)據(jù)集。將數(shù)據(jù)集劃分成訓練集、測試集以及驗證集。

      (4)設(shè)置相關(guān)超參數(shù)。學習過程中需要眾多常量參數(shù),包括迭代次數(shù)(iterations)、學習率(learning rate)、少批量(mini batch)等。

      (5)選取變量和占位符。采用占位符(placeholder)得到數(shù)據(jù),調(diào)整變量(variables)、權(quán)重(weights)和偏置(biases),構(gòu)建更優(yōu)化的網(wǎng)絡(luò),并尋求損失函數(shù)(目標函數(shù))的最優(yōu)解。

      (6)構(gòu)建模型。根據(jù)參數(shù)和初始化內(nèi)容構(gòu)建模型,通過操作(op)、變量和占位符來建立計算圖。

      (7)定義損失函數(shù)。根據(jù)損失函數(shù)(loss function)的決策結(jié)果,得到預(yù)測值與真實值之間的偏差。使用梯度下降算法(gradient descent)和似然函數(shù),避免出現(xiàn)梯度消失和梯度下降。

      (8)初始化和訓練模型。采用交叉熵(cross entropy)、驗證和訓練的準確度來評估損失函數(shù)。

      TensorFlow的相關(guān)操作有:

      (1)創(chuàng)建張量。如表1所示,TensorFlow主要數(shù)據(jù)結(jié)構(gòu)為張量(tensor),基本計算操作包括add()、sub()、mul()和div()。

      表1 常規(guī)張量

      (2)封裝張量。var=tf.Variable(...),省略號可為自定義張量(tensor)。

      (3)通過會話(session)的feed_參數(shù)獲取數(shù)據(jù),讓得出的h為x的實體(identity),實體的返回值為傳入的數(shù)據(jù)本身。

      (4)實現(xiàn)激勵函數(shù)操作。表2展示了相關(guān)激活函數(shù)。

      表2 相關(guān)激活函數(shù)

      (5)卷積函數(shù):用于滑動窗口、步長和卷積核。

      (6)剪裁函數(shù):用于剪裁圖像中多余的維度。

      (7)損失函數(shù):比較預(yù)測值和目標值的差值。

      (8)實現(xiàn)優(yōu)化器。通過二分類算法等方式實現(xiàn)梯度下降,指定合適的學習率,確保機器學習算法收斂。

      (9)更新變量以及最小化損失函數(shù)反向傳播誤差,使用較小的學習率(步長)和在一定范圍內(nèi)盡可能多的迭代網(wǎng)絡(luò)會讓訓練易于收斂。

      (10)實現(xiàn)線性回歸。

      (11)實現(xiàn)邏輯回歸。

      在深度學習過程中,如何監(jiān)控算法是一個難點。文中采用TensorFlow中的可視化工具TensorBoard,可以對算法計算過程中的各個流程圖、偏置、權(quán)重以及準確度、交叉熵的參數(shù)通過圖形進行可視化展示。在整體識別程序的啟動后,在命令行輸入以下命令:tensorboard -logdir=retrain_logs。在終端打開一個本地端口http://zwx-Inspiration-5437∶6006,一彈出便為展示頁。TensorBoard配置過程如下:

      (1)初始化計算圖,創(chuàng)建write將TensorBoard summary寫入對應(yīng)文件。

      (2)確保writer信息寫入相應(yīng)的summary文件夾。

      (3)設(shè)置模型參數(shù),讓模型生成所需的數(shù)據(jù)集。

      (4)將數(shù)據(jù)集分割為測試集、訓練集以及驗證集。

      (5)建立占位符、變量以及模型相關(guān)運算操作、損失值和優(yōu)化操作。

      (6)創(chuàng)建TensorBoard的直方圖匯總和標量值匯總。

      2 深度學習應(yīng)用

      文中采用深度可分離卷積神經(jīng)網(wǎng)絡(luò)作為深度學習的模型,深度可分離卷積(depth-wise separable convolution)相對傳統(tǒng)卷積方式,減少了參數(shù)數(shù)量,提升了計算速度,降低了過擬合的風險[6-8]。在進行深度可分離卷積的神經(jīng)網(wǎng)絡(luò)設(shè)計中,在有通道分離的情況下,接上一個深度卷積,即可實現(xiàn)空間卷積[9-12]。

      在高計算復(fù)雜度下,深度卷積神經(jīng)網(wǎng)絡(luò)相比人的視覺精度更高,將卷積層分解,便于提高效率。傳統(tǒng)卷積層,三維卷積被認為是同時在通道空間卷積和線性通道投影,從而得到高冗余計算。將它們分離后,所需層只包括單個通道卷積和線性通道投影。此外,還提出了在輸入通道和輸出通道之間的拓撲連接框架,以便提高該卷積層的效率。復(fù)雜度遠遠低于標準卷積層,在確保準確性的前提下減少了3-4倍計算量。深度可分離卷積神經(jīng)網(wǎng)絡(luò)支持移動端的使用和開發(fā),更適用于移動設(shè)備便攜式開發(fā)設(shè)計。

      3 系統(tǒng)構(gòu)建

      較之CPU,GPU更適合一次性進行大量重復(fù)性工作。在深度學習卷積神經(jīng)網(wǎng)絡(luò)中,更多的是加、乘法的計算,使用GPU進行并發(fā)計算可以提高運算效率。因此深度學習可以非常恰當?shù)赜肎PU進行加速。CUDA是NVIDIA公司為了支持GPU而設(shè)計的并行計算架構(gòu),其ISA指令集架構(gòu)和硬件計算引擎讓CUDA更適合并行計算。文中在Ubuntu 16.04系統(tǒng)下,通過配置GPU、CUDA 9.0以及cuDNN 7.0.5的相關(guān)參數(shù),來搭建相關(guān)平臺和并行計算架構(gòu)[13]。

      圖像識別相關(guān)參數(shù)如下:

      (1)prepare_file_system()函數(shù),準備summary需要的輸出文件夾,summary信息可以通過TensorBoard來看。

      (2)model_info=create_model_info(FLAGS.architecture),根據(jù)architecture參數(shù),返回模型的元信息,其中architecture模型采用的是MobileNetV1。

      圖像識別相關(guān)算法:

      (1)梯度下降優(yōu)化算法:對權(quán)值進行優(yōu)化,在曲線中尋找梯度方向下降最快的位置,來尋找最低點,以便讓損失值最小。梯度下降算法有起始點、搭建平面的形狀和學習率(步長)三個影響因素。

      (2)初始化:為了進行有效訓練,讓各層神經(jīng)元方差不變,采用權(quán)值初始化來保證其方差不變性。

      (3)偏差/方差(bias/variance):對網(wǎng)絡(luò)優(yōu)化以后,如果網(wǎng)絡(luò)有高偏差/高反差狀態(tài),需要進一步對參數(shù)進行調(diào)整。

      (4)正則化(regularization):為了解決高方差和擬合問題,避免神經(jīng)元將非一般特征當作一般規(guī)律學習導(dǎo)致驗證集準確度較低。通過數(shù)據(jù)翻轉(zhuǎn)、比例調(diào)整、亮度調(diào)整、剪裁大小的方法進行數(shù)據(jù)擴充,以獲取更多的訓練樣本,便于訓練和正則化懲罰,減少過擬合和學習非一般規(guī)律的問題。

      從數(shù)據(jù)輸入、MobileNet模型再到最后的輸出層,各層神經(jīng)網(wǎng)絡(luò)的實現(xiàn)如圖1所示。

      圖1 各層網(wǎng)絡(luò)圖解

      4 性能測試與分析

      數(shù)據(jù)集分為兩部分獲?。旱谝徊糠峙c暴力相關(guān)的包括爭斗、爆炸、槍械、血腥四類,通過網(wǎng)絡(luò)搜索下載的方式,分別存放在fight、explosion、gun、blood目錄下。第二部分與色情(porn)相關(guān)的通過Python實現(xiàn)網(wǎng)絡(luò)爬取,存放在porn目錄下。數(shù)據(jù)集的80%作為訓練樣本,剩下各10%作為測試和驗證樣本。得出識別結(jié)果后,通過交叉熵來判斷識別的準確度,交叉熵越低,證明通過網(wǎng)絡(luò)迭代進行訓練的效果越好[14-15]。通過計算平均值、標準差,得出相關(guān)測試集、訓練集以及驗證集的準確度。如圖2所示,1 000次網(wǎng)絡(luò)迭代的結(jié)果表明訓練集的準確度更好,驗證集的準確度一般。

      迭代100次的結(jié)果會發(fā)現(xiàn)交叉熵逐步減少,最后保持在0.15~0.2左右,交叉熵越小,說明預(yù)測值越接近真實值。在學習率0.01更換為0.001以后,發(fā)現(xiàn)驗證集平均準確度從87%上升到89%。在進行1 000次迭代實驗以后,訓練結(jié)果的驗證集準確度在88%左右,學習率為0.001,可見數(shù)據(jù)集較小(總共1 400)對網(wǎng)絡(luò)迭代有一定影響。在進行訓練集、測試集少批量網(wǎng)絡(luò)迭代以后,從原來少批量100變?yōu)?00時,準確度有小幅提高,說明200也為網(wǎng)絡(luò)迭代所能承受的批量,而當少批量數(shù)為300時,測試集準確度卻降低了,可見批量過大時不僅使得計算速度變慢,而且網(wǎng)絡(luò)模型承受力不足。

      由圖3數(shù)據(jù)可見,槍械類的識別準確率為0.976,血腥類為0.010,爭斗類為0.010,色情類為0.002,爆炸類為0.000 1,得出該圖是屬于槍械類的敏感圖片。

      圖2 驗證集、訓練集準確度圖解

      圖3 Matplotlib展示分類槍械類識別結(jié)果圖解

      由圖4數(shù)據(jù)可見,爭斗類的識別準確率為0.992,血腥類為0.002,槍械類為0.005,色情類為0.000 4,爆炸類為0.000 2,得出該圖是屬于爭斗類的敏感圖片。

      由圖5數(shù)據(jù)可見,爆炸類的識別準確率為0.954,爭斗類為0.000 1,槍械類為0.001,色情類為0.002,血腥類為0.04,得出該圖是屬于爆炸類的敏感圖片。

      圖4 Matplotlib展示分類爭斗類識別結(jié)果圖解

      圖5 Matplotlib展示分類爆炸類識別結(jié)果圖解

      測試結(jié)果顯示,五類圖片相應(yīng)的識別準確度還是很高的,通過模型搭建再到各類權(quán)重、偏置更新,再到算法優(yōu)化,讓識別結(jié)果完整。通過文中設(shè)計的100次網(wǎng)絡(luò)迭代,MobileNet模型測試準確度為86%,更換為Inception_v3模型的測試準確度為87.2%,但是MobileNet模型網(wǎng)絡(luò)迭代周期僅為5分鐘,遠低于Inception_v3模型的迭代周期(30分鐘)。因此,MobileNet在移動端、嵌入端以及網(wǎng)絡(luò)規(guī)模大小和內(nèi)存限制時具有較好的應(yīng)用價值。

      5 結(jié)束語

      文中采用的TensorFlow人工智能框架,便于圖像識別等任務(wù)的實現(xiàn)和開發(fā),測試結(jié)果驗證了該框架的高效性、便捷性以及可行性。隨著深度學習在工業(yè)以及學術(shù)界上的巨大發(fā)展,值得被進一步的學習、研究和探討。

      猜你喜歡
      準確度卷積深度
      基于3D-Winograd的快速卷積算法設(shè)計及FPGA實現(xiàn)
      深度理解一元一次方程
      從濾波器理解卷積
      電子制作(2019年11期)2019-07-04 00:34:38
      深度觀察
      深度觀察
      幕墻用掛件安裝準確度控制技術(shù)
      建筑科技(2018年6期)2018-08-30 03:40:54
      深度觀察
      基于傅里葉域卷積表示的目標跟蹤算法
      動態(tài)汽車衡準確度等級的現(xiàn)實意義
      一種基于卷積神經(jīng)網(wǎng)絡(luò)的性別識別方法
      武穴市| 湟中县| 澄迈县| 达拉特旗| 油尖旺区| 镇巴县| 灵宝市| 鲁山县| 乐清市| 宣武区| 来安县| 汉源县| 渭源县| 涞源县| 内黄县| 苍南县| 桓仁| 通州市| 大同县| 海伦市| 兴仁县| 谢通门县| 桃源县| 宝坻区| 修武县| 霍山县| 资阳市| 梁平县| 柘城县| 泰顺县| 大石桥市| 仪征市| 吴忠市| 宁蒗| 文山县| 德安县| 平罗县| 纳雍县| 西贡区| 祁阳县| 延川县|