色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享TensorFlow Lite應(yīng)用案例

Tensorflowers ? 來(lái)源:未知 ? 作者:工程師郭婷 ? 2018-07-26 10:37 ? 次閱讀

從2016年開(kāi)始,Kika 技術(shù)團(tuán)隊(duì)一直致力于 AI 技術(shù)在移動(dòng)端落地,尤其是在 keyboard 輸入法引擎做了很多算法與工程上的探索工作。2017 年 5 月,Kika 技術(shù)團(tuán)隊(duì)基于 TensorFlow Mobile 研發(fā)了 Kika AI Engine,將其應(yīng)用于 Kika 的全系輸入法產(chǎn)品中。2017 年 11 月,Google 發(fā)布 TensorFlow Lite (TF Lite) 后,Kika 技術(shù)團(tuán)隊(duì)迅速進(jìn)行了跟進(jìn),并于 2018 年 1 月成功地開(kāi)發(fā)了基于 TF Lite 全新一代的 Kika AI Engine,同時(shí)進(jìn)行了線上產(chǎn)品的更新。

1、移動(dòng)端深度學(xué)習(xí)的技術(shù)選型

輸入法引擎的技術(shù)要求包括:快、準(zhǔn)、全。需要在客戶端環(huán)境下,根據(jù)用戶輸入的上文內(nèi)容以及當(dāng)前鍵入的鍵碼,實(shí)時(shí)進(jìn)行『預(yù)測(cè)』。預(yù)測(cè)的內(nèi)容包括:?jiǎn)卧~,詞組,emoji 等等一切可能通過(guò)輸入法發(fā)送的內(nèi)容。從算法的原理上來(lái)講,這是一個(gè)典型的 RNN 應(yīng)用場(chǎng)景。

輸入法引擎預(yù)測(cè)效果圖

作為輸入法這樣的一個(gè)重度使用的工具類 APP,在移動(dòng)端做輕量化部署非常重要,具體包括以下四個(gè)方面:模型壓縮、快速的響應(yīng)時(shí)間、較低的內(nèi)存占用以及 較小的 so 庫(kù)(shared object,共享庫(kù))大小等。

在 Kika 將 TF Mobile 部署到移動(dòng)端的過(guò)程中,除了 CPU 占用偏高,還有由于 TF Mobile 內(nèi)存管理與內(nèi)存保護(hù)設(shè)計(jì)的問(wèn)題,導(dǎo)致:

內(nèi)存保護(hù)機(jī)制不完善,在實(shí)際內(nèi)存不是很充足的情況(尤其對(duì)于部分低端機(jī)型以及在內(nèi)存消耗較大的應(yīng)用,如大型手游中彈起輸入法),容易引發(fā)內(nèi)存非法操作。

內(nèi)存大小控制機(jī)制存在一定的問(wèn)題,例如模型本身在計(jì)算時(shí)只有 20MB,但加載到內(nèi)存之后的運(yùn)行時(shí)峰值可能會(huì)飆升 40 到 70MB。

TF Lite 對(duì)于 CNN 類的應(yīng)用支持較好,目前對(duì)于 RNN 的支持尚存在 op 支持不足的缺點(diǎn)。但是考慮到內(nèi)存消耗和性能方面的提升,Kika 仍然建議投入一部分的研發(fā)力量,在移動(dòng)端考慮采用 TF Lite 做為基于 RNN 深度學(xué)習(xí)模型的 inference 部署方案。

2. TensorFlow Lite 對(duì) RNN/LSTM based 模型的原生支持情況

相對(duì)于 CNN 而言,TF Lite 對(duì)于 RNN/LSTM 的支持程度稍顯不足。目前的情況是,RNN 相關(guān)的基本元素的 op 目前都已經(jīng)支持,最近也剛剛支持了 LSTM,但遺憾的是 beamSearch 支持暫時(shí)還沒(méi)有完成。

不支持的 op 主要集中有兩大類情況:

包括控制流 (control flow) 的 op

相對(duì)于 TF mobile,TF Lite 的部分 op 只支持最簡(jiǎn)單的 case

