国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

在 C++ 平臺上部署 PyTorch 模型流程+踩坑實錄

共 9162字,需瀏覽 19分鐘

 ·

2024-05-25 13:07

點擊上方小白學視覺”,選擇加"星標"或“置頂”

重磅干貨,第一時間送達

來自 | 知乎   作者丨火星少女

鏈接丨h(huán)ttps://zhuanlan.zhihu.com/p/146453159

最近因為工作需要,要把pytorch的模型部署到c++平臺上,基本過程主要參照官網的教學示例,期間發(fā)現(xiàn)了不少坑,特此記錄。

1.模型轉換

libtorch不依賴于python,python訓練的模型,需要轉換為script model才能由libtorch加載,并進行推理。在這一步官網提供了兩種方法:

方法一:Tracing

這種方法操作比較簡單,只需要給模型一組輸入,走一遍推理網絡,然后由torch.ji.trace記錄一下路徑上的信息并保存即可。示例如下:

import torch
import torchvision

# An instance of your model.
model = torchvision.models.resnet18()

# An example input you would normally provide to your model's forward() method.
example = torch.rand(1, 3, 224, 224)

# Use torch.jit.trace to generate a torch.jit.ScriptModule via tracing.
traced_script_module = torch.jit.trace(model, example)

缺點是如果模型中存在控制流比如if-else語句,一組輸入只能遍歷一個分支,這種情況下就沒辦法完整的把模型信息記錄下來。


方法二:Scripting

直接在Torch腳本中編寫模型并相應地注釋模型,通過torch.jit.script編譯模塊,將其轉換為ScriptModule。示例如下:

class MyModule(torch.nn.Module):
def __init__(self, N, M):
super(MyModule, self).__init__()
self.weight = torch.nn.Parameter(torch.rand(N, M))

def forward(self, input):
if input.sum() > 0:
output = self.weight.mv(input)
else:
output = self.weight + input
return output

my_module = MyModule(10,20)
sm = torch.jit.script(my_module)

forward方法會被默認編譯,forward中被調用的方法也會按照被調用的順序被編譯

如果想要編譯一個forward以外且未被forward調用的方法,可以添加 @torch.jit.export.


如果想要方法不被編譯,可使用

@torch.jit.ignore(https://pytorch.org/docs/master/generated/torch.jit.ignore.html#torch.jit.ignore) 

或者 @torch.jit.unused(https://pytorch.org/docs/master/generated/torch.jit.unused.html#torch.jit.unused)


# Same behavior as pre-PyTorch 1.2
@torch.jit.script
def some_fn():
return 2

# Marks a function as ignored, if nothing
# ever calls it then this has no effect
@torch.jit.ignore
def some_fn2():
return 2

# As with ignore, if nothing calls it then it has no effect.
# If it is called in script it is replaced with an exception.
@torch.jit.unused
def some_fn3():
import pdb; pdb.set_trace()
return 4

# Doesn't do anything, this function is already
# the main entry point
@torch.jit.export
def some_fn4():
return 2

在這一步遇到好多坑,主要原因可歸為一下兩點


1. 不支持的操作

TorchScript支持的操作是python的子集,大部分torch中用到的操作都可以找到對應實現(xiàn),但也存在一些尷尬的不支持操作,詳細列表可見https://pytorch.org/docs/master/jit_unsupported.html#jit-unsupported,下面列一些我自己遇到的操作:

1)參數(shù)/返回值不支持可變個數(shù),例如

def __init__(self, **kwargs):

或者

if output_flag == 0:
return reshape_logits
else:
loss = self.loss(reshape_logits, term_mask, labels_id)
return reshape_logits, loss


2)各種iteration操作

eg1.

layers = [int(a) for a in layers]

報錯torch.jit.frontend.UnsupportedNodeError: ListComp aren’t supported

可以改成:

for k in range(len(layers)):
layers[k] = int(layers[k])

eg2.

seq_iter = enumerate(scores)
try:
_, inivalues = seq_iter.__next__()
except:
_, inivalues = seq_iter.next()

eg3.

line = next(infile)


3)不支持的語句

eg1. 不支持continue

torch.jit.frontend.UnsupportedNodeError: continue statements aren’t supported

eg2. 不支持try-catch

torch.jit.frontend.UnsupportedNodeError: try blocks aren’t supported

eg3. 不支持with語句


4)其他常見op/module

eg1. torch.autograd.Variable

解決:使用torch.ones/torch.randn等初始化+.float()/.long()等指定數(shù)據(jù)類型。

eg2. torch.Tensor/torch.LongTensor etc.

解決:同上

eg3. requires_grad參數(shù)只在torch.tensor中支持,torch.ones/torch.zeros等不可用

