国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

PaddlePaddle 移動端(一),在Android shell下運行PaddlePaddle

企業動態
這篇文章以Android shell下運行圖像分類模型為例子來講述如何入門PaddlePaddle移動端。

 我們可以在https://github.com/PaddlePaddle/Mobile/ 找到關于PaddlePaddle應用于移動端的demo和例子。這篇文章以Android shell下運行圖像分類模型為例子來講述如何入門PaddlePaddle移動端。

內容

  • PaddlePaddle訓練移動端的分類模型
  • 對PaddlePaddle進行Android 交叉編譯
  • Android shell 下運行分類模型

PaddlePaddle訓練移動端的分類模型

在Android shell下運行PaddlePaddle 模型,我們要準備一個適用于一個移動端的分類模型。Repo 下提供了適用于移動端的mobilenet模型,我們用這個模型來對花卉進行分類。
一,下載mobilenet配置文件

wget https://raw.githubusercontent.com/PaddlePaddle/Mobile/develop/models/standard_network/mobilenet.py 

二,下載pre-trained 模型參數文件
在百度云上下載在imagenet上預訓練的mobilenet模型參數 imagenet_pretrained_mobilenet.tar.gz
三,在imagenet模型上對flower102數據集進行微調(fine-tune)
拷貝以下代碼,然后運行,會在每個epoch 后保存參數文件??梢渣c擊此處 下載好我已經訓練的模型參數。

import sys import gzip  from paddle.trainer_config_helpers import * import paddle.v2 as paddle from mobilenet import mobile_net  # batch 大小是40 BATCH = 40  def main():     datadim = 3 * 224 * 224     classdim = 102      #  采用gpu訓練并使用***塊卡     paddle.init(use_gpu=True, trainer_count=1, gpu_id=0)      momentum_optimizer = paddle.optimizer.Momentum(         momentum=0.9,         regularization=paddle.optimizer.L2Regularization(rate=0.0005 * BATCH),         learning_rate=0.001 / BATCH,         learning_rate_schedule='constant')      out = mobile_net(datadim, classdim, 1.0)      lbl = paddle.layer.data(         name="label", type=paddle.data_type.integer_value(classdim))     cost = paddle.layer.classification_cost(input=out, label=lbl)      # Create parameters     parameters = paddle.parameters.create(cost)     # 加載imagenet 預訓練的模型參數     with gzip.open('imagenet_pretrained_mobilenet.tar.gz', 'r') as f:         fparameters = paddle.parameters.Parameters.from_tar(f)     for param_name in fparameters.names():         if param_name in parameters.names():             parameters.set(param_name, fparameters.get(param_name))      # End batch and end pass event handler     def event_handler(event):         if isinstance(event, paddle.event.EndIteration):             if event.batch_id % 50 == 0:                 print "\nPass %d, Batch %d, Cost %f, %s" % (                     event.pass_id, event.batch_id, event.cost, event.metrics)             else:                 sys.stdout.write('.')                 sys.stdout.flush()         if isinstance(event, paddle.event.EndPass):             # save parameters             with gzip.open('pruning_mobilenet_params_pass_%d.tar.gz' %                            event.pass_id, 'w') as f:                 parameters.to_tar(f)              result = trainer.test(                 reader=paddle.batch(                     paddle.dataset.flowers.test(), batch_size=10),                 feeding={'image': 0,                          'label': 1})             print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics)      # Create trainer     trainer = paddle.trainer.SGD(         cost=cost, parameters=parameters, update_equation=momentum_optimizer)     trainer.train(         reader=paddle.batch(             paddle.reader.shuffle(                 paddle.dataset.flowers.train(), buf_size=50000),             batch_size=BATCH),         num_passes=100,         event_handler=event_handler,         feeding={'image': 0,                  'label': 1})   if __name__ == '__main__':     main() 

