久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

PyTorch模型轉TensorRT是怎么實現的?

瀏覽:6日期:2022-06-16 14:07:02
轉換步驟概覽 準備好模型定義文件(.py文件) 準備好訓練完成的權重文件(.pth或.pth.tar) 安裝onnx和onnxruntime 將訓練好的模型轉換為.onnx格式 安裝tensorRT環境參數

ubuntu-18.04PyTorch-1.8.1onnx-1.9.0onnxruntime-1.7.2cuda-11.1cudnn-8.2.0TensorRT-7.2.3.4PyTorch轉ONNX

Step1:安裝ONNX和ONNXRUNTIME

網上找到的安裝方式是通過pip

pip install onnxpip install onnxruntime

如果使用的是Anaconda環境,conda安裝也是可以的。

conda install -c conda-forge onnxconda install -c conda-forge onnxruntime

Step2:安裝netron

netron是用于可視化網絡結構的,便于debug。

pip install netron

Step3 PyTorch轉ONNx

安裝完成后,可以根據下面code進行轉換。

#--*-- coding:utf-8 --*--import onnx # 注意這里導入onnx時必須在torch導入之前,否則會出現segmentation faultimport torchimport torchvision from model import Netmodel= Net(args).cuda()#初始化模型checkpoint = torch.load(checkpoint_path)net.load_state_dict(checkpoint[’state_dict’])#載入訓練好的權重文件print ('Model and weights LOADED successfully')export_onnx_file = ’./net.onnx’x = torch.onnx.export(net,torch.randn(1,1,224,224,device=’cuda’), #根據輸入要求初始化一個dummy inputexport_onnx_file,verbose=False, #是否以字符串形式顯示計算圖input_names = ['inputs']+['params_%d'%i for i in range(120)],#輸入節點的名稱,這里也可以給一個list,list中名稱分別對應每一層可學習的參數,便于后續查詢output_names = ['outputs'],# 輸出節點的名稱opset_version = 10,#onnx 支持采用的operator set, 應該和pytorch版本相關do_constant_folding = True,dynamic_axes = {'inputs':{0:'batch_size'}, 2:'h', 3:'w'}, 'outputs':{0: 'batch_size'},})net = onnx.load(’./erfnet.onnx’) #加載onnx 計算圖onnx.checker.check_model(net) # 檢查文件模型是否正確onnx.helper.printable_graph(net.graph) #輸出onnx的計算圖

dynamic_axes用于指定輸入、輸出中的可變維度。輸入輸出的batch_size在這里都設為了可變,輸入的第2和第3維也設置為了可變。

Step 4:驗證ONNX模型

下面可視化onnx模型,同時測試模型是否正確運行

import netronimport onnxruntimeimport numpy as npfrom PIL import Imageimport cv2netron.start(’./net.onnx’)test_image = np.asarray(Image.open(test_image_path).convert(’L’),dtype=’float32’) /255.test_image = cv2.resize(np.array(test_image),(224,224),interpolation = cv2.INTER_CUBIC)test_image = test_image[np.newaxis,np.newaxis,:,:]session = onnxruntime.InferenceSession(’./net.onnx’)outputs = session.run(None, {'inputs': test_image})print(len(outputs))print(outputs[0].shape)#根據需要處理一下outputs[0],并可視化一下結果,看看結果是否正常ONNX轉TensorRT

Step1:從NVIDIA下載TensorRT下載安裝包 https://developer.nvidia.com/tensorrt

根據自己的cuda版本選擇,我選擇的是TensorRT 7.2.3,下載到本地。

cd download_pathdpkg -i nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.3.4-ga-20210226_1-1_amd64.debsudo apt-get updatesudo apt-get install tensorrt

查了一下NVIDIA的官方安裝教程https://docs.nvidia.com/deeplearning/tensorrt/quick-start-guide/index.html#install,由于可能需要調用TensorRT Python API,我們還需要先安裝PyCUDA。這邊先插入一下PyCUDA的安裝。

pip install ’pycuda<2021.1’

遇到任何問題,請參考官方說明 https://wiki.tiker.net/PyCuda/Installation/Linux/#step-1-download-and-unpack-pycuda如果使用的是Python 3.X,再執行一下以下安裝。