eg4. tensor.numpy()

eg5. tensor.bool()

解決:tensor.bool()用tensor>0代替

eg6. self.seg_emb(seg_fea_ids).to(embeds.device)

解決:需要轉gpu的地方顯示調用.cuda()

總之一句話:除了原生python和pytorch以外的庫,比如numpy什么的能不用就不用,盡量用pytorch的各種API。


2. 指定數(shù)據(jù)類型

1)屬性,大部分的成員數(shù)據(jù)類型可以根據(jù)值來推斷,空的列表/字典則需要預先指定

from typing import Dict

class MyModule(torch.nn.Module):
my_dict: Dict[str, int]

def __init__(self):
super(MyModule, self).__init__()
# This type cannot be inferred and must be specified
self.my_dict = {}

# The attribute type here is inferred to be `int`
self.my_int = 20

def forward(self):
pass

m = torch.jit.script(MyModule())

2)常量,使用Final關鍵字

try:
from typing_extensions import Final
except:
# If you don't have `typing_extensions` installed, you can use a
# polyfill from `torch.jit`.
from torch.jit import Final

class MyModule(torch.nn.Module):

my_constant: Final[int]

def __init__(self):
super(MyModule, self).__init__()
self.my_constant = 2

def forward(self):
pass

m = torch.jit.script(MyModule())

3)變量。默認是tensor類型且不可變,所以非tensor類型必須要指明

def forward(self, batch_size:int, seq_len:int, use_cuda:bool):


方法三:Tracing and Scriptin混合

一種是在trace模型中調用script,適合模型中只有一小部分需要用到控制流的情況,使用實例如下:

import torch

@torch.jit.script
def foo(x, y):
if x.max() > y.max():
r = x
else:
r = y
return r


def bar(x, y, z):
return foo(x, y) + z

traced_bar = torch.jit.trace(bar, (torch.rand(3), torch.rand(3), torch.rand(3)))

另一種情況是在script module中用tracing生成子模塊,對于一些存在script module不支持的python feature的layer,就可以把相關layer封裝起來,用trace記錄相關layer流,其他layer不用修改。使用示例如下:

import torch
import torchvision

class MyScriptModule(torch.nn.Module):
def __init__(self):
super(MyScriptModule, self).__init__()
self.means = torch.nn.Parameter(torch.tensor([103.939, 116.779, 123.68])
.resize_(1, 3, 1, 1))
self.resnet = torch.jit.trace(torchvision.models.resnet18(),
torch.rand(1, 3, 224, 224))

def forward(self, input):
return self.resnet(input - self.means)

my_script_module = torch.jit.script(MyScriptModule())


2.保存序列化模型

如果上一步的坑都踩完,那么模型保存就非常簡單了,只需要調用save并傳遞一個文件名即可,需要注意的是如果想要在gpu上訓練模型,在cpu上做inference,一定要在模型save之前轉化,再就是記得調用model.eval(),形如

gpu_model.eval()
cpu_model = gpu_model.cpu()
sample_input_cpu = sample_input_gpu.cpu()
traced_cpu = torch.jit.trace(traced_cpu, sample_input_cpu)
torch.jit.save(traced_cpu, "cpu.pth")

traced_gpu = torch.jit.trace(traced_gpu, sample_input_gpu)
torch.jit.save(traced_gpu, "gpu.pth")


3.C++ load訓練好的模型