經過微調我們的分類精度可以達到98% 左右。 現在我們有了一個.py 文件,表示模型的配置文件, 還有一個.tar.gz文件,表示模型的參數文件, 這兩個文件組成了***的一個模型。

Android 交叉編譯PaddlePaddle

我們需要讓PaddlePaddle運行在Android平臺,需要在linux或者mac下編譯出能在android或者ios平臺下運行的PaddlePaddle庫文件。這個過程為交叉編譯。

Paddle repo下提供了關于如何在android平臺下進行交叉編譯PaddlePaddle:
在鏈接相關頁面中提供了兩種方式, 一種是通過docker的方式,一種基于自定義獨立工具鏈編譯方式, 這兩種方式,我都進行了實驗,個人比較傾向于自定義的方式,因為比較直接透明。具體的使用方式如下:

一, 下載 Android NDK

wget -q https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip unzip -q android-ndk-r14b-linux-x86_64.zip 

假設當前目錄為 $CURRENT_DIR

二, 自定義工具鏈(--install-dir 表示安裝路徑,根據自己的需求設置,假設安裝路徑為$TOOLCHAIN_PATH )

$CURRENT_DIR/android-ndk-r14b-linux-x86_64/build/tools/make-standalone-toolchain.sh \         --arch=arm --platform=android-21 --install-dir=$TOOLCHAIN_PATH/v7_standalone_toolchain 

$TOOLCHAIN_PATH/v7_standalone_toolchain目錄下的內容為我們剛剛生成的工具鏈。

三, 交叉編譯PaddlePaddle

git clone https://github.com/PaddlePaddle/Paddle.git  cd Paddle #  建立docker 鏡像 mkdir install  mkdir build  cd build  cmake -DCMAKE_SYSTEM_NAME=Android \       -DANDROID_STANDALONE_TOOLCHAIN=$TOOLCHAIN_PATH/v7_standalone_toolchain \       -DANDROID_ABI=armeabi-v7a \       -DANDROID_ARM_NEON=ON \       -DANDROID_ARM_MODE=ON \       -DUSE_EIGEN_FOR_BLAS=ON \       -DCMAKE_INSTALL_PREFIX=./install \       -DWITH_C_API=ON \       -DWITH_SWIG_PY=OFF \        -DANDROID_TOOLCHAIN=gcc  \       ..  make -j `nproc` make install  

編譯結束后,會在 install/lib 目錄下生成動態庫libpaddle_capi_shared.so, 這個動態庫提供了模型程序調用PaddlePaddle的所有入口。

Android shell 下運行分類模型

一, 下載預測程序
該程序功能是用來測試模型的運行速度,主要包括加載模型,隨機化輸入,多次進行模型前向運算并統計時間,然后輸出模型的平均前向運行時間。

wget https://raw.githubusercontent.com/PaddlePaddle/Mobile/develop/benchmark/tool/C/inference.cc 

二, 將libpaddle_capi_shared.so copy至當前目錄
三, 編譯預測腳本

export PATH=$TOOLCHAIN_PATH/v7_standalone_toolchain/bin/:$PATH arm-linux-androideabi-g++ inference.cc -L./ -lpaddle_capi_shared -o inference -pie -fPIE 

我們可以看到,目錄中多了一個inference 可運行的二進制文件。

四,將之前提到的模型配置文件.py 和模型參數文件.tar.gz融合成一個文件

from paddle.utils.merge_model import merge_v2_model  # import your network configuration from mobilenet import mobile_net  net = mobile_net(3*224*224, 102, 1.0) param_file = './mobilenet_flowers102.tar.gz' output_file = './mobilenet.paddle'  merge_v2_model(net, param_file, output_file) 

五,安裝adb
linux 安裝,查看教程
mac 安裝,查看教程

adb 工具可以登陸android 手機的shell,讓我們像使用linux shell一樣來操作android。
adb安裝之后,我們使用數據線將android手機和電腦鏈接。

六, Android shell下運行Paddle分類模型