目前的一個(gè)好的消息就是 TensorFlow 項(xiàng)目組一直在持續(xù)的推進(jìn)對(duì) RNN 系列的支持。

3. 如何應(yīng)對(duì) op 缺失的情況

對(duì)于移動(dòng)端用 TF Lite 部署最友好的開(kāi)發(fā)姿勢(shì)是在設(shè)計(jì)模型之處就了解當(dāng)前的 TF Lite版本哪些 op 是缺失或者功能不完整的,然后在模型設(shè)計(jì)過(guò)程中:

盡量避免使用這些 TF Lite 不支持的 op;

對(duì)于不得不使用的情況,也需要結(jié)合具體的業(yè)務(wù)邏輯,優(yōu)化設(shè)計(jì),使得在移動(dòng)端部署的二次開(kāi)發(fā)的工作量盡可能的小。

以下是應(yīng)對(duì) op 缺失的一些常見(jiàn)做法。

組合

最為常見(jiàn)的處理方式,例如在早期的 TF Lite 版本中,tf.tile 和 tf.range 都不支持,這個(gè)時(shí)候建議采用 broadcast_add 來(lái)組合代替實(shí)現(xiàn)。

補(bǔ)充

TF mobile 的 op 相當(dāng)于完整版的 TensorFlow,于此相比,TF Lite 缺失最嚴(yán)重的是包含控制流的部分。例如 seq2seq 模型中常用的 beam search。

補(bǔ)充的方式有兩種:

直接開(kāi)發(fā)一個(gè)全新的 op;

在 TF Lite 之外的上層 api 中實(shí)現(xiàn) (此時(shí)可能需要拆解模型)。

兩種方式各有優(yōu)劣,具體的需要根據(jù)功能的復(fù)雜度和業(yè)務(wù)邏輯決定。

模型拆分

1) 原因

需要模型拆分的原因一般有 3 個(gè):

訓(xùn)練時(shí)用流程控制的方式(如 batch)一次性跑完多個(gè)樣本,但在 Inference 的過(guò)程中,需要用到單步運(yùn)行;

某些 op 不支持,需要在 TF Lite 的上層『手動(dòng)』實(shí)現(xiàn),可能需要將原有的模型拆分為若干的子模型 (sub graph);

有部分的冗余,但是重新設(shè)計(jì) graph 再訓(xùn)練的時(shí)間代價(jià)較大。

2) 方法與坑

以下通過(guò)一個(gè)實(shí)例來(lái)描述如何進(jìn)行模型的拆分。

將 variable 共享給不同的 op,甚至于不同的 sub graph,通用做法是 采用 `placeholder` 的方式將輸入輸出分開(kāi),然后在導(dǎo)出 freeze graph 的時(shí)候用 `tf.graph_util.convert_variables_to_constants` 只抓取需要的部分。

代碼實(shí)例:

python

vars = tf.get_variable(。..)

inputs = tf.placeholder(‘inputids’, shape=[BATCH, None], 。..)

embs = tf.nn.embedding_lookup(vars, inputs)

cells = tf.nn.rnn_cell.MultiRNNCell(。..)

output, state = tf.nn.dynamic_rnn(cells, embs, 。..)

實(shí)際整合進(jìn)入客戶端產(chǎn)品 inference 的時(shí)候,可能存在的坑:

可能不需要 `BATCH`,雖然可以每次都指定 batch 為 1,但對(duì)于 TF 來(lái)說(shuō),

batch = 1 跟直接沒(méi)有這個(gè)維度的模型結(jié)構(gòu)并不同;

如果都需要單步運(yùn)行的話,`dynamic_rnn` 也不需要,而且這里有大量流程控制 (最新的 TF Lite 開(kāi)始逐步的對(duì) dynamic rnn 進(jìn)行了支持)。

對(duì)于后端的模型算法工作者來(lái)說(shuō),寫出上述的訓(xùn)練代碼是一件非常自然的事情。如果我們既想保持后端代碼的普適和自然度,又想要快速實(shí)現(xiàn)能夠在客戶端部署,需要作出如下的事情:

python