要在C ++中加載序列化的PyTorch模型,必須依賴于PyTorch C ++ API(也稱為LibTorch)。libtorch的安裝非常簡單,只需要在pytorch官網(https://pytorch.org/)下載對應版本,解壓即可。會得到一個結構如下的文件夾。

libtorch/
bin/
include/
lib/
share/

然后就可以構建應用程序了,一個簡單的示例目錄結構如下:

example-app/
CMakeLists.txt
example-app.cpp

example-app.cpp和CMakeLists.txt的示例代碼分別如下:

#include <torch/script.h> // One-stop header.
#include <iostream>#include <memory>
int main(int argc, const char* argv[]) {
if (argc != 2) {
std::cerr << "usage: example-app <path-to-exported-script-module>\n";
return -1;
}


torch::jit::script::Module module;
try {
// Deserialize the ScriptModule from a file using torch::jit::load().
module = torch::jit::load(argv[1]);
}
catch (const c10::Error& e) {
std::cerr << "error loading the model\n";
return -1;
}

std::cout << "ok\n";
}


cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(custom_ops)

find_package(Torch REQUIRED)

add_executable(example-app example-app.cpp)
target_link_libraries(example-app "${TORCH_LIBRARIES}")
set_property(TARGET example-app PROPERTY CXX_STANDARD 14)

至此,就可以運行以下命令從example-app/文件夾中構建應用程序啦:

mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=/path/to/libtorch ..
cmake --build . --config Release

其中/path/to/libtorch是之前下載后的libtorch文件夾所在的路徑。這一步如果順利能夠看到編譯完成100%的提示,下一步運行編譯生成的可執(zhí)行文件,會看到“ok”的輸出,可喜可賀!


4. 執(zhí)行Script Module

終于到最后一步啦!下面只需要按照構建輸入傳給模型,執(zhí)行forward就可以得到輸出啦。一個簡單的示例如下:

// Create a vector of inputs.
std::vector<torch::jit::IValue> inputs;
inputs.push_back(torch::ones({1, 3, 224, 224}));

// Execute the model and turn its output into a tensor.
at::Tensor output = module.forward(inputs).toTensor();
std::cout << output.slice(/*dim=*/1, /*start=*/0, /*end=*/5) << '\n';

前兩行創(chuàng)建一個torch::jit::IValue的向量,并添加單個輸入. 使用torch::ones()創(chuàng)建輸入張量,等效于C ++ API中的torch.ones。然后,運行script::Moduleforward方法,通過調用toTensor()將返回的IValue值轉換為張量。C++對torch的各種操作還是比較友好的,通過torch::或者后加_的方法都可以找到對應實現(xiàn),例如

torch::tensor(input_list[j]).to(at::kLong).resize_({batch, 128}).clone()
//torch::tensor對應pytorch的torch.tensor; at::kLong對應torch.int64;resize_對應resize

最后check一下確保c++端的輸出和pytorch是一致的就大功告成啦~

踩了無數(shù)坑,薅掉了無數(shù)頭發(fā),很多東西也是自己一點點摸索的,如果有錯誤歡迎指正!


參考資料:

PyTorch C++ API - PyTorch master document

Torch Script - PyTorch master documentation

文章地址:

https://pytorch.org/cppdocs/

https://pytorch.org/tutorials/advanced/cpp_export.html


     
下載1:OpenCV-Contrib擴展模塊中文版教程
在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。

下載2:Python視覺實戰(zhàn)項目52講
小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

下載3:OpenCV實戰(zhàn)項目20講
小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

交流群


歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~


瀏覽 54
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 91人妻一区二区三区无不码超满 | 草b视频| 国产资源AV| 水蜜桃视频网站在线观看| 蜜柚AV| 国产一级a毛一级a做免费图片 | 性色A| 人人操人人干人人| 操逼无码| 日本黄色视频免费观看| 中文字幕无码亚| 大香蕉日| 337p粉嫩噜噜噜| 天天天做夜夜夜夜爽无码| 国精产品一区二区三区| 国产精品片| 中文电视剧字幕在线播放免费视频| 国产高清无码福利| 中国老少配BBwBBwBBW| 狠狠撸天天日| 一区二区三区不卡视频| 国产毛片基地| 操逼视频免费网站| 91大神在线观看入口| 99热官方网站| 国产99999| 脓肿是什么原因引起的,该怎么治疗 | 黄色大片在线| 亚洲AV无码乱码A片无码沈樵| WWW.豆花视频精品| 激情一区| 91丨露脸丨熟女| 成人做爰黄A片免费看直播室动漫 中文字幕一区二区三区四虎在线 欧美熟妇精品一级A片视色 | 成人啪啪视频| 亚洲视频中文| 老熟妇一区二区三区啪啪| 色婷婷久综合久久一本国产AV | 91精品国产一区二区三区四区大| 一级大黄色毛片| 一级爱爱| 国精产品一区二区三区黑人和中国| 日本二区三区| 久热青草| 成人网站无码| 国产精品码ls字幕影视| 九色无码| 亚洲欧美日韩不卡| 欧美撸一撸| 国产高清AV| 国产成人秘免费观看一区二区三区 | Japanese在线观看| 中文在线一区| 国产酒店自拍| 国产视频成人| 777米奇视频| 日韩av中文字幕在线播放| 九七色色电影| 亚洲男人天堂网| 先锋资源av| 三级精品| 精品国产一区二区三区久久久蜜月 | 欲撸视频| 美女av日逼| 欧美三级片视频| 爱草视频| 亚洲一区在线播放| 翔田AV无码秘三区| 日韩高清无码专区| 午夜精品影院| 色情一级AA片免费观看| 欧美熟妇BBB搡BBB| 国产成人无码一区二区在线观看| 高清无码在线免费视频| 99久久成人| 国产亚洲欧美日韩高清| 无码做爰欢H肉动漫网站在线看| 亚洲最新视频| 久久毛久久久j| 91精品视频在线| 精品人妻无码| 日本人妻中文字幕| 亚洲成人三区| 少妇搡BBBB搡BBB搡澳门| 国产VA| 影音先锋国产| 人妻少妇无码精品| 91九色91蝌蚪91窝成人| 巜痴漢電車~凌脔版2| 中日韩在线| 天天拍夜夜拍| 久久另类TS人妖一区二区| 熟女国产| 亚洲第一大网站| 高清无码不卡在线观看| 黄色操逼大片| 亚洲国产成人在线视频| 俺也来www俺也色com| 一区二区三区日本| 成人精品一区二区三区无码视频| 日本无码精品| 久久久成人影片| 激情国产AV| 波多野结衣视频免费在线观看| 欧美色影院| 国产女人与禽zOz0性| 999久久久精品| 国产精品777777| 欧美性xxxxx| 色九九视频| 五月精品在线| 日韩一区二区视频在线观看| 在线观看中文字幕网站| 国产精品久久久久久久久借妻 | 国产视频一区二区在线观看| 狠狠躁日日躁夜夜躁2022麻豆| 一级片免费网站| 国产色情视频在线观看| 亚洲性天堂| 无码视频韩国| 久久久久久穴| 国产真实乱婬A片三区高清蜜臀 | 黄色一级大片在线免费看国产| 国产av日韩av| 久草欧美| 国产九九九九九九| 熟女在线视频| 美女掰穴| 亚洲无码在线视频播放| 黄色三级在线| 色五月综合网| 蜜桃久久99精品久久久酒店| 欧美色图88| 北条麻妃无码视频| 91无码一区二区三区在线| 91白浆肆意四溢456| 超碰中文在线| 免费A级| 一级婬片A片AAAAA毛片| 久久久国产精品在线| 91热爆TS人妖系列| 俺来也av| 黄色电影网站在线观看| 日本精品中文字幕| av中文字幕网| 青青草在线视频免费观看| 日本三级视频| 懂色午夜福利一区二区三区 | 99久久久精品久久久久久| 亚洲AV毛片成人精品网站| 国产一级A片视频| 日本久久久久久久久视频在线观看 | 另类综合激情| 国产日韩欧美| 北条麻妃无码| 国产日逼视频| 日逼天堂| 亚洲中文字幕视频在线观看| 亚洲精品中文字幕乱码三区91| 国产又粗又猛又爽又黄91精品 | 亚洲少妇熟女| 亚洲性爱视屏| av片在线免费观看| 天天干,夜夜爽| 人人爽亚洲AV人人爽AV人人片 | av青青草原| 少妇激情av| 老熟女搡BBBB搡BBBB视频| 国产a视频| 在线观看欧美日韩| a国产| 狠狠色婷婷| 亚洲国产精品成人综合色五月| 水果派解说A∨无码区| 色情片在线播放| 亚洲一区2区| 自拍视频国产| 成年女人免费视频| 久久三级片电影| 中文字幕成人免费视频| 刘玥一级婬片A片AAA| 欧美成人大片| 亚洲专区在线| 人人摸人人艹| 亚洲综合激情五月久久| 婷婷激情五月综合| 欧美一区二区三区在线播放 | 强伦轩农村人妻| 色婷婷在线视频| 国产精品无码久久久久成人app | 日本高清无码| www,操逼| 高清毛片AAAAAAAAA郊外| 国产一区二区三区免费观看| 成人免费视频一区二区| 国模私拍视频| 99久久久成人国产精品| 国产又大又粗又爽| 爆操无码| 青青青青青操| 青青青草视频在线| 69成人网站| 欧美性生活| 大香蕉伊人导航| av福利在线| 俺去俺来WWW色官方| 欧美熟妇精品黑人巨大一二三区| 日韩日逼视频| 日本最新免费二区| 久久久久久久AV| 欧美成人大片| 无码一区二区视频| 天天干天天日天天干| 99久久爱re热6在播放| 国产伦精品一区二区三区妓女下载 | xxxxx日韩| 国内自拍第一页| 九七影院第二页| 色就是亚洲| 在线成人AV| 国产婷婷色| 久久精品三级片| 午夜撸一撸| 2024av在线| 影音先锋亚洲AV| 黄片午夜| 国产av福利| 日韩黄色A级片| 在线观看AV资源| 亚洲中文字幕免费在线观看| 无码视频观看| 亚洲中字幕新| www九九| 北条麻妃波多波多野结衣| 青青无码| 国产香蕉视频| 高清无码视频在线| 国产成人免费看| 中文字幕亚洲一区| 欧美视频一区二区三区| 国产一区二区三区视频在线| 色悠悠久久综合| 精品麻豆| 久久三级| 黃色毛片A片AAAA级20| 免费A在线| 久久亚洲欧美| 懂色av粉嫩AV蜜臀AV| 国产精品人妻无码一区牛牛影视| 99久久精品国产一区二区成人| 好吊看视频| 最近中文字幕2022在线观看A| 久久伊人亚洲| 亚洲AV性爱| 欧美黄色一级视频| 欧美视频综合网| 日本道在线视频| 777无码| 一区二区三区无码视频| www.91超碰在线| a√天堂中文在线8| 重庆美女揉BBBB搡BBBB| 久久久久久久毛片| 色哟哟无码精品一区二区三区| 日韩国产一区二区| 农民av| AV中文无码| 国产精品婷婷午夜在线观看| 在线观看中文字幕av| 色哟哟一区二区三区四区| 日韩免费黄色视频| 毛片传媒| 国产人成视频免费观看| 东方av在线播放| 国产视频你懂的| 日韩无码人妻一区二区三区| 久久久久亚洲AV无码网影音先锋| 亚洲无码专区在线观看| 国产乱伦视频| 在线观看亚| 在线免费看a片| 国产又爽又黄免费观看视频| 无码人妻一区二区三一区免费n狂飙 | 一区在线播放| 大黑逼AV| 中文字幕成人无码| 亚洲一级av| 久久久久久免费一级A片| 777超碰| 免费看黄色片| 日本一区二区三区视频在线观看| 成人高清无码在线观看| 激情五月综合| 中文一区在线观看| 91青青草视频| 天天躁狠狠躁夜躁2024| 乱伦婷婷| 91资源在线| 懂色一区二区二区在线播放视频| av无码免费| 欧美日韩黄| 欧美一级特黄A片免费观看| 一区二区无码区| 日本无码在线| 成人无码影院日韩,成人年…| 亚洲人成无码| 久久中文字幕电影| 国产五月天婷婷| 最新超碰| 欧美成人综合| 免费观看黄色AV| 亚洲无码一级| 熟女资源站| 91污| 亚洲va综合va国产va中文| 久久久五月| 性爱无码| 无码免费在线观看视频| 亚洲一卡二卡| 无码欧精品亚洲日韩一区| 国产成人无码永久免费| av无码导航| 视频在线观看一区| 51妺嘿嘿午夜福利在线| H片在线免费观看| 影音先锋日韩资源| 免费A级毛片在线播放不收费| 日本AⅤ中文字幕| 大黑人荫蒂BBBBBBBBB| 亚洲人妻电影一区| 特级婬片A片AAA毛片AA做头| 国产成人AV免费观看| 成人网站无码| 91成人片| 北条麻妃波多波多野结衣| 国产欧美一区二区精品性色超碰| 在线观看日韩视频| 91国产爽黄在线相亲| 97人人爽人人爽人人爽人人爽| 在线观看黄色电影| 精品国产精品三级精品AV网址| 亚洲69视频| 俺去啦俺去也| 青青操逼视频| 天天色天天色| 欧美成人性爱视频| 黄色av网站在线观看| 成人午夜视频在线观看| 免费无码国产在线怀| 亚洲成人视频免费观看| 亚洲免费av在线| 无码免费视频在线观看| 小小拗女BBw搡BBBB搡| 日本十八禁网站| 91久久精品一区二区三区| 国产成人无码永久免费| 苍井空精毛片精品久久久| 天堂综合| 霸道总裁雷总各种姿势白浆爱情岛论坛 | 91久久成人| youjizzcom日本| 亚洲日韩成人在线| 国产和日韩中文字幕| 国产成人无码精品久在线观看| 被男友内S~高H文| 西西444WWW无码精品| 亚洲国产女人| 欧美性夜黄A片爽爽免费视频| 91人妻无码视频| 日韩操操操| 中文字幕一区三区人妻视频| www.17c嫩嫩草色蜜桃网站| 在线不卡无码| 亚洲天堂无码在线观看| 婷婷中文字幕亚洲| 国产福利av| 9l视频自拍九色9l视频成人| 伊人大香蕉视频| 美女操逼图| 日韩视频一级| 亚洲涩情91日韩一区二区| 日本特黄一级片| 3D动漫啪啪精品一区二区中文字幕 | 日本在线不卡一区| 琪琪色视频| 日韩高清无码免费观看| 美女做爱网站| 日本黄色电影在线观看| 免费视频一区二区| 青娱乐偷拍视频| 影音av在线| 一级特黄AAAA片| 久久久WWW成人免费无遮挡大片| 久久久久久亚洲Av无码精品专口| 国产精品av在线播放| 天天射综合| 成人在线A片| 天天操天天操天天操天天| 99精品人妻| 国产免费AV在线观看| a在线| 国产精品无码免费视频| 日韩三级在线免费观看| 日本不卡视频在线| 狠狠色噜噜狠狠狠888| 这里有精品| 亚洲操色| 中文字幕在线播放AV| 99色综合| 好吊妞在线观看| 国产xxxx| 日韩精品一区二区三区中文在线| 欧美操大逼| 无码精品一区二区三区同学聚会| 色悠悠国产| 牛牛成人在线视频| 国产又大又粗| 乱伦小说五月天| 婷婷久久综合久色| 黄色片在线观看视频| 香蕉国产在线视频| 久久波多野结衣| 亚洲人成电影网| 大奶一区二区| 久操福利| 69色色| 人妻无码| 亚洲va视频| 在线观看中文字幕无码| 亚洲日韩精品秘在线观看| 日韩一级片在线播放| 无码任你操| 久久性爱网站| 毛片久久久| 国产女同在线观看| 国产白丝在线观看| 天天干妹子| 亚洲一区免费| 国产高清无码自拍| 国产成人精品一区| 国产激情123区| 成人午夜福利网站| 天天干在线观看| 日韩成人AV在线播放| 亚洲AV成人片无码网站网蜜柚| 开心激情网五月天| 在线成人视频网站大香蕉在线网站 | 深夜福利18| 动漫人物插画动漫人物的视频软件| 日本三级视频| 69视频免费观看| 亚洲视频在线免费| 日本人妻A片成人免费看片| 日本A片免费观看| 免费无码国产在线怀| 99热超碰| 欧美XXX黑人XYX性爽| 亚洲天堂无码av| 日韩码线观看视频| 一区二区三区中文字幕| 影音先锋男人网| 国产精品乱码毛片在线人与| 91免费国产视频| 黄色a片视频| 高清无码片| 免费看操逼视频| 国产精品不卡在线观看| 91精品国产91久久久久久吃药| 婷婷综合网| 欧美a级视频| 亚洲群交视频| 国产AV久| 特级西西WWW888| 日韩不卡一区| 在线操逼视频| aa无码视频| 内射极品美女| 色综合久久久| 欧美日韩伊人| 国产激情av| 国产操美女| 四虎看片| 免费观看久久久| 黄色电影A片| www.热久久| 超碰人人人人人人人人| 无码不卡视频在线观看| 一区二区三区四区免费| 日本中文字幕亚洲| 男人的天堂色琪琪| 精品九九九| 不卡无码在线观看| 国产三级在线免费观看| 色婷婷激情在线| 99视频在线| 成人午夜视频在线观看| 91香蕉视频免费在线观看| 日韩AV资源网| 国产黄色电影| 国产一级a毛一级做a爱| 黄色片在线观看视频| 亚洲AV无码乱码A片无码沈樵| 亚洲搞清视频日本| 日本不卡一区二区三区| 午夜福利aaa| 国产一区二区不卡亚洲涩情| 樱桃码一区二区三区| 日韩黄色毛片| 天天天天天天操| 一级日逼视频| 色丁香五月| 91激情在线| jizz在线观看视频| 毛片三级片| 国产精品久久毛片| 2019中文字幕mv第三季歌词 | 欧美日韩精品在线视频| 国产A级毛片久久久久久| 永久免费不卡在线观看黄网站| 蜜桃精品视频| 日本在线小视频| 日韩人妻精品中文字幕专区不卡| 六月婷婷在线| 成人二区三区| 免费黄色| A视频在线观看| 91成人在线播放| 中韩日美免费看的电影| 视频一区二区免费| 岛国av在线| 婷婷五月视频| 深夜福利18| 日韩欧美中文字幕公布| 成人性爱视频免费在线观看| 久久91av| 秋霞福利视频| 国产精品久久久久久久久久九秃| 婷婷激情av| 亚洲第一成年人网站| 欧美熟女内射| 驲韩在线视频免费观看| 久久99精品视频| 成人做爰100片免费观看视频| 丁香网五月天| 激情五月天开心网| www.99免费视频| 久久国产精品视频| 欧美人操逼| 激情视频在线免费观看| 国产精品一区二区三区在线| 国产成人秘在线观看免费网站| 日韩一级乱伦| 雾水情缘电影港片| 国产内射在线观看| 亚洲免费小视频| 国产精品秘久久久久久1-~/\v7-/| 国产一级a毛一级a毛观看视频网站www.jn | 国产成人精品123区免费视频| 免费黄色欧美| 亚洲香蕉影院| 日韩无码波多野结衣| 中国免费视频高清观看| 一级爱爱| 亚洲无码成人网站| av午夜福利| 人人操人人搞| 国产精品宾馆在线| 成人网站中文字幕| 黄色网址五月天| 乳揉みま痴汉电车羽月希免费观看 | 色综合一区| 久久精品夜色噜噜亚洲A∨| 日本成人A片| 国产一级二级片| 日韩72页| 天天综合字幕一区二区| 激情淫荡少妇| 黄色片在线免费观看| 暗呦网一区二区三区| 三级在线观看视频| 久久久久蜜桃| 亚洲无码AV网站| 欧美在线一级片| 波多野结衣无码网站| 91人妻一区二区三区无不码超满 | 亚洲精品国产精品国自产| 成年人免费公开视频| 久色婷婷在线| 国产黄片自拍| 午夜性爽视频男人的天堂| 亚洲无码免费看| 国产精品1| 性久久久久久久| 18禁一区| 成人在线不卡| www五月天| а中文在线天堂精品| 久久久久亚洲AV无码网影音先锋 | 亚洲133| 久久精品欧美| 成人在线免费视频观看| 日韩无码A片| 51av在线| 青春草免费视频| 中文字幕国产精品| 亚洲中文字幕免费在线观看| 成人无码国产| 色猫咪av| 免费在线观看视频a| 丁香五月成人网| 99在线小视频| 伊人三级网| 久久久婷婷五月亚洲国产精品| 天天干强奸视频在线综合| 亚洲黄色片| 久久一级片| 亚洲日韩中文字幕在线观看| 日韩色| 欧洲成人在线| 欧美视频精品| 欧美午夜视频| 18毛片| 三级无码在线| 岛国AV在线播放| 欧美夜夜骑| 欧美A片在线播放| 亚洲AV播放| 久久蜜桃视频| 欧美成人看片黄a免费看| 欧美性爱XXXX黑人XYX性爽| 成人三级片网| 亚洲AV无码成人片在线| 亚洲高清无码视频在线播放| 四虎成人精品永久免费AV九九 | 热re99久久精品国产99热| 中文字幕成人免费视频| 伊人偷拍视频| 学生妹一级大片| 自慰一区| 五月黄片| 影音先锋麻豆传媒| 日本AⅤ中文字幕| 黄色网址在线观看视频| 2019中文字幕mv第三季歌词 | 熟女人妻人妻の视频| 日本亚洲欧美| 操逼的网站| 日韩高清不卡| 日韩成人无码AV| 免费小视频| 一区二区三区视频在线观看| 国产高清视频在线观看| 人人爱人人插| 亚洲日韩AV在线| 亚洲天堂无码在线| 黄片免费大全| 国产综合自拍| 蜜桃秘一二三区最新| 色欲影视插综合一区二区三区| 女侠吕四娘第二部| 国产精品视频一区二区三| 丁香五月少妇| 日韩A片免费| 996热久久| 欧美A片免费观看| 少妇熟女视频| 韩国无码AV| 在线观看亚洲无码视频| www.jiujiujiu| 俺去也俺去啦| 激情另类视频| 亚洲五区| 日日操网| 麻豆精品在线观看| 激情五月天在线观看| 亚洲中文免费视频| www.777av| 在线观看无码高清| 国产精品综合激情| 97久久久| 五月激情综合网| 综合网亚洲| 一区二区三区久久| www伦理片-韩国三级三级三级a三级-成人AV | 成人大片在线观看| 做爰视频毛片下载蜜桃视频。| 成人电影一区二区| 懂色av粉嫩av蜜臀av| 99热香蕉| 97在线免费视频| 成人无码一区| 日韩另类| 亚洲熟女一区二区三区妖精| 色婷婷久久久久swag精品| 婷婷欧美色图| 99精品国产一区二区| 日韩国产传媒| 97超碰资源站| 亚洲中文字幕免费在线观看| 一区二区日本| 国产精品色8| 无码中文字幕网站| 天天拍夜夜操| 婷婷五月天丁香| 无码不卡视频在线观看| 免费看a的网站| 久久高潮| 九九九网站| 停停六综合| 欧美人妻日韩精品| 成人超碰| 91夫妻视频| 日本免费一级片| 日韩精品在线免费观看| 就去色色五月丁香婷婷久久久| TokyoKot大交乱无码| 91麻豆国产视频| 青青草狠狠干| 精品无码一区二区Av蜜桃| 99亚洲视频| 成人在线h| www.51av| 网址你懂的| 北条麻妃在线播放一区| 人妻懂色av粉嫩av浪潮av| 爱搞视频| 天堂a√在线8| 亚洲人成色777777无码| 色婷婷一级A片AAA毛片| 欧美久久久久| 久久国产精品视频| 青娱在线视频| 黑种人配中国少妇HD| 永久m3u8在线观看| 乱子伦国产精品www| 婷婷久久亚洲| 水果派解说在线观看| 97中文字幕| 精品国产一区二区三区性色AV| 久久黄色成人视频| 成人精品一区日本无码网站suv/| 亚洲无码AV网站| AV黄色网址| AA片免费网站| 欧美日韩国产在线观看| 91亚洲国产成人| 最新中文字幕无码| 亚洲无| 国产无码二区| 青青草激情视频| av高清无码| 国产美女一级特黄大片| 在线中文AV| 日本一区二区视频在线| 一道本视频| 成人H动漫精品一区二区三区蘑菇 高清无码视频在线免费观看 | 美女被操91| 日本在线免费观看| 另类老妇性bbwbbwbbw| 欧美成人在线免费| 欧美在线| 日韩VA| 91豆花视频| 国产激倩都市一区二区三区欧美 | 日韩黄色网| 国产精品无码永久免费A片| 国产一区在线观看视频| 久久肏屄| 日韩久久电影| 亚洲永久| 天天视频狠狠狠狠| 亚洲午夜久久| 久操亚洲| 蜜桃BBwBBWBBwBBw| 成人在线视频免费观看| 成人手机看片| 午夜精品久久久久久久91蜜桃| 91青青草在线| 欧美日韩操逼视频| 蜜桃视频一区二区三区四区av| JlZZJLZZJlZZ亚洲女人17| 久操麻豆| 亚洲日韩成人在线| BBW老熟女BBw| 亚洲133| 欧美成人在线免费| wwwAV在线观看| 精品国产一区二区三区久久久蜜月 | 国产av日韩| 陈冠希和张柏芝mv| 东方美美高清无码一区| 成人免费无码激情AV片| 国产中文字幕波多| 色丁香婷婷| 国产黄色免费| 国产美女网站| 澳门无码视频| 亚洲午夜精品视频| 日韩色情片| 亚洲一线在线观看| 无码蜜桃一区二区| 欧美成人毛片一级A片| 中国熟妇XXXX18| 人妻少妇偷人精品无码免费| 精品国产香蕉| 欧美日韩成人一区二区三区| 777久久久| 丰满人妻一区二区三区视频在线不卡| 成人一级黄色电影| 西西444WWW无码大胆知乎| 亚洲综合免费观看高清| 色我影院| 麻豆999| 无码专区在线观看| 东方av在线观看| 极品少妇视频| 老司机精品| 国产美女av| 天天操综合网| 91成人在线影院| 亚州在线中文字幕经典a| 亚洲中文字幕2025| 性感成人在线| 天天操夜夜操狠狠| 欧美黄色成人网站| 精品偷拍| 久操手机在线| 黄色一级片免费观看| 北条麻妃无码视频在线观看| 天堂A片电影网站在线观看| 日本成人免费| 日日干综合| 午夜社区| 日韩av电影免费在线观看| 免费成人三级片| 淫香淫色综合网| 日本中出视频| 国产高清a| 91人人妻人人澡人人爽人人 | 大香蕉青青| 国产一区二区三区四区五区在线| 少妇搡BBBB搡BBBB毛多多| 97超碰色| 黄色草逼视频| 在线观看的av| 九九色在线视频| 日本爱爱网址| 五月丁香伊人| 高清无码不卡AV| 乱伦AV片| 国产无码成人免费| 99久久99久久99久久久99国产| 日逼黄色视频| 羽月希无码| 手机看片久草| 超碰操一操| 欧美日韩三区| 一级操逼视频免费观看| 国产一级AV免费观看| 熟女三区| 亚洲精品国产成人无码区在线| 一个人看的www日本高清视频 | 99精品视频北条麻妃国产版| 乱伦AV片| 99久久婷婷国产综合精品电影| 爱爱视频日韩| 色片无码| 欧美性爱中文字幕| 日韩天堂在线播放| 国产欧美日韩一区二区三区| 人人看人人摸人人操| 欧美一区二区三区成人| 日韩av中文字幕在线| 四虎网站| 九一成人网| 黄片免费看视频| 吴梦梦md0069| 日本亲子乱婬一级A片| www.yw尤物| 中文字幕在线播放AV| 俺来俺也去www色在线观看| 日韩美女视频19| 国产高清激情| 亚洲黄色成人| 亚洲成人一区| 国产综合久久久777777色胡同| 欧美三级欧美成人高清| 色四播播| 国产精品不卡在线| 热99| 69AV网站| www一级片| 欧美丝袜脚交xxxxBH| 亚洲ww国产a大作| 99精品在线免费观看| 欧美黑人操逼视频| 亚州视频在线| 亚洲激情综合| www.午夜福利| 97狠狠| 操一操干一干|