adb push inference libpaddle_capi_shared.so mobilenet.paddle /sdcard/test_mobilenet adb shell cd /sdcard/test_mobilenet export LD_LIBRARY_PATH=./ ./inference --merged_model ./mobilenet.paddle --input_size 150528 

其中input_size 表示模型輸入的大小,即3 * 224 * 224 等于 150528
如果看到以下的log,說明程序運行成功:

可以看到,paddle初始化的時間是1.78015ms, 加載模型的時間是113.749ms, 模型前向的時間是337.754ms.

 

責任編輯:張燕妮 來源: 簡書
相關推薦

2018-01-21 14:11:22

人工智能PaddlePaddlTensorflow

2018-01-26 14:29:01

框架

2018-03-26 20:49:08

圖像分類

2018-03-26 20:14:32

深度學習

2018-04-02 10:45:11

深度學習PaddlePaddl手寫數字識別

2018-03-27 16:24:12

PaddlePaddl

2018-04-04 10:19:32

深度學習

2018-03-26 20:00:32

深度學習

2018-03-09 22:56:52

PaddlePaddl

2018-02-07 16:13:00

深度學習

2018-03-26 20:07:25

深度學習

2018-03-26 21:31:30

深度學習

2018-03-27 13:18:17

教程

2019-03-26 16:05:10

AI

2018-04-09 10:20:32

深度學習

2018-02-07 17:32:54

情感分析

2018-03-27 13:26:51

教程

2018-03-26 21:26:50

深度學習

2017-02-09 16:39:54

百度

2019-07-06 10:18:07

人工智能
點贊
收藏

51CTO技術棧公眾號

