国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于TensorFlow的移動終端圖像識別方法

2018-03-07 06:15熊亞蒙
無線互聯(lián)科技 2018年21期
關(guān)鍵詞:遷移學(xué)習(xí)圖像識別

熊亞蒙

摘 要:文章研究了基于TensorFlow的移動終端圖像識別方法。TensorFlow是一種機器學(xué)習(xí)工具。TensorFlow功能廣泛,但是主要用于構(gòu)建深度神經(jīng)網(wǎng)絡(luò)模型。移動應(yīng)用程序能夠理解識別可能非常有用,通過遷移學(xué)習(xí)幫助識別圖像內(nèi)容可以幫助應(yīng)用程序應(yīng)用適當(dāng)?shù)剡^濾,或者標(biāo)記照片以使其易于找到,因此,可以使用圖像傳感器來檢測各種有趣的情況。

關(guān)鍵詞:圖像識別;TensorFlow;遷移學(xué)習(xí)

圖像識別,是指利用計算機對圖像進行處理、分析和理解,以識別各種不同模式的目標(biāo)和對象的技術(shù)。一般工業(yè)使用中,采用工業(yè)相機拍攝圖片,然后再利用軟件根據(jù)圖片灰階差作進一步識別處理,圖像識別軟件國外代表的有康耐視等,國內(nèi)代表的有圖智能等。另外,在地理學(xué)中指將遙感圖像進行分類的技術(shù)[1]。

1 圖像識別一般方法

圖像識別可能是以圖像的主要特征為基礎(chǔ)的。每個圖像都有它的特征,如字母A有個尖,P有個圈、而Y的中心有個銳角等。對圖像識別時眼動的研究表明,視線總是集中在圖像的主要特征上,也就是集中在圖像輪廓曲度最大或輪廓方向突然改變的地方,這些地方的信息量最大。由此可見,在圖像識別過程中,知覺機制必須排除輸入的多余信息,抽出關(guān)鍵的信息。同時,在大腦里必定有一個負(fù)責(zé)整合信息的機制,它能把分階段獲得的信息整理成一個完整的知覺映象[2]。

在人類圖像識別系統(tǒng)中,對復(fù)雜圖像的識別往往要通過不同層次的信息加工才能實現(xiàn)。對于熟悉的圖形,由于掌握了它的主要特征,就會把它當(dāng)作一個單元來識別,而不再注意它的細(xì)節(jié)了。這種由孤立的單元材料組成的整體單位叫作組塊,每一個組塊是同時被感知的。在文字材料的識別中,人們不僅可以把一個漢字的筆劃或偏旁等單元組成一個組塊,而且能把經(jīng)常在一起出現(xiàn)的字或詞組成組塊單位來加以識別。

在計算機視覺識別系統(tǒng)中,圖像內(nèi)容通常用圖像特征進行描述。事實上,基于計算機視覺的圖像檢索也可以分為類似文本搜索引擎的3個步驟:提取特征、建索引build以及查詢[3]。

2 TensorFlow 平臺

TensorFlow?是一個使用數(shù)據(jù)流圖進行數(shù)值計算的開放源代碼軟件庫。圖中的節(jié)點代表數(shù)學(xué)運算,而圖中的邊則代表在這些節(jié)點之間傳遞的多維數(shù)組(張量)。借助這種靈活的架構(gòu),可以通過一個 API 將計算工作部署到桌面設(shè)備、服務(wù)器或移動設(shè)備中的一個或多個 CPU或GPU。

TensorFlow物體檢測API是一個構(gòu)建在TensorFlow上的框架,用于識別圖像中特定的對象。例如,你可以用很多貓的照片訓(xùn)練它,一旦訓(xùn)練完畢,你可以輸入一張貓的圖像,它就會輸出一個方框列表,認(rèn)為圖像中有一只貓。通過TensorFlow支持5個預(yù)訓(xùn)練模型的遷移學(xué)習(xí)(transfer learning),完成遷移學(xué)習(xí),提升識別速度。

TensorFlow Lite是TensorFlow針對移動和嵌入式設(shè)備的輕量級解決方案。它支持低延遲和小二進制大小的設(shè)備上機器學(xué)習(xí)推理。TensorFlow Lite還支持Android神經(jīng)網(wǎng)絡(luò)API的硬件加速。TensorFlow Lite使用許多技術(shù)來實現(xiàn)低延遲,如優(yōu)化移動應(yīng)用程序內(nèi)核,預(yù)融合激活以及允許更小和更快(定點數(shù)學(xué))模型的量化內(nèi)核。