prod_inputs = tf.placeholder(‘prod_inputids’, shape=[None], 。..)

prod_embs = tf.nn.embedding_lookup(vars, prod_inputs)

prod_output, prod_state = cells(prod_embs, 。..)

其中有 3 個(gè)需要被注意的地方:

RNN cell 本身可以被調(diào)用。同一個(gè) cell 如果想讓多個(gè)地方同時(shí)調(diào)用,內(nèi)部 variable 只會(huì)產(chǎn)生一次。

一般聲明的 variables 如果是用 `tf.get_variable()` 出來(lái)的,直接用即可。

另外一個(gè)方式是可以考慮采用 `tf.variable_scope(reuse=True)` 的方式重寫 inference 的過(guò)程,以解耦 training 和 inference 的代碼,代價(jià)就是整個(gè) graph 會(huì)偏大,但是優(yōu)點(diǎn)使得進(jìn)行 sub graph 切分的工作變得更加簡(jiǎn)單。

python

with tf.variable_scope(‘my_network’):

vars = tf.get_variable(。..)

inputs = tf.placeholder(‘inputids’, shape=[BATCH, None], 。..)

embs = tf.nn.embedding_lookup(vars, inputs)

cells = tf.nn.rnn_cell.MultiRNNCell(。..)

output, state = tf.nn.dynamic_rnn(cells, embs, 。..)

# 。..

with tf.variable_scope(‘my_network’, reuse=True):

vars = tf.get_variable(。..)

prod_inputs = tf.placeholder(‘prod_inputids’, shape=[None], 。..)

prod_embs = tf.nn.embedding_lookup(vars, prod_inputs)

prod_cells = tf.nn.rnn_cell.MultiRNNCell(。..)

prod_output, prod_state = prod_cells(prod_embs, 。..)

在進(jìn)行這些『切分』操作的時(shí)候需要注意到幾個(gè)問(wèn)題:

1. `tf.Variable()` 和 `tf.get_variable()`