sudo apt-get install python3-libnvinfer-dev

如果需要ONNX graphsurgeon或使用Python模塊,還需要執行以下命令。

sudo apt-get install onnx-graphsurgeon

驗證是否安裝成功。

dpkg -l | grep TensorRT

PyTorch模型轉TensorRT是怎么實現的?

得到類似上圖的結果就是安裝成功了。

問題:此時在python中import tensorrt,得到ModuleNotFoundError: No module named ’tensorrt’的報錯信息。

網上查了一下,通過dpkg安裝的tensorrt是默認安裝在系統python中,而不是Anaconda環境的python里的。由于系統默認的python是3.6,而Anaconda里使用的是3.8.8,通過export PYTHONPATH的方式,又會出現python版本不匹配的問題。

重新搜索了一下如何在anaconda環境里安裝tensorRT。

pip3 install --upgrade setuptools pippip install nvidia-pyindexpip install nvidia-tensorrt

驗證一下這是Anconda環境的python是否可以import tensorrt。

import tensorrtprint(tensorrt.__version__)#輸出8.0.0.3

Step 2:ONNX轉TensorRT

先說一下,在這一步里遇到了*** AttributeError: ‘tensorrt.tensorrt.Builder’ object has no attribute ’max_workspace_size’的報錯信息。網上查了一下,是8.0.0.3版本的bug,要退回到7.2.3.4。emmm…

pip unintall nvidia-tensorrt #先把8.0.0.3版本卸載掉pip install nvidia-tensorrt==7.2.* --index-url https://pypi.ngc.nvidia.com # 安裝7.2.3.4banben

轉換代碼