3 TensorFlow Lite使用

在移動應(yīng)用中使用TensorFlow Lite模型需要多方面的考慮:您必須選擇預(yù)先訓(xùn)練好的模型或自定義模型,將模型轉(zhuǎn)換為TensorFLow Lite格式,最后將模型集成到您的應(yīng)用中(見圖1)。

圖1 TensorFlow圖像識別的步驟

根據(jù)用例,可以選擇流行的開源模型之一(如InceptionV3或MobileNets),并使用自定義數(shù)據(jù)集重新訓(xùn)練這些模型,甚至可以構(gòu)建自己的自定義模型。

3.1 使用預(yù)先訓(xùn)練的模型

對圖像進行預(yù)處理,改變大小、貼標(biāo)簽、將它們分成訓(xùn)練和測試兩部分,并修改成Pascal VOC格式;將圖片轉(zhuǎn)化成TFRecords文件以符合物體檢測API;利用MobileNet在谷歌Cloud ML Engine上訓(xùn)練模型;導(dǎo)出訓(xùn)練好的模型并將其部署到ML Engine上進行服務(wù)。

MobileNets是TensorFlow的一系列移動優(yōu)先計算機視覺模型,旨在有效提高準(zhǔn)確性,同時考慮到設(shè)備或嵌入式應(yīng)用的受限資源。MobileNets是參數(shù)化的小型低延遲低功耗模型,可滿足各種用途的資源限制。它們可以用于分類、檢測、嵌入和分割—類似于其他流行的大規(guī)模模型,例如Inception。Google為MobileNets提供了16個預(yù)先訓(xùn)練的ImageNet分類檢查點,可用于各種規(guī)模的移動項目。

Inception-v3是一個圖像識別模型,可以很高的精度識別1 000個類別的普通物體,例如“Zebra”“Dalmatian”和“Dishwasher”。該模型使用卷積神經(jīng)網(wǎng)絡(luò)從輸入圖像中提取一般特征,并根據(jù)那些具有完全連接和softmax層的特征對其進行分類。

針對自定義數(shù)據(jù)集重新訓(xùn)練Inception-V3或MobileNet,這些預(yù)先訓(xùn)練的模型在包含1 000個預(yù)定義類的ImageNet數(shù)據(jù)集上進行了培訓(xùn)。如果這些類不足以滿足您的用例,則需要重新訓(xùn)練該模型。這種技術(shù)被稱為轉(zhuǎn)移學(xué)習(xí),并從一個已經(jīng)對某個問題進行過訓(xùn)練的模型開始,然后對模型進行重新訓(xùn)練以解決類似的問題。從頭開始深入學(xué)習(xí)可能需要數(shù)天,但轉(zhuǎn)移學(xué)習(xí)相當(dāng)快。為了做到這一點,需要生成一個標(biāo)有相關(guān)類的自定義數(shù)據(jù)集。

訓(xùn)練一個自定義模型:開發(fā)人員可以選擇使用Tensorflow來培訓(xùn)自定義模型。如果已經(jīng)編寫了模型,第一步是將其導(dǎo)出到tf.GraphDef文件中。這是必需的,因為有些格式不會將模型結(jié)構(gòu)存儲在代碼之外,我們必須與框架的其他部分進行通信。請參閱導(dǎo)出推理圖以創(chuàng)建自定義模型的.pb文件。

3.2 轉(zhuǎn)換模型格式

通過生成(或下載)的模型是標(biāo)準(zhǔn)的Tensorflow模型,是一個.pb或.pbtxt tf.GraphDef文件。使用轉(zhuǎn)移學(xué)習(xí)(重新培訓(xùn))或自定義模型生成的模型必須進行轉(zhuǎn)換,但是,我們必須先凍結(jié)圖形以將模型轉(zhuǎn)換為Tensorflow Lite格式。這個過程使用以下幾種模型格式。

tf.GraphDef(.pb)—代表TensorFlow訓(xùn)練或計算圖的protobuf。它包含運算符、張量和變量定義。

CheckPoint(.ckpt)—來自TensorFlow圖形的序列化變量。由于這不包含圖形結(jié)構(gòu),因此它本身不能被解釋。

