日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

基于Paddle Lite在Android手机上实现图像分类

發(fā)布時(shí)間:2023/12/20 Android 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Paddle Lite在Android手机上实现图像分类 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文博客:Doi技術(shù)團(tuán)隊(duì)
鏈接地址:https://blog.doiduoyi.com/authors/1584446358138
初心:記錄優(yōu)秀的Doi技術(shù)團(tuán)隊(duì)學(xué)習(xí)經(jīng)歷
本文鏈接:基于Paddle Lite在Android手機(jī)上實(shí)現(xiàn)圖像分類

前言

Paddle Lite是飛槳基于Paddle Mobile全新升級推出的端側(cè)推理引擎,在多硬件、多平臺以及硬件混合調(diào)度的支持上更加完備,為包括手機(jī)在內(nèi)的端側(cè)場景的AI應(yīng)用提供高效輕量的推理能力,有效解決手機(jī)算力和內(nèi)存限制等問題,致力于推動AI應(yīng)用更廣泛的落地。

本教程源碼地址:https://github.com/yeyupiaoling/ClassificationForAndroid/tree/master/PaddleLiteClassification

模型轉(zhuǎn)換

Paddle Lite使用的是PaddlePaddle保存的預(yù)測模型,如果不了解PaddlePaddle的模型保存,可以參考《模型的保存與使用》這篇文章。下面簡單介紹一下保存模型的方式。通過使用fluid.io.save_inference_model()接口可以保存預(yù)測模型,預(yù)測模型值保存推所需的網(wǎng)絡(luò),不會保存損失函數(shù)等。當(dāng)使用model_filename和params_filename指定參數(shù)之后,保存的預(yù)測模型只有兩個(gè)文件,這種稱為合并模型,否則會以網(wǎng)絡(luò)結(jié)構(gòu)命名將大量的參數(shù)文件保存在dirname指定的路徑下,這種叫做非合并模型。例如通過以下的代碼片段保存的預(yù)測模型為model和params,這兩個(gè)模型將會用于下一步的模型轉(zhuǎn)換。

import paddle.fluid as fluid# 定義網(wǎng)絡(luò) image = fluid.layers.data(name='img', shape=[1, 28, 28], dtype='float32') label = fluid.layers.data(name='label', shape=[1], dtype='int64') feeder = fluid.DataFeeder(feed_list=[image, label], place=fluid.CPUPlace()) predict = fluid.layers.fc(input=image, size=10, act='softmax')loss = fluid.layers.cross_entropy(input=predict, label=label) avg_loss = fluid.layers.mean(loss)exe = fluid.Executor(fluid.CPUPlace()) exe.run(fluid.default_startup_program())# 數(shù)據(jù)輸入及訓(xùn)練過程# 保存預(yù)測模型 fluid.io.save_inference_model(dirname="mobilenet_v2/",feeded_var_names=[image.name],target_vars=[predict],executor=exe,model_filename="model", params_filename="params")

opt轉(zhuǎn)換

使用fluid.io.save_inference_model()接口可以保存預(yù)測模型并不能直接使用,還需要通過opt工具轉(zhuǎn)換,這個(gè)工具可以下載Paddle Lite預(yù)編譯的,或者通過源碼編譯,opt下載地址:https://paddle-lite.readthedocs.io/zh/latest/user_guides/release_lib.html#opt,關(guān)于如何編譯opt請看下一部分。

通過以下命令即即可把預(yù)測模型轉(zhuǎn)變成Paddle Lite使用的模型,其中輸出的mobilenet_v2.nb就是所需的模型文件,因?yàn)檗D(zhuǎn)換之后,模型可以在valid_targets指定的環(huán)境上加速預(yù)測,所以變得非常牛B,因此后綴名為nb(開個(gè)玩笑)。

./opt \--model_file=mobilenet_v2/model \--param_file=mobilenet_v2/params \--optimize_out_type=naive_buffer \--optimize_out=mobilenet_v2 \--valid_targets=arm opencl \--record_tailoring_info=false

上面參數(shù)的說明如下表所示,其中需要關(guān)注的是valid_targets參數(shù),要看模型用著上面設(shè)備上,通過指定backend可以使用更好的加速方式。有些讀取可能會出現(xiàn)這樣的疑問,上面使用的是合并的模型,沒合并的模型怎樣用呢,其實(shí)很簡單,只有設(shè)置--model_dir,忽略--model_file和--param_file就可以了。

參數(shù)說明
–model_dir待優(yōu)化的PaddlePaddle模型(非combined形式)的路徑
–model_file待優(yōu)化的PaddlePaddle模型(combined形式)的網(wǎng)絡(luò)結(jié)構(gòu)文件路徑。
–param_file待優(yōu)化的PaddlePaddle模型(combined形式)的權(quán)重文件路徑。
–optimize_out_type輸出模型類型,目前支持兩種類型:protobuf和naive_buffer,其中naive_buffer是一種更輕量級的序列化/反序列化實(shí)現(xiàn)。若您需要在mobile端執(zhí)行模型預(yù)測,請將此選項(xiàng)設(shè)置為naive_buffer。默認(rèn)為protobuf。
–optimize_out優(yōu)化模型的輸出路徑。
–valid_targets指定模型可執(zhí)行的backend,默認(rèn)為arm。目前可支持x86、arm、opencl、npu、xpu,可以同時(shí)指定多個(gè)backend(以空格分隔),Model Optimize Tool將會自動選擇最佳方式。如果需要支持華為NPU(Kirin 810/990 Soc搭載的達(dá)芬奇架構(gòu)NPU),應(yīng)當(dāng)設(shè)置為npu, arm。
–record_tailoring_info當(dāng)使用 根據(jù)模型裁剪庫文件 功能時(shí),則設(shè)置該選項(xiàng)為true,以記錄優(yōu)化后模型含有的kernel和OP信息,默認(rèn)為false。

源碼編譯opt