import pycuda.autoinit import pycuda.driver as cudaimport tensorrt as trtimport torch import time from PIL import Imageimport cv2,osimport torchvision import numpy as npfrom scipy.special import softmax### get_img_np_nchw h和postprocess_the_output函數根據需要進行修改TRT_LOGGER = trt.Logger()def get_img_np_nchw(img_path):img = Image.open(img_path).convert(’L’)img = np.asarray(img, dtype=’float32’)img = cv2.resize(np.array(img),(224, 224), interpolation = cv2.INTER_CUBIC)img = img / 255.img = img[np.newaxis, np.newaxis]return imageclass HostDeviceMem(object): def __init__(self, host_mem, device_mem):'''host_mom指代cpu內存,device_mem指代GPU內存'''self.host = host_memself.device = device_mem def __str__(self):return 'Host:n' + str(self.host) + 'nDevice:n' + str(self.device) def __repr__(self):return self.__str__()def allocate_buffers(engine): inputs = [] outputs = [] bindings = [] stream = cuda.Stream() for binding in engine:size = trt.volume(engine.get_binding_shape(binding)) * engine.max_batch_sizedtype = trt.nptype(engine.get_binding_dtype(binding))# Allocate host and device buffershost_mem = cuda.pagelocked_empty(size, dtype)device_mem = cuda.mem_alloc(host_mem.nbytes)# Append the device buffer to device bindings.bindings.append(int(device_mem))# Append to the appropriate list.if engine.binding_is_input(binding): inputs.append(HostDeviceMem(host_mem, device_mem))else: outputs.append(HostDeviceMem(host_mem, device_mem)) return inputs, outputs, bindings, streamdef get_engine(max_batch_size=1, onnx_file_path='', engine_file_path='',fp16_mode=False, int8_mode=False,save_engine=False): ''' params max_batch_size: 預先指定大小好分配顯存 params onnx_file_path: onnx文件路徑 params engine_file_path: 待保存的序列化的引擎文件路徑 params fp16_mode: 是否采用FP16 params int8_mode: 是否采用INT8 params save_engine: 是否保存引擎 returns: ICudaEngine ''' # 如果已經存在序列化之后的引擎,則直接反序列化得到cudaEngine if os.path.exists(engine_file_path):print('Reading engine from file: {}'.format(engine_file_path))with open(engine_file_path, ’rb’) as f, trt.Runtime(TRT_LOGGER) as runtime: return runtime.deserialize_cuda_engine(f.read()) # 反序列化 else: # 由onnx創建cudaEngine# 使用logger創建一個builder # builder創建一個計算圖 INetworkDefinitionexplicit_batch = 1 << (int)(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)# In TensorRT 7.0, the ONNX parser only supports full-dimensions mode, meaning that your network definition must be created with the explicitBatch flag set. For more information, see Working With Dynamic Shapes.with trt.Builder(TRT_LOGGER) as builder, builder.create_network(explicit_batch) as network, trt.OnnxParser(network, TRT_LOGGER) as parser, builder.create_builder_config() as config: # 使用onnx的解析器綁定計算圖,后續將通過解析填充計算圖 profile = builder.create_optimization_profile() profile.set_shape('inputs', (1, 1, 224, 224),(1,1,224,224),(1,1,224,224)) config.add_optimization_profile(profile) config.max_workspace_size = 1<<30 # 預先分配的工作空間大小,即ICudaEngine執行時GPU最大需要的空間 builder.max_batch_size = max_batch_size # 執行時最大可以使用的batchsize builder.fp16_mode = fp16_mode builder.int8_mode = int8_mode if int8_mode:# To be updatedraise NotImplementedError # 解析onnx文件,填充計算圖 if not os.path.exists(onnx_file_path):quit('ONNX file {} not found!'.format(onnx_file_path)) print(’loading onnx file from path {} ...’.format(onnx_file_path)) # with open(onnx_file_path, ’rb’) as model: # 二值化的網絡結果和參數 # print('Begining onnx file parsing') # parser.parse(model.read()) # 解析onnx文件 parser.parse_from_file(onnx_file_path) # parser還有一個從文件解析onnx的方法 print('Completed parsing of onnx file') # 填充計算圖完成后,則使用builder從計算圖中創建CudaEngine print('Building an engine from file{}’ this may take a while...'.format(onnx_file_path)) ################# # import pdb;pdb.set_trace() print(network.get_layer(network.num_layers-1).get_output(0).shape) # network.mark_output(network.get_layer(network.num_layers -1).get_output(0)) engine = builder.build_engine(network,config) # 注意,這里的network是INetworkDefinition類型,即填充后的計算圖 print('Completed creating Engine') if save_engine: #保存engine供以后直接反序列化使用with open(engine_file_path, ’wb’) as f: f.write(engine.serialize()) # 序列化 return enginedef do_inference(context, bindings, inputs, outputs, stream, batch_size=1): # Transfer data from CPU to the GPU. [cuda.memcpy_htod_async(inp.device, inp.host, stream) for inp in inputs] # Run inference. context.execute_async(batch_size=batch_size, bindings=bindings, stream_handle=stream.handle) # Transfer predictions back from the GPU. [cuda.memcpy_dtoh_async(out.host, out.device, stream) for out in outputs] # Synchronize the stream stream.synchronize() # Return only the host outputs. return [out.host for out in outputs]def postprocess_the_outputs(outputs, shape_of_output): outputs = outputs.reshape(*shape_of_output) out = np.argmax(softmax(outputs,axis=1)[0,...],axis=0) # import pdb;pdb.set_trace() return out# 驗證TensorRT模型是否正確onnx_model_path = ’./Net.onnx’max_batch_size = 1# These two modes are dependent on hardwaresfp16_mode = Falseint8_mode = Falsetrt_engine_path = ’./model_fp16_{}_int8_{}.trt’.format(fp16_mode, int8_mode)# Build an engineengine = get_engine(max_batch_size, onnx_model_path, trt_engine_path, fp16_mode, int8_mode , save_engine=True)# Create the context for this enginecontext = engine.create_execution_context()# Allocate buffers for input and outputinputs, outputs, bindings, stream = allocate_buffers(engine) # input, output: host # bindings# Do inferenceimg_np_nchw = get_img_np_nchw(img_path)inputs[0].host = img_np_nchw.reshape(-1)shape_of_output = (max_batch_size, 2, 224, 224)# inputs[1].host = ... for multiple inputt1 = time.time()trt_outputs = do_inference(context, bindings=bindings, inputs=inputs, outputs=outputs, stream=stream) # numpy datat2 = time.time()feat = postprocess_the_outputs(trt_outputs[0], shape_of_output)print(’TensorRT ok’)print('Inference time with the TensorRT engine: {}'.format(t2-t1))