黑人巨大精品欧美一区二区一视频| 欧美美女黄视频| 欧美精品尤物在线| 偷拍精品福利视频导航| 亚洲国产精品人久久电影| 青青九九免费视频在线| 国产精品高潮久久久久无| 欧洲黄色一级视频| 国产剧情在线观看一区二区| 日韩妆和欧美的一区二区| 亚洲小说欧美另类婷婷| 91久久精品美女高潮| 日韩精品水蜜桃| 国产精品爽黄69| 日韩精品影视| 91久久精品美女| 国产精品hd| 精品一区二区三区免费毛片| 国内自拍一区| 国产另类第一区| 激情欧美丁香| 国产精品久久久久久久久久久久冷 | 欧美剧情电影在线观看完整版免费励志电影 | 少妇高潮喷水在线观看| 国产不卡在线一区| 可以看毛片的网址| 国产日韩一级二级三级| 五月婷婷六月丁香激情| 亚洲黄色片在线观看| 玖草视频在线| 欧美三级中文字幕在线观看| 蜜芽在线免费观看| 亚洲精品一区二区三区影院| 深夜av在线| 久久天天躁狠狠躁夜夜av| 91精品短视频| 国产日韩欧美日韩| 亚洲国产第一| 亚洲一区在线免费| 成人sese在线| 二区中文字幕| 欧美性受xxxx黑人xyx性爽| 草莓福利社区在线| 伊人久久精品视频| 五月天亚洲一区| 国产精品国产精品| 国产在线看一区| 一区二区xxx| 色噜噜狠狠一区二区三区果冻| 亚洲羞羞网站| 久久久成人精品视频| 欧洲乱码伦视频免费| 欧美国产视频在线观看| 99精品视频中文字幕| eeuss在线观看| 欧美tickling挠脚心丨vk| 高清不卡一区| 91视频网页| 成人黄色国产精品网站大全在线免费观看 | 亚洲的天堂在线中文字幕| 欧美高清影院| 成人免费看片视频| 麻豆一区二区三| 尤蜜粉嫩av国产一区二区三区| 一区二区激情小说| 主播国产精品| 91精品国产高清久久久久久久久| 在线视频观看日韩| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 欧美日韩亚洲91| 日本一区二区三区视频在线| 成人av在线天堂| 成人精品免费看| av大片在线看| 色综合色综合久久综合频道88| 亚洲成人原创| 国内外成人免费在线视频| 日韩精品中文字幕在线一区| 偷拍精品福利视频导航| 中文字幕久精品免| 色综合久久久网| 6080成人| 亚洲在线视频一区二区| 亚洲国产欧美另类丝袜| 人人玩人人添人人澡欧美| 精品一区二区国产| 亚洲天堂中文字幕| 欧美韩国亚洲| 欧洲久久久久久| 欧美日韩亚洲91| 久久精品凹凸全集| www.18av.com| 日韩一区二区三区在线| 日韩精品欧美激情一区二区| aaa毛片在线观看| 亚洲毛片在线看| 亚洲一区免费| 色猫av在线| 国产成人一区二区三区小说 | 天天操天天色综合| 国内不卡的一区二区三区中文字幕 | 亚洲aa在线观看| 国产欧美一区二区三区网站| 操喷在线视频| 国产无套精品一区二区| 亚洲精品成人悠悠色影视| **欧美日韩在线| 992tv快乐视频| 欧美v日韩v国产v| 在线成人亚洲| 精品欧美不卡一区二区在线观看 | 国产精品无圣光一区二区| 亚洲少妇视频| 欧洲一区二区日韩在线视频观看免费| 午夜精品爽啪视频| 亚洲小说图片| 人人澡人一摸人人添| 欧美成在线观看| 久久夜色精品一区| 亚洲精品乱码日韩| 免费看日本毛片| 中文字幕精品在线| 国产精品亚洲人在线观看| 绿色成人影院| 天天做天天爱天天高潮| 精品国产91洋老外米糕| 日本怡春院一区二区| caoporn免费在线视频| 久久久久资源| 91精品黄色片免费大全| 国产日韩欧美一区在线| 五月天婷婷在线视频| 久久国产主播精品| 制服丝袜国产精品| 日韩高清电影一区| 黄页在线观看免费| 在线视频亚洲自拍| 亚洲摸下面视频| av激情综合网| 中文字幕视频精品一区二区三区| 成人在线免费播放视频| 欧美国产乱视频| 亚洲天堂网中文字| 欧美r级电影| 91高清在线视频| 天堂√在线观看一区二区| 亚洲精品国产精品国自产在线| 激情欧美日韩一区二区| 日韩欧美一区二区三区在线观看| 成人性生活视频免费看| 九九久久久久99精品| 亚洲少妇30p| 久久精品亚洲欧美日韩精品中文字幕| 美州a亚洲一视本频v色道| 蜜桃精品久久久久久久免费影院| 亚洲成人网在线| 久久久美女毛片| 精品一二三区| 一区二区三区视频在线观看视频| 婷婷精品国产一区二区三区日韩| 亚洲男人av在线| 国产精品美女视频| 中文字幕日韩欧美精品高清在线| 欧美日韩欧美| 999一区二区三区| 性欧美激情精品| 在线视频中文字幕一区二区| 久久福利视频一区二区| 亚洲国产欧美在线观看| 精品资源在线看| 四虎精品欧美一区二区免费| 91精品国产91久久久| 欧美视频在线观看一区二区| 成人亚洲一区二区一| 日韩1区在线| freexxx性亚洲精品| 在线观看国产一级片| 国产另类第一区| 按摩亚洲人久久| 精品美女永久免费视频| 精品制服美女久久| 欧美理论视频| 欧美大电影免费观看| 午夜影院免费看| 自拍偷拍视频在线| 国产精品18久久久久久麻辣| 精品99久久久久久| 亚洲精品久久嫩草网站秘色| 免费观看在线综合色| 九九久久精品| 电影一区二区三| 黄色电影免费在线看| 国产视频九色蝌蚪| 国产精品手机在线| 欧美剧在线观看| 欧美精品一级二级| 国产精品乱子久久久久| 美国一区二区三区在线播放| 欧美一级本道电影免费专区| 日本精品裸体写真集在线观看|