盡量用后者,因?yàn)閌tf.Variable()`對(duì) variable scope 無(wú)效。

2. 部分 op 有隱藏的 optional argument

有些 op 有 optional argument,如果不指定的話,可能會(huì)自動(dòng)引入一些額外的 op 來(lái)代入默認(rèn)值。這樣偶爾會(huì)引入一些 TF Lite 不支持的 op。例如:

python

softmax = tf.nn.softmax(logits)

其實(shí)有個(gè)參數(shù) axis 默認(rèn)是 -1 ,也就是最后一個(gè)維度。不寫明的話 TF 會(huì)『默認(rèn)』插入一些 op 在運(yùn)行時(shí)幫你計(jì)算:

python

axis = tf.sub(tf.shape(logits), tf.constant(1))

`tf.shape()` 在 TF Lite 一直到最近才支持,而且只要調(diào)用的時(shí)候直接寫明,并不需要在運(yùn)行時(shí)算:

python

# logits has shape [1, VOCABS]

softmax = tf.nn.softmax(logits, axis=1)

這類 op 暫時(shí)沒(méi)有系統(tǒng)性的方式可以辨認(rèn) (spec 上沒(méi)寫),只能等到試錯(cuò)的時(shí)候才會(huì)被發(fā)現(xiàn)。

因此,在實(shí)際操作的時(shí)候?qū)τ谀J(rèn)參數(shù),需要特別的注意。

4. toolchain -- 模型轉(zhuǎn)換與整合

拆完以后的模型仍然是一個(gè) protobuffer 格式,要先把它轉(zhuǎn)換成 tflite 的 flatbuffers 格式才能用。

轉(zhuǎn)換工具可以直接采用 TF 官方的轉(zhuǎn)換工具。比如在kika 我們的 toolchain 是這樣的:

bash

git clone -b tflite https://github.com/KikaTech/tensorflow.git

cd tensorflow/kika

bazel build -s -c dbg

@org_tensorflow//tensorflow/contrib/lite/toco:toco

//graph_tools/python:tf2lite

//graph_tools/python:tfecho

//graph_tools/python:quantize

第一個(gè)就是模型轉(zhuǎn)換工具 toco,建議采用獨(dú)立的命令行版本,而不是采用 python API,目前對(duì)于 OSX 這樣的系統(tǒng),會(huì)有一些編譯上的問(wèn)題,同時(shí)編譯的耗時(shí)也比較長(zhǎng)。

第二個(gè)是一個(gè)包含 toco 的小啟動(dòng)器,因?yàn)?toco 從命令列呼叫起來(lái)的話要填的參數(shù)比較多,所以這個(gè)啟動(dòng)器會(huì)使用 tensorflow 查詢一些可以自動(dòng)填的參數(shù),來(lái)降低手動(dòng)填的參數(shù)數(shù)量。

第三個(gè)就是量化工具。如果只是要驗(yàn)證 graph 能否在 TF Lite 上運(yùn)行,不需要用到。如果要整合進(jìn)客戶端產(chǎn)品的話,還會(huì)經(jīng)過(guò)量化把模型體積壓縮后才推送至用戶手機(jī) (或打包進(jìn)安裝包),在用戶手機(jī)上做一次性的還原后才能運(yùn)行。

5. 效果分析: TF Lite 帶來(lái)的收益

在客戶端實(shí)現(xiàn)基于 TF Lite 模型的部署之后,我們分別測(cè)試了同一模型在 TF 完全版(TF Mobile)和 TF Lite 10, 000 次 Inference 的資源消耗情況,如下圖所示。主要的 Metrics 包括內(nèi)存占用 (memory),運(yùn)行時(shí)間(speed)和靜態(tài)鏈接庫(kù)的大小 (image size)。

TF Lite based model performance metrics

可以看到,各項(xiàng) Metrics 都得到的大幅的優(yōu)化,這對(duì)于提升產(chǎn)品的整體性能與穩(wěn)定度都是十分有利的。

6. TensorFlow 與 Kika

除了輸入法引擎之外,Kika 技術(shù)團(tuán)隊(duì)近年來(lái)也一直在致力于采用 AI 技術(shù)解決內(nèi)容推薦語(yǔ)音識(shí)別和自然語(yǔ)義理解方面等方面的諸多實(shí)際問(wèn)題,在客戶端和服務(wù)端部署分別采用 TF Lite 和 TF Serving 這兩個(gè)基于 TensorFlow 的優(yōu)秀框架。后續(xù) Kika 技術(shù)團(tuán)隊(duì)將持續(xù)帶來(lái)關(guān)于 Kika 在 TF Lite 和 TF Serving 實(shí)踐中的經(jīng)驗(yàn)分享。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    31490

    瀏覽量

    269916
  • 引擎
    +關(guān)注

    關(guān)注

    1

    文章

    361

    瀏覽量

    22615
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5512

    瀏覽量

    121418
  • TensorFlow Lite
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    645

原文標(biāo)題:TensorFlow Lite在Kika Keyboard中的應(yīng)用案例分享

文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    2.3T算力,真的強(qiáng)!1分鐘學(xué)會(huì)NPU開(kāi)發(fā),基于NXP i.MX 8MP平臺(tái)!

    潛力。 ? ? i.MX 8M Plus NPU特性 i.MX 8M Plus的NPU支持INT16/INT32/FP16/FP32等多種數(shù)據(jù)類型,兼容性卓越,與TensorFlow Lite/Arm
    的頭像 發(fā)表于 01-24 10:21 ?47次閱讀
    2.3T算力,真的強(qiáng)!1分鐘學(xué)會(huì)NPU開(kāi)發(fā),基于NXP i.MX 8MP平臺(tái)!

    新唐科技基于NuMaker-M55M1平臺(tái)的人臉識(shí)別系統(tǒng)

    TensorFlow Lite、Haar Cascade 和 MobileFaceNet,實(shí)現(xiàn)高效且準(zhǔn)確的識(shí)別功能,并展現(xiàn)了嵌入式系統(tǒng)的強(qiáng)大應(yīng)用潛力。
    的頭像 發(fā)表于 01-20 10:31 ?118次閱讀

    HM-BT2401DA,首次“AI化”的藍(lán)牙模組有多“能打”?

    與FLASH,同時(shí)華普微還借助TensorFlow Lite Micro將機(jī)器學(xué)習(xí)模型進(jìn)行了量化和優(yōu)化,使其能夠在HM-BT2401DA MCU的有限資源中高效運(yùn)行。
    的頭像 發(fā)表于 12-20 14:16 ?201次閱讀
    HM-BT2401DA,首次“AI化”的藍(lán)牙模組有多“能打”?

    在設(shè)備上利用AI Edge Torch生成式API部署自定義大語(yǔ)言模型

    我們很高興地發(fā)布 AI Edge Torch 生成式 API,它能將開(kāi)發(fā)者用 PyTorch 編寫的高性能大語(yǔ)言模型 (LLM) 部署至 TensorFlow Lite (TFLite) 運(yùn)行時(shí)
    的頭像 發(fā)表于 11-14 10:23 ?516次閱讀
    在設(shè)備上利用AI Edge Torch生成式API部署自定義大語(yǔ)言模型

    U盤存儲(chǔ)并聯(lián),算法交互輸出

    FreeRTOS),負(fù)責(zé)任務(wù)調(diào)度和資源管理。 使用C/C++語(yǔ)言編寫數(shù)據(jù)管理、算法和通信模塊,確保代碼的高效性和可靠性。 利用現(xiàn)有的庫(kù)和框架(如TensorFlow Lite Micro)來(lái)實(shí)現(xiàn)輕量級(jí)的機(jī)器
    發(fā)表于 10-28 07:36

    【社區(qū)工程師專題系列第七期】沒(méi)有興趣推動(dòng)是不會(huì)有成就的——李海

    文檔,學(xué)習(xí)i.MX的AI開(kāi)發(fā)環(huán)境和相關(guān)的程序框架。 2)利用TensorFlow Lite框架進(jìn)行語(yǔ)音識(shí)別的模型建立和訓(xùn)練工作。 3)將所訓(xùn)練的模型移植到NXP的硬件平臺(tái)上。 4)利用語(yǔ)音指令控制其他
    發(fā)表于 10-23 16:53

    第四章:在 PC 交叉編譯 aarch64 的 tensorflow 開(kāi)發(fā)環(huán)境并測(cè)試

    本文介紹了在 PC 端交叉編譯 aarch64 平臺(tái)的 tensorflow 庫(kù)而非 tensorflow lite 的心酸過(guò)程。
    的頭像 發(fā)表于 08-25 11:38 ?1325次閱讀
    第四章:在 PC 交叉編譯 aarch64 的 <b class='flag-5'>tensorflow</b> 開(kāi)發(fā)環(huán)境并測(cè)試

    TensorFlow是什么?TensorFlow怎么用?

    TensorFlow是由Google開(kāi)發(fā)的一個(gè)開(kāi)源深度學(xué)習(xí)框架,它允許開(kāi)發(fā)者方便地構(gòu)建、訓(xùn)練和部署各種復(fù)雜的機(jī)器學(xué)習(xí)模型。TensorFlow憑借其高效的計(jì)算性能、靈活的架構(gòu)以及豐富的工具和庫(kù),在學(xué)
    的頭像 發(fā)表于 07-12 16:38 ?779次閱讀

    請(qǐng)問(wèn)ESP32如何運(yùn)行TensorFlow模型?

    請(qǐng)問(wèn)ESP32如何運(yùn)行TensorFlow模型?
    發(fā)表于 07-09 07:30

    tensorflow和pytorch哪個(gè)更簡(jiǎn)單?

    PyTorch更簡(jiǎn)單。選擇TensorFlow還是PyTorch取決于您的具體需求和偏好。如果您需要一個(gè)易于使用、靈活且具有強(qiáng)大社區(qū)支持的框架,PyTorch可能是一個(gè)更好的選擇。如果您需要一個(gè)在
    的頭像 發(fā)表于 07-05 09:45 ?949次閱讀

    tensorflow和pytorch哪個(gè)好

    tensorflow和pytorch都是非常不錯(cuò)的強(qiáng)大的框架,TensorFlow還是PyTorch哪個(gè)更好取決于您的具體需求,以下是關(guān)于這兩個(gè)框架的一些關(guān)鍵點(diǎn): TensorFlow : 發(fā)布時(shí)間
    的頭像 發(fā)表于 07-05 09:42 ?754次閱讀

    tensorflow簡(jiǎn)單的模型訓(xùn)練

    在本文中,我們將詳細(xì)介紹如何使用TensorFlow進(jìn)行簡(jiǎn)單的模型訓(xùn)練。TensorFlow是一個(gè)開(kāi)源的機(jī)器學(xué)習(xí)庫(kù),廣泛用于各種機(jī)器學(xué)習(xí)任務(wù),包括圖像識(shí)別、自然語(yǔ)言處理等。我們將從安裝
    的頭像 發(fā)表于 07-05 09:38 ?749次閱讀

    keras模型轉(zhuǎn)tensorflow session

    在這篇文章中,我們將討論如何將Keras模型轉(zhuǎn)換為TensorFlow session。 Keras和TensorFlow簡(jiǎn)介 Keras是一個(gè)高級(jí)神經(jīng)網(wǎng)絡(luò)API,它提供了一種簡(jiǎn)單、快速的方式來(lái)構(gòu)建
    的頭像 發(fā)表于 07-05 09:36 ?580次閱讀

    TensorFlow的定義和使用方法

    TensorFlow是一個(gè)由谷歌人工智能團(tuán)隊(duì)谷歌大腦(Google Brain)開(kāi)發(fā)和維護(hù)的開(kāi)源機(jī)器學(xué)習(xí)庫(kù)。它基于數(shù)據(jù)流編程(dataflow programming)的概念,將復(fù)雜的數(shù)學(xué)運(yùn)算表示為
    的頭像 發(fā)表于 07-02 14:14 ?853次閱讀

    【正點(diǎn)原子i.MX93開(kāi)發(fā)板試用連載體驗(yàn)】基于深度學(xué)習(xí)的語(yǔ)音本地控制

    實(shí)現(xiàn)語(yǔ)音智能識(shí)別功能。 項(xiàng)目計(jì)劃 1)根據(jù)文檔,學(xué)習(xí)i.MX的AI開(kāi)發(fā)環(huán)境和相關(guān)的程序框架。 2)利用TensorFlow Lite框架進(jìn)行語(yǔ)音識(shí)別的模型建立和訓(xùn)練工作。 3)將所訓(xùn)練的模型移植到NXP
    發(fā)表于 06-30 10:49
    主站蜘蛛池模板: 国产亚洲精品a在线观看app | caoporon超碰在线视频 | 中文字幕亚洲乱码熟女在线萌芽 | 天美传媒在线观看完整高清 | 久久大香线蕉综合爱 | 国产精品久久久久影院嫩草 | 久久精品小视频 | 成人免费无毒在线观看网站 | 91精品欧美一区二区三区 | 人人做人人干 | 日韩精品久久日日躁夜夜躁影视 | a一级毛片视频免费看 | 97久久无码精品AV | 国产人成高清在线视频99 | 99 久久99久久精品免观看 | 精品96在线观看影院 | 最近中文字幕在线中文视频 | 国产成人在线免费观看 | 亚洲精品在线网址 | 精品视频在线一区 | 日本久久久WWW成人免费毛片丨 | 韩国羞羞秘密教学子开车漫书 | 午夜射精日本三级 | 波野结衣qvod | 菠萝视频高清版在线观看 | 欧美国产精品久久久乱码 | 欧美激情视频一区二区 | 亚洲视频在线免费 | 久久久久影视 | 99国产强伦姧在线看RAPE | 国产无遮挡无码视频在线观看不卡 | 欧美zzzoooxxx | www.欧美与曽交性video | 中文天堂www资源 | 久久国产乱子伦免费精品 | 午夜勾魂曲 | 国产精品久久人妻无码网站一区L | 亲胸揉胸膜下刺激视频网站APP | 一级做a爰片久久毛片潮喷动漫 | 无人在线观看免费高清视频播放 | yellow日本动漫观看免费 |