FrozenGraphDef—它的一個子類GraphDef不包含變量。A GraphDef可以轉(zhuǎn)換為一個FrozenGraphDef通過采取檢查點和一個GraphDef,以及使用從檢查點檢索到的值的每個變量轉(zhuǎn)換成一個常數(shù)。

SavedModel-A GraphDef和CheckPoint的簽名將標(biāo)簽輸入和輸出參數(shù)標(biāo)記為模型。A GraphDef和CheckPoint可以從a中提取SavedModel。

TensorFlow Lite模型(.tflite)—包含TensorFlow Lite操作符和張量的TensorFlow Lite解釋器的序列化FlatBuffer,類似于a FrozenGraphDef。

凍結(jié)圖:要在GraphDefTensorFlow Lite中使用.pb文件,必須具有包含經(jīng)過訓(xùn)練的權(quán)重參數(shù)的檢查點。.pb文件只包含圖形的結(jié)構(gòu)。將檢查點值與圖結(jié)構(gòu)合并的過程稱為凍結(jié)圖。

應(yīng)該有一個檢查點文件夾或?qū)⑺鼈兿螺d到預(yù)先訓(xùn)練的模型(例如 MobileNets)。

凍結(jié)GraphDef現(xiàn)在已準(zhǔn)備好轉(zhuǎn)換為FlatBuffer適用于Android或iOS設(shè)備的格式(.tflite)。對于Android,Tensorflow Optimizing Converter工具支持浮點模型和量化模型。將凍結(jié)轉(zhuǎn)換為GraphDef.tflite格式。

找到這些值最簡單的方法是使用Tensorboard探索圖形。在freeze_graph步驟中重新使用用于指定輸出節(jié)點進行推理的參數(shù)。

也可以使用Tensorflow Optimizing Converter和Python或命令行中的protobufs。這允許您將轉(zhuǎn)換步驟集成到模型設(shè)計工作流程中,確保模型可以輕松轉(zhuǎn)換為移動推理圖。

在回購包含轉(zhuǎn)換后的可視化TensorFlow Lite的工具。構(gòu)建visualize.py工具。這會生成一個交互式HTML頁面列表子圖,操作和圖表可視化。

3.3 在移動應(yīng)用程序中使用TensorFlow Lite模型進行推理

在完成前面的步驟之后,會生成一個.tflite模型文件。

由于Android應(yīng)用程序是用Java編寫的,核心TensorFlow庫是用C++編寫的,因此提供了一個JNI庫作為接口。這只是用于推理 - 它提供了加載圖形,設(shè)置輸入以及運行模型來計算輸出的功能。

使用Android Studio試用項目代碼中的更改并編譯演示應(yīng)用程序:

確保Android SDK版本大于26并且NDK版本大于14(在Android Studio設(shè)置中)。

將該tensorflow/contrib/lite/java/demo目錄導(dǎo)入為新的Android Studio項目。

安裝它請求的所有Gradle擴展。

要獲得模型,下載量化的Mobilenet TensorFlow Lite模型,并解壓縮并復(fù)制mobilenet_quant_v1_224.tflite到assets目錄中TensorFlow指定目錄。

或者,下載浮點Inception-v3模型 并解壓并復(fù)制inceptionv3_non_slim_2015.tflite到資產(chǎn)目錄。

4 結(jié)語

文中我們對TensorFlow Lite在移動平臺的通用方法和步驟進行了歸納總結(jié),通過TensorFlow預(yù)訓(xùn)練模型、轉(zhuǎn)化格式、推演三步驟詳細(xì)地描述其操作和原理,對自己的圖像識別實踐中的問題也進行了總結(jié)。當(dāng)然,TensorFlow應(yīng)用范圍很多,不局限于圖像分類,還包括語音識別、序列生成等,這有待于我們?nèi)パ芯渴褂谩?/p>

猜你喜歡
遷移學(xué)習(xí)圖像識別
基于Resnet-50的貓狗圖像識別
高速公路圖像識別技術(shù)應(yīng)用探討
圖像識別在物聯(lián)網(wǎng)上的應(yīng)用
圖像識別在水質(zhì)檢測中的應(yīng)用
從認(rèn)知角度探討大學(xué)英語網(wǎng)絡(luò)教學(xué)模式
奇異值分解與移移學(xué)習(xí)在電機故障診斷中的應(yīng)用
淺談模式識別在圖像識別中的應(yīng)用
大數(shù)據(jù)環(huán)境下基于遷移學(xué)習(xí)的人體檢測性能提升方法
基于多組合內(nèi)容的圖像識別機制