上面所使用的opt工具是通過下載得到的,如果讀者喜歡折騰,可以嘗試自行源碼編譯編譯,首先是環(huán)境搭建,環(huán)境搭建有兩種方式,第一種是使用Docker,第二種是本地搭建環(huán)境。

  • 使用Docker容器,只要3條命令即可搭建環(huán)境,這個(gè)也是最簡單的方式。
  • # 拉取Paddle Lite鏡像 docker pull paddlepaddle/paddle-lite:2.0.0_beta # 克隆源碼 git clone https://github.com/PaddlePaddle/Paddle-Lite.git# 進(jìn)行Paddle Lite容器 docker run -it \--name paddlelite_docker \-v $PWD/Paddle-Lite:/Paddle-Lite \--net=host \paddlepaddle/paddle-lite /bin/bash
  • 在Ubuntu本地搭建Paddle Lite編譯環(huán)境,通過執(zhí)行以下命令在Ubuntu本地完成環(huán)境搭建。
  • # 1. 安裝基本環(huán)境 apt update apt-get install -y --no-install-recommends \gcc g++ git make wget python unzip adb curl# 2. 安裝Java環(huán)境 apt-get install -y default-jdk# 3. 安裝Cmake wget -c https://mms-res.cdn.bcebos.com/cmake-3.10.3-Linux-x86_64.tar.gz && \tar xzf cmake-3.10.3-Linux-x86_64.tar.gz && \mv cmake-3.10.3-Linux-x86_64 /opt/cmake-3.10 && \ ln -s /opt/cmake-3.10/bin/cmake /usr/bin/cmake && \ln -s /opt/cmake-3.10/bin/ccmake /usr/bin/ccmake# 4. 安裝NDK cd /tmp && curl -O https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip cd /opt && unzip /tmp/android-ndk-r17c-linux-x86_64.zip# 5. 添加環(huán)境變量 echo "export NDK_ROOT=/opt/android-ndk-r17c" >> ~/.bashrc source ~/.bashrc

    在以上的環(huán)境中編譯opt工具,執(zhí)行以下命令即可完成編譯,編譯完成之后,在build.opt/lite/api/下的可執(zhí)行文件opt。

    cd Paddle-Lite && ./lite/tools/build.sh build_optimize_tool

    Paddle Lite的Android預(yù)測庫

    Paddle Lite的Android預(yù)測庫也可以通過下載預(yù)編譯的,或者通過源碼編譯。下載地址為:,注意本教程使用的是靜態(tài)庫的方式,而且使用的是圖像識別的,所以需要選擇的下載庫為with_extra=ON,arm_stl=c++_static,with_cv=ON的armv7和armv8庫。下載解壓之后得到的目錄結(jié)構(gòu)如下,其中我們所需的在java的jar和so動態(tài)庫,注意32位的so動態(tài)庫放在Android的armeabi-v7a目錄,64位的so動態(tài)庫放在Android的arm64-v8a目錄,jar包只取一個(gè)就好。

    inference_lite_lib.android.armv8/ |-- cxx C++ 預(yù)測庫和頭文件 | |-- include C++ 頭文件 | | |-- paddle_api.h | | |-- paddle_image_preprocess.h | | |-- paddle_lite_factory_helper.h | | |-- paddle_place.h | | |-- paddle_use_kernels.h | | |-- paddle_use_ops.h | | `-- paddle_use_passes.h | `-- lib C++預(yù)測庫 | |-- libpaddle_api_light_bundled.a C++靜態(tài)庫 | `-- libpaddle_light_api_shared.so C++動態(tài)庫 |-- java Java預(yù)測庫 | |-- jar | | `-- PaddlePredictor.jar | |-- so | | `-- libpaddle_lite_jni.so | `-- src |-- demo C++和Java示例代碼 | |-- cxx C++ 預(yù)測庫demo | `-- java Java 預(yù)測庫demo

    同樣如果讀者喜歡折騰,可以嘗試自行源碼編譯編譯,在上面編譯opt工具時(shí)搭建的環(huán)境上編譯Paddle Lite的Android預(yù)測庫。在Paddle Lite源碼的根目錄下執(zhí)行以下兩條命令編譯Paddle Lite的Android預(yù)測庫。

    ./lite/tools/build_android.sh --arch=armv7 --with_extra=ON ./lite/tools/build_android.sh --arch=armv8 --with_extra=ON

    完成編譯之后,會在Paddle-Lite/build.lite.android.armv7.gcc/inference_lite_lib.android.armv7和Paddle-Lite/build.lite.android.armv8.gcc/inference_lite_lib.android.armv8目錄生成所以的jar和動態(tài)庫,所在位置和使用查看上面的下載Android預(yù)測庫的介紹。

    開發(fā)Android項(xiàng)目

    創(chuàng)建一個(gè)Android項(xiàng)目,在app/libs目錄下存放上一步編譯得到的PaddlePredictor.jar,并添加到app庫中,添加方式可以是選擇這個(gè)jar包,右鍵選擇add as Librarys,或者在app/build.gradle添加以下代碼結(jié)果都是一樣的。

    implementation files('libs\\PaddlePredictor.jar')

    然后在app/src/main/jniLibs下存放下載或者編譯得到的動態(tài)庫,最好把32位和64為的動態(tài)庫libpaddle_lite_jni.so都添加進(jìn)去,分別是armeabi-v7a目錄和arm64-v8a目錄。

    復(fù)制轉(zhuǎn)換的預(yù)測模型到app/src/main/assets目錄下,還有類別的標(biāo)簽,每一行對應(yīng)一個(gè)標(biāo)簽名稱。

    Paddle Lite工具

    編寫一個(gè)PaddleLiteClassification工具類,關(guān)于Paddle Lite的操作都在這里完成,如加載模型、預(yù)測。在構(gòu)造方法中,通過參數(shù)傳遞的模型路徑加載模型,在加載模型的時(shí)候配置預(yù)測信息,如預(yù)測時(shí)使用的線程數(shù)量,使用計(jì)算資源的模式,要注意的是圖像預(yù)處理的縮放比例scale,均值inputMean和標(biāo)準(zhǔn)差inputStd,因?yàn)樵谟?xùn)練的時(shí)候圖像預(yù)處理可能不一樣的,有些讀者出現(xiàn)在電腦上準(zhǔn)確率很高,但在手機(jī)上準(zhǔn)確率很低,多數(shù)情況下就是這個(gè)圖像預(yù)處理做得不對。

    public class PaddleLiteClassification {private static final String TAG = PaddleLiteClassification.class.getName();private PaddlePredictor paddlePredictor;private Tensor inputTensor;private long[] inputShape = new long[]{1, 3, 224, 224};private static float[] scale = new float[]{1.0f / 255.0f, 1.0f / 255.0f, 1.0f / 255.0f};private static float[] inputMean = new float[]{0.485f, 0.456f, 0.406f};private static float[] inputStd = new float[]{0.229f, 0.224f, 0.225f};private static final int NUM_THREADS = 4;/*** @param modelPath model path*/public PaddleLiteClassification(String modelPath) throws Exception {File file = new File(modelPath);if (!file.exists()) {throw new Exception("model file is not exists!");}try {MobileConfig config = new MobileConfig();config.setModelFromFile(modelPath);config.setThreads(NUM_THREADS);config.setPowerMode(PowerMode.LITE_POWER_HIGH);paddlePredictor = PaddlePredictor.createPaddlePredictor(config);inputTensor = paddlePredictor.getInput(0);inputTensor.resize(inputShape);} catch (Exception e) {e.printStackTrace();throw new Exception("load model fail!");}}

    為了兼容圖片路徑和Bitmap格式的圖片預(yù)測,這里創(chuàng)建了兩個(gè)重載方法,它們都是通過調(diào)用predict()

    public float[] predictImage(String image_path) throws Exception {if (!new File(image_path).exists()) {throw new Exception("image file is not exists!");}FileInputStream fis = new FileInputStream(image_path);Bitmap bitmap = BitmapFactory.decodeStream(fis);float[] result = predictImage(bitmap);if (bitmap.isRecycled()) {bitmap.recycle();}return result;}public float[] predictImage(Bitmap bitmap) throws Exception {return predict(bitmap);}

    這里創(chuàng)建一個(gè)獲取最大概率值,并把下標(biāo)返回的方法,其實(shí)就是獲取概率最大的預(yù)測標(biāo)簽。

    public static int getMaxResult(float[] result) {float probability = 0;int r = 0;for (int i = 0; i < result.length; i++) {if (probability < result[i]) {probability = result[i];r = i;}}return r;}

    在數(shù)據(jù)輸入之前,需要對數(shù)據(jù)進(jìn)行預(yù)處理,輸入的數(shù)據(jù)是一個(gè)浮點(diǎn)數(shù)組,但是目前輸入的是一個(gè)Bitmap的圖片,所以需要把Bitmap轉(zhuǎn)換為浮點(diǎn)數(shù)組,在轉(zhuǎn)換過程中需要對圖像做相應(yīng)的預(yù)處理,如乘比例,減均值,除以方差。為了避免輸入的圖像過大,圖像預(yù)處理變慢,通常在元數(shù)據(jù)預(yù)處理之前,需要對圖像進(jìn)行壓縮,使用getScaleBitmap()方法可以壓縮等比例壓縮圖像。

    private static float[] getScaledMatrix(Bitmap bitmap, int desWidth, int desHeight) {float[] dataBuf = new float[3 * desWidth * desHeight];int rIndex;int gIndex;int bIndex;int[] pixels = new int[desWidth * desHeight];Bitmap bm = Bitmap.createScaledBitmap(bitmap, desWidth, desHeight, false);bm.getPixels(pixels, 0, desWidth, 0, 0, desWidth, desHeight);int j = 0;int k = 0;for (int i = 0; i < pixels.length; i++) {int clr = pixels[i];j = i / desHeight;k = i % desWidth;rIndex = j * desWidth + k;gIndex = rIndex + desHeight * desWidth;bIndex = gIndex + desHeight * desWidth;// 轉(zhuǎn)成RGB通道順序dataBuf[rIndex] = (((clr & 0x00ff0000) >> 16) * scale[0] - inputMean[0]) / inputStd[0];dataBuf[gIndex] = (((clr & 0x0000ff00) >> 8) * scale[1] - inputMean[1]) / inputStd[1];dataBuf[bIndex] = (((clr & 0x000000ff)) * scale[2] - inputMean[2]) / inputStd[2];}if (bm.isRecycled()) {bm.recycle();}return dataBuf;}private Bitmap getScaleBitmap(Bitmap bitmap) {int bmpWidth = bitmap.getWidth();int bmpHeight = bitmap.getHeight();int size = (int) inputShape[2];float scaleWidth = (float) size / bitmap.getWidth();float scaleHeight = (float) size / bitmap.getHeight();Matrix matrix = new Matrix();matrix.postScale(scaleWidth, scaleHeight);return Bitmap.createBitmap(bitmap, 0, 0, bmpWidth, bmpHeight, matrix, true);}

    這個(gè)方法就是Paddle Lite執(zhí)行預(yù)測的最后一步,使用inputTensor.setData(inputData)輸入預(yù)測圖像數(shù)據(jù),通過執(zhí)行paddlePredictor.run()對輸入的數(shù)據(jù)進(jìn)行預(yù)測并得到預(yù)測結(jié)果,預(yù)測結(jié)果通過paddlePredictor.getOutput(0)提前出來,最后通過解析獲取到最大的概率的預(yù)測標(biāo)簽。到這里Paddle Lite的工具就完成了。

    private float[] predict(Bitmap bmp) throws Exception {Bitmap b = getScaleBitmap(bmp);float[] inputData = getScaledMatrix(b, (int) inputShape[2], (int) inputShape[3]);b.recycle();bmp.recycle();inputTensor.setData(inputData);try {paddlePredictor.run();} catch (Exception e) {throw new Exception("predict image fail! log:" + e);}Tensor outputTensor = paddlePredictor.getOutput(0);float[] result = outputTensor.getFloatData();Log.d(TAG, Arrays.toString(result));int l = getMaxResult(result);return new float[]{l, result[l]};}

    選擇圖片預(yù)測

    本教程會有兩個(gè)頁面,一個(gè)是選擇圖片進(jìn)行預(yù)測的頁面,另一個(gè)是使用相機(jī)實(shí)時(shí)預(yù)測并顯示預(yù)測結(jié)果。以下為activity_main.xml的代碼,通過按鈕選擇圖片,并在該頁面顯示圖片和預(yù)測結(jié)果。

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><ImageViewandroid:id="@+id/image_view"android:layout_width="match_parent"android:layout_height="400dp" /><TextViewandroid:id="@+id/result_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/image_view"android:text="識別結(jié)果"android:textSize="16sp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:orientation="horizontal"><Buttonandroid:id="@+id/select_img_btn"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="選擇照片" /><Buttonandroid:id="@+id/open_camera"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="實(shí)時(shí)預(yù)測" /></LinearLayout></RelativeLayout>

    在MainActivity.java中,進(jìn)入到頁面我們就要先加載模型,我們是把模型放在Android項(xiàng)目的assets目錄的,但是Tensorflow Lite并不建議直接在assets讀取模型,所以我們需要把模型復(fù)制到一個(gè)緩存目錄,然后再從緩存目錄加載模型,同時(shí)還有讀取標(biāo)簽名,標(biāo)簽名稱按照訓(xùn)練的label順序存放在assets的label_list.txt,以下為實(shí)現(xiàn)代碼。

    classNames = Utils.ReadListFromFile(getAssets(), "label_list.txt"); String classificationModelPath = getCacheDir().getAbsolutePath() + File.separator + "mobilenet_v2.nb"; Utils.copyFileFromAsset(MainActivity.this, "mobilenet_v2.nb", classificationModelPath); try {paddleLiteClassification = new PaddleLiteClassification(classificationModelPath);Toast.makeText(MainActivity.this, "模型加載成功!", Toast.LENGTH_SHORT).show(); } catch (Exception e) {Toast.makeText(MainActivity.this, "模型加載失敗!", Toast.LENGTH_SHORT).show();e.printStackTrace();finish(); }

    添加兩個(gè)按鈕點(diǎn)擊事件,可以選擇打開相冊讀取圖片進(jìn)行預(yù)測,或者打開另一個(gè)Activity進(jìn)行調(diào)用攝像頭實(shí)時(shí)識別。

    Button selectImgBtn = findViewById(R.id.select_img_btn); Button openCamera = findViewById(R.id.open_camera); imageView = findViewById(R.id.image_view); textView = findViewById(R.id.result_text); selectImgBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 打開相冊Intent intent = new Intent(Intent.ACTION_PICK);intent.setType("image/*");startActivityForResult(intent, 1);} }); openCamera.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 打開實(shí)時(shí)拍攝識別頁面Intent intent = new Intent(MainActivity.this, CameraActivity.class);startActivity(intent);} });

    當(dāng)打開相冊選擇照片之后,回到原來的頁面,在下面這個(gè)回調(diào)方法中獲取選擇圖片的Uri,通過Uri可以獲取到圖片的絕對路徑。如果Android8以上的設(shè)備獲取不到圖片,需要在AndroidManifest.xml配置文件中的application添加android:requestLegacyExternalStorage="true"。拿到圖片路徑之后,調(diào)用PaddleLiteClassification類中的predictImage()方法預(yù)測并獲取預(yù)測值,在頁面上顯示預(yù)測的標(biāo)簽、對應(yīng)標(biāo)簽的名稱、概率值和預(yù)測時(shí)間。

    @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);String image_path;if (resultCode == Activity.RESULT_OK) {if (requestCode == 1) {if (data == null) {Log.w("onActivityResult", "user photo data is null");return;}Uri image_uri = data.getData();image_path = getPathFromURI(MainActivity.this, image_uri);try {// 預(yù)測圖像FileInputStream fis = new FileInputStream(image_path);imageView.setImageBitmap(BitmapFactory.decodeStream(fis));long start = System.currentTimeMillis();float[] result = paddleLiteClassification.predictImage(image_path);long end = System.currentTimeMillis();String show_text = "預(yù)測結(jié)果標(biāo)簽:" + (int) result[0] +"\n名稱:" + classNames.get((int) result[0]) +"\n概率:" + result[1] +"\n時(shí)間:" + (end - start) + "ms";textView.setText(show_text);} catch (Exception e) {e.printStackTrace();}}} }

    上面獲取的Uri可以通過下面這個(gè)方法把Url轉(zhuǎn)換成絕對路徑。

    // get photo from Uri public static String getPathFromURI(Context context, Uri uri) {String result;Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);if (cursor == null) {result = uri.getPath();} else {cursor.moveToFirst();int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);result = cursor.getString(idx);cursor.close();}return result; }

    攝像頭實(shí)時(shí)預(yù)測

    在調(diào)用相機(jī)實(shí)時(shí)預(yù)測我就不再介紹了,原理都差不多,具體可以查看https://github.com/yeyupiaoling/ClassificationForAndroid/tree/master/PaddleLiteClassification中的源代碼。核心代碼如下,創(chuàng)建一個(gè)子線程,子線程中不斷從攝像頭預(yù)覽的AutoFitTextureView上獲取圖像,并執(zhí)行預(yù)測,并在頁面上顯示預(yù)測的標(biāo)簽、對應(yīng)標(biāo)簽的名稱、概率值和預(yù)測時(shí)間。每一次預(yù)測完成之后都立即獲取圖片繼續(xù)預(yù)測,只要預(yù)測速度夠快,就可以看成實(shí)時(shí)預(yù)測。

    private Runnable periodicClassify =new Runnable() {@Overridepublic void run() {synchronized (lock) {if (runClassifier) {// 開始預(yù)測前要判斷相機(jī)是否已經(jīng)準(zhǔn)備好if (getApplicationContext() != null && mCameraDevice != null && tfLiteClassificationUtil != null) {predict();}}}if (mInferThread != null && mInferHandler != null && mCaptureHandler != null && mCaptureThread != null) {mInferHandler.post(periodicClassify);}}};// 預(yù)測相機(jī)捕獲的圖像 private void predict() {// 獲取相機(jī)捕獲的圖像Bitmap bitmap = mTextureView.getBitmap();try {// 預(yù)測圖像long start = System.currentTimeMillis();float[] result = paddleLiteClassification.predictImage(bitmap);long end = System.currentTimeMillis();String show_text = "預(yù)測結(jié)果標(biāo)簽:" + (int) result[0] +"\n名稱:" + classNames.get((int) result[0]) +"\n概率:" + result[1] +"\n時(shí)間:" + (end - start) + "ms";textView.setText(show_text);} catch (Exception e) {e.printStackTrace();} }

    本項(xiàng)目中使用的了讀取圖片的權(quán)限和打開相機(jī)的權(quán)限,所以不要忘記在AndroidManifest.xml添加以下權(quán)限申請。

    <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    如果是Android 6 以上的設(shè)備還要動態(tài)申請權(quán)限。

    // check had permissionprivate boolean hasPermission() {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {return checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED &&checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;} else {return true;}}// request permissionprivate void requestPermission() {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {requestPermissions(new String[]{Manifest.permission.CAMERA,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);}}

    選擇圖片識別效果圖:

    相機(jī)實(shí)時(shí)識別效果圖:

    總結(jié)

    以上是生活随笔為你收集整理的基于Paddle Lite在Android手机上实现图像分类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    人人干97 | 狠狠色网 | 97影视 | 午夜久久久久久久 | 黄色一级在线免费观看 | 久草视频免费播放 | 国产精品片 | 欧美视频日韩视频 | 国内视频在线 | 欧美中文字幕久久 | 麻豆91在线看 | 视频三区| 99久久er热在这里只有精品15 | 久久精品视频中文字幕 | 欧洲激情综合 | 一区在线免费观看 | 国产精品美女久久久久久久 | 日本99久久 | 欧美最猛性xxx | 久草在线中文888 | 欧美9999| 97免费在线观看 | 毛片基地黄久久久久久天堂 | 日韩影片在线观看 | 91精品国产乱码久久 | 日韩精品无码一区二区三区 | 啪啪免费观看网站 | 成人av网址大全 | 狠狠躁天天躁 | 日日夜夜精品 | 九色免费视频 | av在线播放快速免费阴 | 在线免费av电影 | 热久久视久久精品18亚洲精品 | 欧美久久久一区二区三区 | 在线免费看黄网站 | 国产系列 在线观看 | 免费黄色在线网站 | 狠狠干夜夜 | 91爱爱网址 | 亚洲网站在线看 | 久久av一区二区三区亚洲 | 91高清免费在线观看 | 欧美日韩午夜爽爽 | 亚洲免费国产视频 | 精品亚洲欧美无人区乱码 | 少妇bbbb | 欧美色图30p | 久久影视中文字幕 | 国产亚州av | 精品国产一区二区三区在线 | 日韩免费电影一区二区三区 | 伊人婷婷在线 | 国产一区二区在线精品 | 国产成人a v电影 | 成年美女黄网站色大片免费看 | 久久在线观看 | 色是在线视频 | 美女网站视频色 | av在线免费网站 | 91av在线视频免费观看 | 一区二区三区精品在线视频 | 国产精品免费av | 成人久久久久久久久久 | 最近免费中文视频 | 国产精品自在线拍国产 | 69国产成人综合久久精品欧美 | 蜜桃av人人夜夜澡人人爽 | 日韩美女高潮 | 日韩在线短视频 | 欧美在线观看视频一区二区三区 | 日韩精品一区二区三区免费视频观看 | 国产精品1区2区 | 91视频久久久 | 日日干 天天干 | 黄色av一区二区 | 日本不卡一区二区三区在线观看 | 91传媒在线 | 婷婷六月在线 | 国产精品美女久久久久久网站 | 色婷婷www | 免费在线观看成人 | 亚洲欧洲国产日韩精品 | av在线观| 久久99精品国产麻豆宅宅 | 亚洲电影一区二区 | 日韩欧美一区二区在线观看 | 国产精品久久久久9999吃药 | 精品久久久久久久久久久久 | 福利片免费看 | 97精品国产一二三产区 | 国产专区欧美专区 | 日韩免费一区 | 免费观看91 | 久久国产精品99久久久久久老狼 | 夜夜干夜夜 | 国产美女被啪进深处喷白浆视频 | 国产精品日韩久久久久 | 狠狠色噜噜狠狠狠狠2021天天 | 香蕉一区| 亚洲狠狠婷婷综合久久久 | 欧美一级黄大片 | 婷婷色综合网 | 免费高清看电视网站 | 午夜在线观看影院 | 色网站免费在线看 | 亚洲黄色一级大片 | 午夜精品电影一区二区在线 | 激情文学综合丁香 | 日日激情| 久久小视频 | 欧美在线free| 香蕉视频国产在线观看 | 黄色免费网站下载 | 狠狠躁日日躁狂躁夜夜躁 | 婷婷色影院| 免费看日韩片 | 日韩免费在线观看视频 | 国产成人综合在线观看 | 亚洲美女免费精品视频在线观看 | 99操视频| 白丝av在线 | 日韩午夜电影 | www.五月天婷婷 | 日日干日日| 97色在线观看免费视频 | 99精品一区二区三区 | 国内精品久久久精品电影院 | 黄网在线免费观看 | 黄色一区二区在线观看 | 婷婷激情五月综合 | 午夜av电影| 亚洲午夜久久久综合37日本 | 久久综合毛片 | 日韩视频一区二区 | 国产91亚洲精品 | 香蕉视频在线看 | 特级a老妇做爰全过程 | 91av视频在线观看 | 成人久久电影 | 欧美在线91| 久久免费观看视频 | 国产成人精品一区二区三区网站观看 | 五月婷婷影视 | 成人精品99 | 久久日本视频 | avsex| 综合伊人av | 成人在线视频在线观看 | 久久这里| av蜜桃在线 | 99精品在线播放 | 亚洲黄色成人 | 午夜在线免费观看视频 | www.人人草 | 国产三级精品三级在线观看 | 色香蕉在线 | 国产一区在线免费 | 日本精品视频网站 | 国产视频欧美视频 | 狠狠色伊人亚洲综合网站色 | 狠狠色香婷婷久久亚洲精品 | 国产在线美女 | 日日草视频 | www成人av| 人人射人人| 欧美性久久久 | 亚洲婷婷免费 | 亚洲欧美国产精品18p | 丁香视频五月 | 综合网成人 | 91大神免费在线观看 | 中文字幕中文字幕在线中文字幕三区 | 中文字幕在线专区 | a天堂最新版中文在线地址 久久99久久精品国产 | 国产拍在线 | 九色福利视频 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 日本激情视频中文字幕 | 成人av在线一区二区 | 国产精品精品久久久久久 | 人人狠狠综合久久亚洲婷 | 亚洲国产精品日韩 | 久久久久亚洲精品中文字幕 | 成人网页在线免费观看 | 狠狠干成人 | 一区二区三区观看 | 日韩精品综合在线 | 在线观看视频在线观看 | 美女国内精品自产拍在线播放 | 最近免费中文字幕mv在线视频3 | 国产麻豆精品95视频 | 免费情趣视频 | 免费在线观看午夜视频 | 五月天激情综合 | 国产精品专区h在线观看 | 久久久wwww| 日b黄色片| 人人澡澡人人 | 夜色在线资源 | av电影在线不卡 | 7799av | 欧洲精品久久久久毛片完整版 | 最新午夜 | 成人久久 | 久精品在线 | 蜜臀久久99精品久久久无需会员 | 亚洲精品视频一 | 黄色毛片网站在线观看 | 9色在线视频| 久久人人爽人人爽人人片av软件 | 久久免费精品视频 | 精品伊人久久久 | 成+人+色综合 | 日韩在线观看视频网站 | 夜又临在线观看 | 国产一级在线 | 最近中文字幕完整高清 | 黄色天堂在线观看 | 不卡国产在线 | 天天色棕合合合合合合 | 国产精品v欧美精品v日韩 | 久草免费福利在线观看 | 亚洲欧洲国产日韩精品 | 五月天久久婷 | 欧美亚洲另类在线视频 | 久久这里只有精品1 | 成人资源站 | 超碰在线公开免费 | 国产精品乱码久久久久久1区2区 | 天天超碰 | 福利电影久久 | 欧美精品xxx | 最新三级在线 | 狠狠色丁香久久综合网 | 成人国产在线 | 美女视频黄免费网站 | 永久免费毛片 | 9幺看片 | 999亚洲国产996395 | 日韩精品一卡 | 国产精品中文字幕av | 欧美在线99 | 波多野结衣在线视频一区 | 97成人精品区在线播放 | 狠狠狠狠狠狠狠狠 | 97视频免费播放 | 人人狠狠综合久久亚洲 | 久久精品99国产 | 天天干天天草 | 91在线一区二区 | 一区二区欧美日韩 | 久久久久精 | 日本最新高清不卡中文字幕 | 一级黄色免费网站 | 日韩影视大全 | 丁香九月激情 | 日韩欧美精品在线观看视频 | 成人黄色免费在线观看 | 精品一区二区免费视频 | 午夜久久网站 | 欧美一级在线看 | www色com| 亚洲精品免费观看视频 | 日韩av免费一区 | 91av短视频 | 国产精品 久久 | 久久九九影院 | 欧美性生活免费看 | 日韩av资源在线观看 | 区一区二区三在线观看 | 国产精品久久人 | 麻豆视频在线观看 | 久久99精品一区二区三区三区 | 伊人官网| 911国产精品 | 成人小视频在线免费观看 | 日韩激情视频在线观看 | www.天天色.com| 在线 影视 一区 | 99久久综合狠狠综合久久 | av电影在线免费 | 视频一区二区视频 | 色婷婷综合五月 | 91一区一区三区 | 国产亚洲片 | 日本黄色免费网站 | 这里只有精品视频在线观看 | 成人免费在线视频观看 | 久久一区二区三区四区 | 麻豆精品在线视频 | 伊人狠狠色丁香婷婷综合 | av一区在线 | 国产一区欧美一区 | 久久99国产综合精品 | 国产精品原创av片国产免费 | 夜夜高潮夜夜爽国产伦精品 | 永久av免费在线观看 | 欧美三级免费 | 婷婷色网站| 国产又黄又爽无遮挡 | 天天射网 | 日日干天天射 | 欧美日韩18 | 一区二区三区电影在线播 | www日韩在线观看 | 欧美激情视频一二区 | 欧美了一区在线观看 | 免费人成在线观看网站 | 日韩午夜小视频 | 中文字幕乱偷在线 | 国产一区二区三区午夜 | 欧美日韩三级 | a'aaa级片在线观看 | 天天躁日日躁狠狠 | www免费网站在线观看 | 久久精品2 | 国产视频在线播放 | 丁香午夜 | 欧美性脚交| 国产一级视频在线 | 国产一级二级在线观看 | av黄色一级片 | 亚洲精品乱码久久 | 91九色网站 | 麻豆影视在线播放 | 色综合欧洲 | 91传媒在线播放 | 日本在线观看视频一区 | 啪啪免费试看 | 日韩高清一区在线 | 日本黄网站 | 免费观看国产精品视频 | 一级免费片| 欧美日韩色婷婷 | 96久久久 | 蜜桃av人人夜夜澡人人爽 | 国产亚州av | 天天操狠狠操 | 中文字幕一区二区三区四区视频 | 欧美韩日在线 | 久热超碰 | 日日摸日日爽 | 男女激情麻豆 | 成人免费视频播放 | 99热在| 久草电影在线观看 | 国产成人精品aaa | 久久久免费精品国产一区二区 | 五月激情丁香婷婷 | 中文字幕免费观看全部电影 | 亚洲成人中文在线 | 九九热精品国产 | 中文字幕免费在线看 | 激情偷乱人伦小说视频在线观看 | 午夜久久影院 | 在线观看免费国产小视频 | 久久精品国产一区二区三区 | 欧美超碰在线 | 黄色软件网站在线观看 | 中文字幕第一页在线vr | 日韩免费电影一区二区 | 伊人五月天婷婷 | 国产成人亚洲精品自产在线 | 91视频91色| 久久99视频免费 | 色视频在线免费观看 | 中文字幕av日韩 | 久久国产精品一区二区 | 四川bbb搡bbb爽爽视频 | 精品国产伦一区二区三区 | 日本最新高清不卡中文字幕 | 国产亚洲精品久久久久久久久久久久 | 人人看人人艹 | 草莓视频在线观看免费观看 | 国产91aaa| 999超碰 | 高清不卡毛片 | 日韩理论影院 | 91精品福利在线 | 麻豆视频成人 | 亚洲视频第一页 | 97碰碰视频 | 国产精品久久9 | 四虎5151久久欧美毛片 | 亚洲欧美国产精品18p | 韩国av一区二区 | 日本电影久久 | 国产99久久99热这里精品5 | 一区二区三区四区五区在线视频 | 91精品导航 | 国产成人免费精品 | 草久在线播放 | 一级黄色av | 国产在线精品二区 | av在线免费网站 | 亚洲精品视频一二三 | 色综合天天天天做夜夜夜夜做 | 国产精品一区久久久久 | 亚洲精品99久久久久中文字幕 | 欧美一区二区三区免费看 | 亚洲成年人av | 久久久免费高清视频 | 成人午夜黄色 | 蜜桃av人人夜夜澡人人爽 | 国产一区免费观看 | 亚洲成人资源在线 | 四虎影视成人永久免费观看视频 | 日韩免费电影网站 | 国产精品美女www爽爽爽视频 | www视频在线观看 | 精品欧美小视频在线观看 | 中文成人字幕 | 午夜性色 | a级国产乱理伦片在线观看 亚洲3级 | 激情视频一区二区三区 | 久久国产亚洲 | 欧美精品亚洲精品 | 在线观看免费观看在线91 | 高清不卡免费视频 | 精品亚洲视频在线观看 | 国产精品理论在线观看 | 免费国产在线精品 | 国产91精品一区二区绿帽 | 99视频在线免费播放 | 91av手机在线观看 | 久色免费视频 | 91人人射 | 99精品视频免费观看视频 | 精品国产理论片 | 久久精品国产99国产 | 日韩视频欧美视频 | 人人躁| 色就色,综合激情 | 狠狠操精品 | 亚洲精品动漫成人3d无尽在线 | 香蕉视频在线看 | wwwwww色| 日韩视频二区 | 欧美日在线观看 | 欧美一区三区四区 | 免费三级大片 | 亚洲国产成人精品电影在线观看 | 在线欧美最极品的av | 成人三级av| 天天色天天综合 | 丁香高清视频在线看看 | 三级在线国产 | 亚洲狠狠丁香婷婷综合久久久 | 人人草在线视频 | 天天操网站 | 久久久久网站 | 国产精品毛片网 | 免费国产ww| 免费看高清毛片 | 婷婷六月天天 | 婷婷四房综合激情五月 | 国产日韩欧美精品在线观看 | 国产无限资源在线观看 | 国产一区黄色 | 午夜资源站| 色偷偷网站视频 | 区一区二在线 | 久久久久久毛片精品免费不卡 | 人人插人人射 | 蜜臀av网址 | 免费观看91视频大全 | 亚洲狠狠丁香婷婷综合久久久 | 国产韩国日本高清视频 | 欧美激情视频一二区 | 国产 欧美 日产久久 | 中文字幕在线资源 | 91传媒在线看 | 欧美日韩在线免费视频 | 久久免费视频7 | 国产精彩视频一区二区 | 欧美成人播放 | 中文乱幕日产无线码1区 | 91理论片午午伦夜理片久久 | 毛片网在线观看 | 天天干人人干 | 日本丶国产丶欧美色综合 | 成人91视频| 成人超碰97| 中文字幕在线看视频国产 | 欧美国产精品久久久久久免费 | 亚洲精品一区二区久 | 99re国产| 日韩99热| av成人免费网站 | 国产 中文 日韩 欧美 | 色综合a| 亚洲精品综合在线 | 国产精品久久久电影 | 国产精品日韩高清 | 久久婷婷亚洲 | 亚洲综合丁香 | 日本在线视频网址 | 日韩网站免费观看 | 久久久久久久网站 | 在线免费观看麻豆 | 欧美日韩国产在线一区 | 91网站观看 | 97成人资源站 | 国产精品一区二区久久精品爱涩 | 日本精品在线视频 | 久久五月精品 | 黄色a在线| 亚洲精品久久久久久久不卡四虎 | 中文字幕区 | bbbbb女女女女女bbbbb国产 | 久99久精品视频免费观看 | 久久久香蕉视频 | 久草在线视频网站 | 99爱视频在线观看 | 久久久www成人免费毛片麻豆 | 成人在线视| adn—256中文在线观看 | 久草在线观 | 精品一区二区三区香蕉蜜桃 | 天天操导航 | 久草视频免费在线播放 | bbbb操bbbb | 在线观看中文字幕视频 | 亚洲国产中文字幕在线观看 | 国产黄色播放 | 免费在线电影网址大全 | 97超碰在线免费 | 超碰在线观看av | 91精品国产九九九久久久亚洲 | 美女黄濒 | 亚洲国产精久久久久久久 | 奇米影视8888 | 日韩理论电影在线 | 成人毛片久久 | 在线观看视频你懂的 | 在线一二三四区 | www.夜夜干.com | 麻豆91在线播放 | 亚洲成人精品在线观看 | 成片免费观看视频 | 一级α片 | 亚洲国产网址 | 欧美超碰在线 | 日本激情视频中文字幕 | 17婷婷久久www | 日韩精品欧美专区 | .精品久久久麻豆国产精品 亚洲va欧美 | 最近更新好看的中文字幕 | 国产免费不卡 | 久草免费在线 | 成年人app网址 | 在线视频日韩 | 欧产日产国产69 | 天天操夜夜叫 | 欧美性色综合网 | 国内精品二区 | 久久久久一区二区三区 | 亚洲 中文 在线 精品 | 精品主播网红福利资源观看 | 热久久免费视频精品 | 亚洲经典中文字幕 | 国产香蕉视频 | 久久久久99精品国产片 | 日韩在线首页 | 亚洲国产精品视频在线观看 | 国产精品18p | 亚洲综合婷婷 | 99免费在线 | 国产电影一区二区三区四区 | 久久激五月天综合精品 | 午夜视频在线观看一区 | 麻豆一二三精选视频 | 亚洲91精品 | 亚洲成人免费观看 | 午夜在线观看一区 | 精品视频国产一区 | 九九综合久久 | 亚洲精品美女久久久久 | 国产精品久久久久9999吃药 | 色吧av色av | 久久精品视频3 | 国产美腿白丝袜足在线av | 99久久99视频 | 黄色软件大全网站 | 久久久久免费观看 | 久久婷婷一区二区三区 | 九九视频这里只有精品 | av高清网站在线观看 | 欧美精品久久久久a | 99久久综合国产精品二区 | 麻豆精品视频在线 | 天天操人 | 亚洲精品mv在线观看 | 国产一卡二卡四卡国 | 亚洲视频播放 | 国产免费美女 | 97国产大学生情侣白嫩酒店 | 国产色一区 | 亚洲精品日韩一区二区电影 | 人人干干人人 | 国产在线2020| 久草精品视频在线播放 | 国产不卡免费视频 | 中文字幕麻豆 | 精品国产乱码久久久久久三级人 | 国产一区二区高清 | 免费毛片一区二区三区久久久 | 久草免费福利在线观看 | 狠狠色伊人亚洲综合成人 | 麻豆91视频| 九色在线视频 | 91精品国产九九九久久久亚洲 | 一区二区三区www | 国产成人精品久久久 | 国外av在线 | 亚洲黄色三级 | 91在线免费播放 | 九九热久久久 | 二区三区av | av在线com| 成人毛片一区 | 国产69精品久久久久久久久久 | 国产一卡久久电影永久 | 中文字幕在线播放一区二区 | 久久激情五月丁香伊人 | 天天射天天操天天色 | 日韩精品视频免费专区在线播放 | 久久久精品小视频 | 色香蕉在线 | 国产色道 | 人人舔人人干 | 91成人在线视频观看 | 国产精品一区二区三区观看 | 婷婷色五 | 91亚洲精品久久久蜜桃网站 | 激情综合站 | 国产黄色免费观看 | 亚洲综合色丁香婷婷六月图片 | 日韩精品高清不卡 | 亚洲性少妇性猛交wwww乱大交 | 亚洲天堂网在线视频观看 | 人人爽久久涩噜噜噜网站 | 毛片网站免费在线观看 | 国产91精品看黄网站在线观看动漫 | 人人舔人人爱 | 欧美日韩啪啪 | 亚洲精品1234区 | 91麻豆产精品久久久久久 | 在线三级播放 | 蜜桃视频在线视频 | 天天操夜夜逼 | 黄色精品免费 | 九色精品免费永久在线 | 久久99久久99精品免视看婷婷 | 91成年视频 | 国产在线精品一区 | 在线播放精品一区二区三区 | 日韩xxxx视频 | 免费观看日韩av | 中文字幕欲求不满 | 97超碰国产精品女人人人爽 | 中文字幕一区二区三区久久蜜桃 | 久久久精品二区 | 成人黄色小说视频 | 欧美久久久久久久久久久久 | 欧美午夜精品久久久久久孕妇 | 国产69熟| av高清一区二区三区 | 欧美日韩高清一区二区三区 | 青青色影院 | 成人av免费电影 | www黄色com| 国产一级淫片在线观看 | 最近中文字幕免费视频 | 国产高清一区二区 | 国产精品久久久免费 | 日韩剧情| 欧美黄在线 | 国产韩国精品一区二区三区 | 日韩精品免费在线观看视频 | av观看免费在线 | 午夜精品久久久久久久99婷婷 | 欧美国产精品一区二区 | 人人澡人摸人人添学生av | 久久午夜国产精品 | 亚洲成人影音 | 亚洲mv大片欧洲mv大片免费 | 久久1电影院 | 精品在线不卡 | 狠狠色噜噜狠狠狠合久 | 日韩小视频 | 婷婷色网址 | 成人aⅴ视频 | 中文av网 | 黄色在线观看www | 99久久精品免费视频 | 天天操天天射天天插 | 亚洲免费不卡 | av成人在线观看 | www.com.日本一级 | 日韩欧美精品一区 | 偷拍福利视频一区二区三区 | 草久视频在线观看 | 米奇狠狠狠888 | 又黄又刺激视频 | 国产小视频国产精品 | 国产精品一区二区在线看 | 久久免费激情视频 | 国产午夜麻豆影院在线观看 | 日本aaaa级毛片在线看 | 国产永久免费高清在线观看视频 | 97精品国产91久久久久久久 | 日本成人免费在线观看 | 在线观看亚洲精品 | 狠狠干免费 | 精品久久久免费视频 | 天堂av最新网址 | 欧美性猛片| 亚洲国产999 | 蜜臀av麻豆 | 中文字幕电影网 | 国产高清精品在线 | 国产麻豆电影在线观看 | 日韩网站在线 | 天天综合网天天 | 国产一级性生活视频 | 成人小视频在线免费观看 | www黄色大片 | 四虎国产永久在线精品 | 久久人网 | 久久这里只有精品首页 | 精品国产乱码久久久久久三级人 | 亚洲精品视 | 中文字幕在线观看第一页 | 999抗病毒口服液 | 亚洲精品一区二区三区高潮 | 国产精品大片在线观看 | 婷婷六月中文字幕 | freejavvideo日本免费 | 国产精品久久久久久久久久直播 | 久久久久久久久久久久久影院 | 久久综合导航 | 在线观看免费国产小视频 | av免费看网站 | 久久精品亚洲一区二区三区观看模式 | 天天色天天射综合网 | 国产精品xxxx18a99 | 成人午夜毛片 | 亚洲色影爱久久精品 | 色九九视频 | 国产一区二区三区免费观看视频 | 2019中文最近的2019中文在线 | 色av色av色av| 欧美一级大片在线观看 | 麻豆视频一区 | 五月综合色婷婷 | 三上悠亚一区二区在线观看 | 亚洲久草在线视频 | 色综合天天综合 | 黄色免费网站大全 | 成人影视免费看 | 日日碰狠狠躁久久躁综合网 | 成 人 黄 色视频免费播放 | 中文字幕在线播出 | 欧美在线观看视频一区二区三区 | 亚洲免费资源 | 亚洲国产播放 | 天天综合天天做 | 久久精品日本啪啪涩涩 | 成人在线观看免费视频 | 亚洲精品在线国产 | 99国内精品久久久久久久 | 伊人精品在线 | 9在线观看免费高清完整版在线观看明 | 久草国产视频 | 久久麻豆精品 | 久久久国产一区二区三区四区小说 | 免费成视频 | 久久综合毛片 | 黄色一级免费网站 | 91成人精品在线 | 蜜臀av性久久久久av蜜臀三区 | 欧美日韩不卡在线 | 成人免费xxxxxx视频 | 久久激情片| 久久好看免费视频 | 2019中文最近的2019中文在线 | 亚洲欧美观看 | 久久综合射 | 丁香在线| 在线观看国产永久免费视频 | 亚洲精品午夜aaa久久久 | 中文字幕在线久一本久 | 99热国产精品 | 久久黄色小说 | 亚洲综合色av | 99在线热播精品免费 | 日韩电影在线观看一区二区三区 | 免费精品人在线二线三线 | 中文字幕日韩免费视频 | 婷婷丁香社区 | 国产伦理久久 | 久久国产综合视频 | 国产蜜臀av | 久久成熟 | 在线免费中文字幕 | 少妇精品久久久一区二区免费 | 黄色在线网站噜噜噜 | 成人h动漫精品一区二 | 婷婷激情综合五月天 | 黄色大片入口 | 国产在线一区二区三区播放 | 天天操天天舔天天爽 | 一区二区三区在线免费观看 | 99久久er热在这里只有精品66 | 免费高清在线视频一区· | 久久久久久久久久网 | 最新免费av在线 | 久久精品99国产国产 | 亚洲高清av | 在线观看 国产 | 黄色毛片视频免费观看中文 | 色中色亚洲 | 97精品国产91久久久久久久 | 国产精品亚州 | 国产精品日韩高清 | 综合色在线观看 | 日韩视频1区 | 日韩中文字幕一区 | 久在线观看视频 | 成人黄色一级视频 | 999精品视频 | 波多野结衣在线观看一区二区三区 | 在线观看免费视频你懂的 | 免费日韩av电影 | 9ⅰ精品久久久久久久久中文字幕 | 激情大尺度视频 | 久草在在线视频 | 久久久国产精品成人免费 | 狠狠躁日日躁狂躁夜夜躁 | 国产精品久久久久久久久蜜臀 | 在线观看亚洲精品 | 天天色棕合合合合合合 | 播五月综合 | 中文字幕 国产视频 | 国产99久久 | 麻豆成人精品视频 | 日韩久久精品 | 91麻豆看国产在线紧急地址 | 久久国产免费 | av免费观看高清 | 国产精品免费视频一区二区 | 日韩精品在线看 | 久久1区 | 狠狠的操你 | 91九色免费视频 | 欧美性极品xxxx做受 | 91免费国产在线观看 | 奇米导航| 99精品国产一区二区三区麻豆 | 99热这里只有精品1 av中文字幕日韩 | 国产精品午夜久久久久久99热 | 狠狠网| 91爱看片| 91av美女| 日韩一二区在线观看 | 国产一级视频在线免费观看 | 一色屋精品视频在线观看 | 中文字幕日韩免费视频 | 激情综合站 | 免费的黄色av | 日韩欧美区 | 日韩欧美99 | 免费在线观看的av网站 | 国产伦精品一区二区三区在线 | 日本少妇高清做爰视频 | 国产精品久久久久久99 | 久久一区国产 | 国产欧美高清 | 国产99久久久国产精品成人免费 | 六月丁香在线视频 | 日韩精品一区在线播放 | 一级久久久 | 干天天 | 国产精品久久一卡二卡 | 91人人揉日日捏人人看 | 日韩av电影一区 | 综合成人在线 | 日韩精品在线播放 | 超碰在线日本 | 国产一区欧美二区 | 在线播放亚洲 | 国模一区二区三区四区 | 高清av中文在线字幕观看1 | 免费一级日韩欧美性大片 | 欧美日韩xxx | 91九色在线播放 | 人人澡人摸人人添学生av | www.五月天激情 | 成人国产精品久久久 | 亚洲精品视频一二三 | 亚洲欧美日韩一区二区三区在线观看 | 丁香视频五月 | 欧美天天干 | 国产精品欧美久久久久久 | 一区二区欧美在线观看 | 日韩丝袜视频 | 久久国产精品99久久久久久老狼 | 97精品视频在线 | 日日爱999| 深夜免费福利在线 | 成人91在线 | 激情在线五月天 | 欧美日韩高清在线 | 免费欧美高清视频 | 午夜精品一区二区三区在线视频 | 黄色三级网站在线观看 | 国产91av视频在线观看 | 国产美女视频免费观看的网站 | 91丨九色丨国产在线观看 | 国产剧情一区二区在线观看 | 9ⅰ精品久久久久久久久中文字幕 | 96亚洲精品久久久蜜桃 | 久久精品成人欧美大片古装 | 一区二区三区在线免费播放 | 久久av高清 | 人人狠 | 精品视频在线免费观看 | 久久字幕精品一区 | 久久一线 | 久久99久久久久 | 99久久夜色精品国产亚洲 | 97视频在线免费观看 | 国产一级黄色免费看 | 狠狠躁18三区二区一区ai明星 | 中文字幕视频 | 天天做天天爱夜夜爽 | 国产精品久久99精品毛片三a | 91九色成人蝌蚪首页 | 国产精品午夜久久久久久99热 | 日日干av| 国产精品美女久久久久久 | 婷婷色影院 | 日韩精品中文字幕在线不卡尤物 | 午夜精品电影一区二区在线 | av中文字幕网站 | 国产麻豆精品一区 | 国产成人精品免高潮在线观看 | 九九精品在线观看 | 99视频在线播放 | 中文字幕999 | 国产91精品一区二区麻豆网站 | 91一区二区三区在线观看 | x99av成人免费| 丁香六月五月婷婷 | 日韩com | 麻豆国产露脸在线观看 | 久久久久| 成人av片免费看 | av黄色在线观看 | 美女在线免费观看视频 | 808电影免费观看三年 | 久久成人精品电影 | 成人夜晚看av | 亚洲精品视频在线观看免费 | 成人免费大片黄在线播放 | 五月婷婷在线观看 | 国产一区二区高清不卡 | 亚洲国产精品传媒在线观看 | 欧美 激情 国产 91 在线 | 亚洲一级免费电影 | 国产99久久久精品 | 成人在线免费视频观看 | 奇米影视777影音先锋 | 在线观看一区二区精品 | 成人观看视频 | 久久久国产网站 | 色综合天天干 | 中文伊人 | 亚洲精品在线一区二区 | 欧美福利片在线观看 | 午夜影院日本 | 99精品视频在线观看播放 | 精品国产伦一区二区三区观看方式 | 在线激情小视频 | 日韩小视频 | 丁香激情综合久久伊人久久 | 国产精品1区2区3区 久久免费视频7 | 久久综合狠狠狠色97 | 日韩激情在线视频 | 成年人在线免费看 | 国产成人一区三区 | 精品视频免费观看 | 九九在线免费视频 | 日韩免费播放 | 国产视频亚洲精品 | 国产69精品久久久久99尤 |