根據https://www.jb51.net/article/187266.htm文章里的方法,轉換的時候會報下面的錯誤:

PyTorch模型轉TensorRT是怎么實現的?

原來我是根據鏈接里的代買進行轉換的,后來進行了修改,按我文中的轉換代碼不會有問題,

修改的地方在

with trt.Builder(TRT_LOGGER) as builder, builder.create_network(explicit_batch) as network, trt.OnnxParser(network, TRT_LOGGER) as parser, builder.create_builder_config() as config: # 使用onnx的解析器綁定計算圖,后續將通過解析填充計算圖 profile = builder.create_optimization_profile() profile.set_shape('inputs', (1, 1, 224, 224),(1,1,224,224),(1,1,224,224)) config.add_optimization_profile(profile) config.max_workspace_size = 1<<30 # 預先分配的工作空間大小,即ICudaEngine執行時GPU最大需要的空間 engine = builder.build_engine(network,config)

將鏈接中相應的代碼進行修改或添加,就沒有這個問題了。

到此這篇關于PyTorch模型轉TensorRT是怎么實現的?的文章就介紹到這了,更多相關PyTorch模型轉TensorRT內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: PyTorch TensorRT
相關文章:
主站蜘蛛池模板: 日韩福利视频 | 成人综合社区 | 亚洲精品99 | 国产人成精品一区二区三 | 日本精品视频在线观看 | 久久久亚洲精品中文字幕 | 亚洲一区二区三区在线 | 国产成人精品免高潮在线观看 | 天堂在线视频 | 精品亚洲成a人在线观看 | 婷婷在线观看视频 | 91视频久久 | 国产日韩一区 | 日韩欧美一二三区 | 亚洲第一色片 | 国产免费久久 | 99久久婷婷国产综合精品 | 日韩中文字幕一区 | 欧洲美女7788成人免费视频 | 国产日韩av在线 | 免费成人在线网站 | 中文字幕第18页 | 久草.com| 一级毛片视频 | 久久av网址 | 91看片淫黄大片一级在线观看 | 欧美一区二区三区在线观看视频 | 亚洲成人一区二区三区 | 在线观看视频一区二区三区 | 天天操天天拍 | 国产欧美精品一区二区色综合 | 国产精品久久久久一区二区三区 | 99re热精品视频 | 欧美久久影视 | 欧美激情视频一区二区三区在线播放 | 欧美日韩在线一区二区 | 成人免费一区二区三区视频网站 | 国产精品第一国产精品 | 老司机深夜福利在线观看 | 亚洲精品片 | 激情小视频在线观看 | 免费一区二区三区 | 日日干天天干 | 久久成人精品视频 | 国产精品美女视频免费观看软件 | www.xxx在线观看 | 一级黄色短片 | 国产在线中文字幕 | 91久久久久 | 日本福利视频 | 成人片免费看 | 欧美日韩免费在线 | 伊人久操 | 日韩一区二区三区在线观看 | 国产精品久久九九 | 亚洲美女视频在线观看 | 91九色麻豆 | 国产精品一区二区在线观看 | 国产精品久久久久久吹潮 | 国产免费一区 | 午夜影视免费观看 | 先锋资源中文字幕 | 日韩日韩日韩日韩日韩日韩 | 成人高清视频免费观看 | 日韩中文字幕在线免费观看 | 91麻豆精品国产91久久久资源速度 | 中国特级黄色片 | 国产高清在线精品一区二区三区 | 久久精品国产精品 | 日韩精品视频免费专区在线播放 | 欧美成人一区二区三区片免费 | 欧美激情五月 | 国产99久久精品一区二区永久免费 | 国产精品久久久久无码av | 日韩手机专区 | 羞羞的视频在线观看 | 一区二区三区在线播放 | 一级网站在线观看 | 亚洲天堂久久 | 免费在线成人 | 日本福利视频免费观看 | 中文字幕99 | 成人在线视频免费观看 | 久久久久久国产免费视网址 | 久久在线播放 | 一二三四在线视频观看社区 | 国产艳妇av视国产精选av一区 | 久久这里精品 | 一区二区视频 | 亚洲高清精品视频 | 成人精品在线视频 | 亚洲在线电影 | 91麻豆精品国产91久久久久久久久 | 成人av免费在线 | 亚洲高清视频一区 | 中文字幕在线观看网站 | 久久草草影视免费网 | 毛片入口 | 免费黄色小片 | 日韩在线免费观看网站 | 国产一区二区久久 | 国产亚洲精品久久久久久久久 | 欧美一区免费 | 精品一区二区三区免费看 | 天天久久 | 欧美一区二区三区在线观看 | sis001亚洲原创区 | 男人的天堂一级片 | 欧美日韩精品一区二区三区 | 91亚洲狠狠婷婷综合久久久 | 精品美女在线观看视频在线观看 | 国产精品国产精品国产专区不卡 | 午夜精品久久久久久久 | 亚洲国产精品久久 | 天天色天天 | 色综合成人 | 国产精品美女视频一区二区三区 | 狠狠综合久久av一区二区老牛 | 毛片免费观看网址 | 久久大陆 | 色毛片 | 日本一级淫片免费看 | 精品国产一区二区三区性色av | 久久国产一| 欧洲另类在线1 | 欧美日韩国产一区二区 | 夜夜操操操 | 成人a毛片 | 婷婷久 | 蜜桃精品在线观看 | 2018国产精品 | 久久一区 | 成人午夜免费视频 | 国产精品视频播放 | 国产精品久久久久久久竹霞 | 天天草狠狠干 | 精品欧美一区二区在线观看视频 | 九九在线国产视频 | 国产精品黄网站在线观看 | 99国产视频| 亚洲区视频 | 在线精品观看 | 欧美色欧美亚洲另类七区 | 欧美在线影院 | 久久久久无码国产精品一区 | 亚洲精品久久久久久久久久久 | 色视频网站在线观看 | 国产精品毛片一区二区在线看 | 国产在亚洲 线视频播放 | 久久精品视 | 国产精品久久久久久久久动漫 | 一级黄色大片免费 | 91精品久久久久久久久久小网站 | 亚洲国产精品一区 | 九色porny国模私拍av | 日本三级全黄 | 欧美精品一区二区在线观看 | 黄在线看| 日韩一区二区在线观看 | 精品超碰 | 手机在线观看av | 国产在线看h | 日本黄色一级片免费看 | 免费亚洲视频 | 性色爽爱 | 欧美九九九 | 久久久欧美 | 97久久久国产精品 | 久久久国产精品一区 | 黄色网免费看 | 蜜桃av网址 | 亚洲一区二区三区四区五区午夜 | 久久天天躁狠狠躁夜夜躁2014 | 视频国产一区 | 亚洲欧洲精品视频在线观看 | 日精品| 蜜臀av在线播放一区二区三区 | 中字幕视频在线永久在线观看免费 | 波多野结衣精品 | 国产精品一区二区在线观看 | 国产区日韩区欧美区 | 天天综合网91 | 亚洲第一免费视频网站 | 精品久久久久久亚洲综合网 | 欧美二区三区 | 日韩美女av在线 | 免费一级毛片 | 精品国产乱码久久久久久88av | 中文字幕在线播放第一页 | 91久久精品一区二区三区 | 久久噜噜噜精品国产亚洲综合 | 亚洲视频在线观看免费 | 国产一区二区在线播放 | 91看片在线观看 | h片在线看 | 亚州男人天堂 | 欧美性生活视频 | av一区二区在线观看 | 亚洲国产1区 | 色av综合在线 | 天天天操 | 久久美女视频 | 精品福利在线视频 | 99久久婷婷国产综合精品 | 国产一区二区三区四区在线观看 | 亚洲视频一区 | 男人久久天堂 | 欧美一级片免费播放 | 黄色激情网站 | 国产在线视频a | 亚洲一二三 | 91精品啪啪| 日韩一区二区三区精品 | 国产一区二区精品在线观看 | 91九色视频在线 | 精品国产不卡一区二区三区 | 超碰在线国产 | 成人激情视频在线 | 羞羞在线观看视频免费观看hd | 久久精品亚洲精品国产欧美 | 亚州中文 | 成人黄视频在线观看 | 国产一区二区在线看 | 欧美综合在线观看 | av资源中文在线天堂 | a一级黄 | 日韩影音| 日韩视频一区在线观看 | 国产成人精品一区二区三区网站观看 | 国产成人高清精品免费5388 | 中文一区| 中文字幕精品一区二区三区精品 | 91精品久久久久久久久 | 国产成人免费 | 国产图区 | 亚洲 欧美 日韩在线 | 97伦理电影院 | 欧美日韩视频第一页 | 国内精品国产三级国产在线专 | 国产在线视频网站 | 国产色婷婷精品综合在线播放 | 久久三区| 蜜桃视频在线观看www社区 | 成年人网站免费在线观看 | jizz久久久| 中文字幕亚洲欧美日韩在线不卡 | 91最新| 91精品电影 | 国产亚洲精品美女久久久久久久久久 | 欧美一区二区三区精品 | 国产在线高清 | 91xxx在线观看 | 五月激情综合网 | 成人免费大片黄在线播放 | 精品无人乱码一区二区三区 | 综合网亚洲 | 国产精品久久一区二区三区 | 国产高清一区 | 日韩午夜激情视频 | 国产一区二区三区91 | 国产第一页在线播放 | 亚洲一区中文字幕在线观看 | 成年人黄色免费视频 | 亚洲一区二区三区四区在线 | 国产传媒在线观看 | 中文字幕第31页 | 淫片一级国产 | 好看毛片 | 亚洲一区二区三区四区的 | 在线视频二区 | 免费国产一区二区 | 自拍偷拍欧美 | 国产999精品久久久影片官网 | 91视频大全 | 操老逼| 亚洲一区二区三区四区五区午夜 | 一区二区三区久久久久久 | 国产一区二区高潮 | www.久久.com| 成人精品在线视频 | 午夜老湿影院 | 欧美精品久久久久久久久 | 99精品全国免费观看视频软件 | 国产精品久久久久aaaa | 欧美国产精品久久久 | 欧美 日韩 国产 一区 | 国产欧美久久久久久 | 北条麻妃国产九九九精品小说 | 日本人做爰大片免费观看一老师 | 日韩一区二区在线播放 | 国产精品粉嫩白浆在线观看 | a级在线观看 | 六月丁香av | 久久久国产精品x99av | 69久久久| 欧美午夜精品久久久久久蜜 | 国产亚洲欧美一区二区三区 | 欧美综合久久 | 国产区在线| 日本亚洲国产一区二区三区 | 国产一区二区三区精品久久久 | 日韩成人影院 | 97伦理网 | 免费在线成人 | 另类免费视频 | 欧美在线视频一区二区 | 欧美另类一二三四 | 色视频www在线播放国产人成 | 99精品国产高清一区二区麻豆 | 国产在线拍 | 日韩精品1区 | 久久久精品久久 | 亚洲福利影院 | 激情综合网五月婷婷 | 国产xxxx成人精品免费视频频 | 久久99精品久久久久久青青日本 | 日韩毛片| 99爱在线观看 | 午夜日韩 | 国产亚洲www| 97碰碰碰 | 亚洲精品久久久久久久久久久 | 综合久久久| 久久久久99精品国产片 | 躁躁躁日躁夜夜躁 | 国产女人爽到高潮免费视频 | 国产日韩欧美一区二区 | www.国产.com| 亚洲免费一区二区 | 一区二区亚洲 | 亚洲三区在线观看 | 狠狠搞狠狠搞 | 嫩草视频在线播放 | 日韩一区二区久久 | 日本激情网 | 日韩欧美一区二区三区免费观看 | 国产黄视频在线 | 国产综合精品一区二区三区 | 国产伊人久 | 国产精品欧美一区二区 | 视频一区二区三区中文字幕 | 国产中文字幕一区 | 精品国产乱码久久久久久1区2区 | 精品免费国产 | 久热中文字幕 | 久久69精品久久久久久久电影好 | 在线国产一区二区 | 久久免费精品视频 | 久久精品小视频 | 国产乱码精品一品二品 | 国产美女视频网站 | 成人久久久久久久久 | 精品香蕉视频 | 我和我的祖国电影在线观看免费版高清 | 色婷婷一区二区三区 | 欧美一级黄色片 | 国产猛男猛女超爽免费视频网站 | 91亚洲精品乱码久久久久久蜜桃 | 精品久久久久久久久久久久久久久 | 亚洲欧美中文日韩在线v日本 | 免费黄色录像视频 | 美女福利网站 | 日本 欧美 国产 | 成人亚洲免费 | 一级黄色av片 | 九九热精品视频 | 91麻豆精品国产91久久久久久 | 91精品国产一区二区三区蜜臀 | 中文字幕第31页 | 韩日一区 | 小泽玛丽娅 | 一区二区日韩视频 | 欧美精品一二三区 | 精品一区二区三区免费 | 久久涩 | 日日网| 玖草资源 | 午夜午夜精品一区二区三区文 | 亚洲电影一区二区三区 | 欧美午夜电影 | 伊人免费在线观看高清版 | 亚洲 欧美 另类 综合 偷拍 | 欧美日韩在线免费观看 | 亚洲精品3区 | 91伊人 | 99免费精品 | 亚洲国产精品一区二区久久 | 日本不卡在线 | 久久av网址| 黄毛片网站 | 午夜激情视频免费 | 欧美午夜视频 | 国产亚洲精品成人av久久影院 | av性色| 日本久久久久久久久 | 亚洲小视频 | 毛片在线视频 | 欧美爱爱视频 | 日韩精品 电影一区 亚洲 | 成年人黄色一级片 | 久久婷婷香蕉 | 国产精品久久久久久久久 | av网站网址| 日韩一级黄色大片 | 亚洲综合视频 | 国产精品.xx视频.xxtv | 91精品久久久久久久久入口 | 在线观看亚洲一区 | 国产一区免费视频 | 日韩电影免费在线观看中文字幕 | 九九在线精品 | 精品国产不卡一区二区三区 | 国产免费一区 | 亚洲伊人中文字幕 | 精品久久精品 | 精品久久久久久国产 | 黄色片在线免费观看 | 久久久久久久国产 | 精品久久精品 | 狠狠色狠狠色综合网 | 午夜三级在线 | 草草网站| 免费的日批视频 | 亚洲欧美精品一区二区三区 | 欧美成人高清视频 | 国产精品九九九 | 欧美精品网| 第一色网站| 亚洲成人精品久久 | 久在线| 久久久大 | 2019天天干夜夜操 | 一区二区在线视频 | 色就是色欧美 | 日本午夜影院 | 精品久久中文字幕 | 91久久 | 亚洲区视频在线 | 久久手机在线视频 | 国产精品无码永久免费888 | 欧美激情在线狂野欧美精品 | 免费国产一区二区 | 亚洲一区中文字幕在线观看 | 中文字幕久久综合 | 欧美成年视频 | 国产伊人久 | 久久久久99精品国产片 | 久久蜜桃精品一区二区三区综合网 | 一道本一区二区三区 | 成人a网| av成人在线观看 | 99re热精品视频 | 99riav在线| 久久综合久色欧美综合狠狠 | 日韩成人中文字幕 | 色综合天天综合网国产成人网 | 久久99久 | 91在线免费观看 | 精品久久久久久久久久久久久久久久久久久 | 91久草视频| 超碰在线播 | 大伊人久久 | www.久草.com | 成人久久久久爱 | 亚洲人成网亚洲欧洲无码 | 日本黄色三级网站 | 国产精品亚洲欧美日韩一区在线 | 国产精品福利在线观看 | 夜夜骑日日操 | 成人一区二区三区 | 久久一区二区三区四区 | 久久2| 国产亚洲二区 | 毛片91 | 亚洲精品视频免费观看 | 免费一区二区三区视频在线 | 婷婷综合五月 | 国产成人在线一区二区 | 国产高清精品一区二区三区 | 国产二区三区 | 日本成人福利视频 | 国产精品久久久久久福利一牛影视 | 999视频在线 | 亚洲免费在线播放 | 草久在线观看 | 综合伊人久久 | 久久99久久久久 | 在线不卡视频 | 精品视频一区二区 | 日韩一级免费观看 | 亚洲高清视频一区 | 欧美日韩国产综合在线 | 欧美视频在线播放 | 久久网日本 | 中文字幕免费在线观看视频 | 国产69精品99久久久久久宅男 | 欧美日韩免费一区二区三区 | 亚洲精品系列 | 亚洲欧美一级 | 国产在线观看一区二区三区 | 亚洲一区二区在线视频 | 综合婷婷| 国产精品人人做人人爽人人添 | 久久精品在线 | 狠狠视频| 亚洲永久 | 精品国产一区二区三区成人影院 | 婷婷久久综合 | 国产精品亚洲精品久久 | 可以在线观看的av网站 | 在线观看不卡一区 | 国产精品三级久久久久久电影 | 三级欧美在线观看 | 欧洲另类交| 草樱av| 国产日韩欧美在线观看 | 在线只有精品 | 亚洲久久久 | 操操操日日日 | 国产偷自视频区视频 | 91久久久www播放日本观看 | 欧美精品免费在线观看 | 狠狠狠干 | 99精品久久精品一区二区爱城 | 青草福利 | 国产91麻豆视频 | 天天插天天操天天干 | 亚洲国产一区在线 | 欧美在线观看一区 | 午夜精品久久久久久久久久久久 | 久久只有精品 | 国产高清视频在线观看 | 亚洲性视频 | 免费观看亚洲 | 亚洲午夜电影在线 | 精品一区二区在线观看 | 亚洲精品一区二区三区蜜桃久 | 日韩一区二区三区四区五区 | 欧美一区视频 | 日本久久久久久久久 | 久久精品99国产精品亚洲最刺激 | 国产精品免费av | 日韩亚洲欧美综合 | 日韩精品1区2区3区 成人黄页在线观看 | 99热精品在线 | 亚洲视频一区二区三区 | 久久综合色视频 | 免费国产一区二区 | 国产高清在线观看 | 五月免费视频 | 成人影院一区二区三区 | 日韩专区在线播放 | 天天爽天天操 | 欧美1区| 日韩在线播放网址 | 99爱视频| 中文字幕在线观看精品视频 | 国产美女久久久 | 99久久99久久久精品色圆 | 日韩av免费 | 成人深夜在线观看 | 97爱爱爱 | 视频网站免费观看 | 欧美一级片免费在线观看 | 日韩免费一区二区 | 欧美视频免费在线观看 | 国产男女免费视频 | 成人免费黄色小视频 | 91中文字幕| 欧美一区二区三区在线观看 | 午夜免费网 | 久久综合一区二区 | 伊人久久精品久久亚洲一区 | 91天堂| 三区中文字幕 | 免费v片在线观看 | 欧美日韩在线免费观看 | 日韩9999| 成人影院av | 国产午夜精品福利 | 日日天天 | 亚洲精品久久久久久久久久久 | av在线免费观看一区二区 | 亚洲精品久久久久久一区二区 | 久久夜精 | 欧美一级二级视频 | 免费a视频| 国产欧美精品一区二区色综合朱莉 | 国产欧美精品一区aⅴ影院 毛片视频网站 | 欧美精品1 | 国产超碰人人爽人人做人人爱 | 亚洲一区二区在线免费观看 | 欧美视频精品在线 | 后进极品白嫩翘臀在线视频 | 精品国产乱码久久久久久1区2区 | 免费看特级毛片 | 成人网在线观看 | 日韩中文视频 | 成人免费视频网站在线观看 | 欧美成人精品一区二区男人看 | 日本一区二区三区视频免费看 | 男女羞羞视频免费在线观看 | 国产精品日产欧美久久久久 | 我和我的祖国电影在线观看免费版高清 | 日韩综合| 亚洲网站在线观看 | 成年无码av片在线 | 国产精品一码二码三码在线 | 伊人激情网 | 久久99这里只有精品 | 日韩精品在线一区 | 精品国产一区二区三区小蝌蚪 | 亚洲精品电影在线观看 | 国产日产精品一区二区三区四区 | 黄色免费网站观看 |