精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

paddlepaddle圖像分類與visualDL嘗鮮體驗

企業(yè)動態(tài)
很早之前,有寫過關(guān)于TensorFlow, MXNet中如何訓(xùn)練一個靠譜的圖像分類器,這里我會先使用paddlepaddle官方的例子,來學(xué)習(xí)下如何使用paddlepaddle構(gòu)建一個靠譜的分類器。

paddlepaddle圖像分類

很早之前,有寫過關(guān)于TensorFlow, MXNet中如何訓(xùn)練一個靠譜的圖像分類器,這里我會先使用paddlepaddle官方的例子,來學(xué)習(xí)下如何使用paddlepaddle構(gòu)建一個靠譜的分類器。

數(shù)據(jù)介紹

官方文檔上使用的數(shù)據(jù)是flowers-102,這個數(shù)據(jù)集早在當(dāng)初tflearn學(xué)習(xí)深度學(xué)習(xí)網(wǎng)絡(luò)的時候就有接觸過,還是比較簡單的,paddlepaddle把它寫成數(shù)據(jù)接口

模型介紹

paddlepaddle的模型介紹model overview。這里我們在實驗當(dāng)中使用大名鼎鼎的resnet-50:

import paddle.v2 as paddle  __all__ = ['resnet_imagenet', 'resnet_cifar10']   def conv_bn_layer(input,                 ch_out,                 filter_size,                 stride,                 padding,                 active_type=paddle.activation.Relu(),                 ch_in=None):     tmp = paddle.layer.img_conv(         input=input,         filter_size=filter_size,         num_channels=ch_in,         num_filters=ch_out,         stride=stride,         padding=padding,         act=paddle.activation.Linear(),         bias_attr=False)     return paddle.layer.batch_norm(input=tmp, act=active_type)   def shortcut(input, ch_out, stride):     if input.num_filters != ch_out:         return conv_bn_layer(input, ch_out, 1, stride, 0,                             paddle.activation.Linear())     else:         return input   def basicblock(input, ch_out, stride):     short = shortcut(input, ch_out, stride)     conv1 = conv_bn_layer(input, ch_out, 3, stride, 1)     conv2 = conv_bn_layer(conv1, ch_out, 3, 1, 1, paddle.activation.Linear())     return paddle.layer.addto(         input=[short, conv2], act=paddle.activation.Relu())   def bottleneck(input, ch_out, stride):     short = shortcut(input, ch_out * 4, stride)     conv1 = conv_bn_layer(input, ch_out, 1, stride, 0)     conv2 = conv_bn_layer(conv1, ch_out, 3, 1, 1)     conv3 = conv_bn_layer(conv2, ch_out * 4, 1, 1, 0,                         paddle.activation.Linear())     return paddle.layer.addto(         input=[short, conv3], act=paddle.activation.Relu())   def layer_warp(block_func, input, ch_out, count, stride):     conv = block_func(input, ch_out, stride)     for i in range(1, count):         conv = block_func(conv, ch_out, 1)     return conv   def resnet_imagenet(input, class_dim, depth=50):     cfg = {         18: ([2, 2, 2, 1], basicblock),         34: ([3, 4, 6, 3], basicblock),         50: ([3, 4, 6, 3], bottleneck),         101: ([3, 4, 23, 3], bottleneck),         152: ([3, 8, 36, 3], bottleneck)     }     stages, block_func = cfg[depth]     conv1 = conv_bn_layer(         input, ch_in=3, ch_out=64, filter_size=7, stride=2, padding=3)     pool1 = paddle.layer.img_pool(input=conv1, pool_size=3, stride=2)     res1 = layer_warp(block_func, pool1, 64, stages[0], 1)     res2 = layer_warp(block_func, res1, 128, stages[1], 2)     res3 = layer_warp(block_func, res2, 256, stages[2], 2)     res4 = layer_warp(block_func, res3, 512, stages[3], 2)     pool2 = paddle.layer.img_pool(         input=res4, pool_size=7, stride=1, pool_type=paddle.pooling.Avg())     out = paddle.layer.fc(input=pool2,                         size=class_dim,                         act=paddle.activation.Softmax())     return out   def resnet_cifar10(input, class_dim, depth=32):     # depth should be one of 20, 32, 44, 56, 110, 1202     assert (depth - 2) % 6 == 0     n = (depth - 2) / 6     nStages = {16, 64, 128}     conv1 = conv_bn_layer(         input, ch_in=3, ch_out=16, filter_size=3, stride=1, padding=1)     res1 = layer_warp(basicblock, conv1, 16, n, 1)     res2 = layer_warp(basicblock, res1, 32, n, 2)     res3 = layer_warp(basicblock, res2, 64, n, 2)     pool = paddle.layer.img_pool(         input=res3, pool_size=8, stride=1, pool_type=paddle.pooling.Avg())     out = paddle.layer.fc(input=pool,                         size=class_dim,                         act=paddle.activation.Softmax())     return out 

運行

進(jìn)入對應(yīng)目錄后

python train.py resnet 

即可完成

但是事實上其實不是這樣的,paddlepaddle安裝whl和tensorflow一樣,gpu版本都會對應(yīng)不同的cuda和cudnn,經(jīng)常會出一些配置問題,所以直接在系統(tǒng)中安裝其實是一個不好的選擇,所以***是不要選擇直接安裝,而是使用nvidia-docker,同理在tensorflow,mxnet中,感覺nvidia-docker也是很好的。

nvidia-docker安裝

  1. 安裝cuda、cudnn,***的;
  2. 根據(jù)系統(tǒng)選擇對應(yīng)版本的docker;
  3. 安裝nvidia-docker:
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f sudo apt-get purge -y nvidia-docker docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f sudo apt-get purge -y nvidia-docker curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey |  sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list |  sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update sudo apt-get install -y nvidia-docker2 sudo pkill -SIGHUP dockerd 
  1. 拉paddlepaddle鏡像 docker pull paddlepaddle/paddle:latest-gpu
  2. 進(jìn)入docker, nvidia-docker run -it -v $PWD:/work -v /data:/data paddlepaddle/paddle:latest-gpu /bin/bash。這里稍微注意下,paddlepaddle的官方鏡像源里面缺少一些必須的包,比如opencv,好像有點問題,還有vim啥的也都沒有裝,這里為了運行***把這些環(huán)境一次性都解決,然后docker commit,保存對鏡像的修改。

基本這樣,你就可以在本機(jī)上有一個完全干凈的docker環(huán)境,你就可以隨便折騰啦。這里如果有運行不起來的問題,可在下方評論,我具體也不記得缺哪些東西,不過都很好解決的

docker中運行

這里我運行過很長時間的一個demo,但是因為沒有保存好信息,被覆蓋了,所以只能暫時演示一下。

使用自己的數(shù)據(jù)集來訓(xùn)練模型

實驗完官方的flower-102之后,我們這里使用自己的數(shù)據(jù)集來訓(xùn)練模型,數(shù)據(jù)集是之前收集到的鑒黃數(shù)據(jù),數(shù)據(jù)集主要包括三類:porn\sexy\normal,大概有500w張左右。 首先,我們需要生成如下格式,格式為圖像路徑+"\t"+label,其中l(wèi)abel為0表示normal,1表示sexy,2表示porn。 生成腳本如下:

import random import os import codecs import sys  def gen_datalist(data_dir, class_label, data_type="train", shuffle=True, suffix_list=["jpg", "jpeg", "JPEG", "jpg"]):     all_files = []     for root, dirs, files in os.walk(data_dir):         print "processing {0}".format(root)         for file_name in files:             file_name = os.path.join(root, file_name)             suffix = file_name.split(".")[-1]             if suffix in suffix_list:                 all_files.append(file_name)     if shuffle:         print "shuffle now"         random.shuffle(all_files)     print "begin to write to {0}".format(data_type+"_"+class_label+".lst")     with codecs.open(data_type+"_"+class_label+".lst", "w", encoding="utf8") as fwrite:         for each_file in all_files:             fwrite.write(each_file+"\t"+class_label+"\n")    if __name__ == "__main__":     argv = sys.argv     data_dir = argv[1]     class_label = argv[2]     gen_datalist(data_dir, class_label) 

有了腳本運行之后,發(fā)現(xiàn)了一些cv2庫中none 沒有shape的問題,調(diào)試之后發(fā)現(xiàn),原來收集的數(shù)據(jù)中,有部分大小為0或者很小的圖像,這部分應(yīng)該是有問題的數(shù)據(jù),寫了個濾除腳本,刪除這些數(shù)據(jù)之后就妥了

from paddle.v2.image import load_and_transform import paddle.v2 as paddle  def filter_imgs(file_path = "train.lst", write_file = "valid_train.lst"):     fwrite = open(write_file, "w")     with open(file_path, 'r') as fread:         error=0         for line in fread.readlines():             img_path = line.strip().split("\t")[0]             try:                 img = paddle.image.load_image(img_path)                 img = paddle.image.simple_transform(img, 256, 224, True)                 fwrite.write(line)             except:                 error += 1                 print error  filter_imgs() 

從頭開始訓(xùn)練模型

在paddlepaddle中訓(xùn)練模型

image = paddle.layer.data(     name="image", type=paddle.data_type.dense_vector(DATA_DIM)) conv, pool, out = resnet.resnet_imagenet(image, class_dim=CLASS_DIM) cost = paddle.layer.classification_cost(input=out, label=lbl) parameters = paddle.parameters.create(cost) optimizer = paddle.optimizer.Momentum(     momentum=0.9,     regularization=paddle.optimizer.L2Regularization(rate=0.0005 *                                                      BATCH_SIZE),     learning_rate=learning_rate / BATCH_SIZE,     learning_rate_decay_a=0.1,     learning_rate_decay_b=128000 * 35,     learning_rate_schedule="discexp", ) train_reader = paddle.batch(     paddle.reader.shuffle(         # flowers.train(),         # To use other data, replace the above line with:         reader.train_reader('valid_train0.lst'),         buf_size=1000),     batch_size=BATCH_SIZE)  def event_handler(event):     if isinstance(event, paddle.event.EndIteration):         if event.batch_id % 1 == 0:             print "\nPass %d, Batch %d, Cost %f, %s" % (                 event.pass_id, event.batch_id, event.cost, event.metrics)     if isinstance(event, paddle.event.EndPass):         with gzip.open('params_pass_%d.tar.gz' % event.pass_id, 'w') as f:             trainer.save_parameter_to_tar(f)         result = trainer.test(reader=test_reader)         print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics) trainer.train(     reader=train_reader, num_passes=200, event_handler=event_handler) 
  1. 需要配置resnet網(wǎng)絡(luò),確定好input和out,配置cost函數(shù),構(gòu)建parameter;
  2. 構(gòu)建optimizer,使用momentum的sgd;
  3. 構(gòu)建reader,設(shè)置訓(xùn)練數(shù)據(jù)讀取,配置上文提到的圖片路徑\tlabel的文件;
  4. event_handler是用來記錄batch_id\pass的事件處理函數(shù),傳入train函數(shù),訓(xùn)練過程中會完成相應(yīng)工作;

pretrain model + finetuning

resnet官方提供一個在imagenet上訓(xùn)練好的pretrained model,運行model_download.sh。

sh model_download.sh ResNet50 

會下載Paddle_ResNet50.tar.gz, 這個文件是paddlepaddle在ImageNet上訓(xùn)練的模型文件,我們這里使用這個文件的參數(shù)做初始化,我們需要在代碼,參數(shù)初始化的時候,使用這里的參數(shù),修改代碼如下:

if args.retrain_file is not None and ''!=args.retrain_file:         print("restore parameters from {0}".format(args.retrain_file))         exclude_params = [param for param in parameters.names() if param.startswith('___fc_layer_0__')]         parameters.init_from_tar(gzip.open(args.retrain_file), exclude_params) 

首先,我們需要指定init_from_tar的參數(shù)文件為Paddle_ResNet50.tar.gz, 大家知道ImageNet是在1000類上的一個模型,它的輸出為1000個節(jié)點,所以我們這里需要稍作修改,我們增加一個exclud_params,指定***一層___fc_layer_0__的參數(shù),不要從文件當(dāng)中初始化.

pretrain model + freeze layers + finetuning

查了文檔和代碼知道,只需要在某層增加is_static=True,就可以freeze掉該層的參數(shù),使該層參數(shù)不更新,但是我在使用這部分時遇到了bug,提了issue (core dumped with is_static=True)[github.com/PaddlePaddle],出現(xiàn)core的問題,無法正常使用,后面能夠搞定了,再更新這部分內(nèi)容。

代碼改進(jìn)

examples里面的代碼reader部分在處理data.lst時,太過粗糙,沒有考慮到數(shù)據(jù)如果出現(xiàn)一些問題時,訓(xùn)練代碼會直接掛掉,這部分的代碼至少要保證足夠的魯棒性

def train_reader(train_list, buffered_size=1024):     def reader():         with open(train_list, 'r') as f:             lines = [line.strip() for line in f]             for line in lines:                 try:                     img_path, lab = line.strip().split('\t')                     yield img_path, int(lab)                 except:                     print "record in {0} get error".format(train_list)                     continue      return paddle.reader.xmap_readers(train_mapper, reader,                                     cpu_count(), buffered_size) 

visualDL實踐

可視化acc\loss

之前有在小的demo上體驗過visualDL,在比較大的數(shù)據(jù)訓(xùn)練過程上沒試驗過,這次鑒黃數(shù)據(jù)上測試,打印出loss和acc看看,當(dāng)小數(shù)量的step的時候,看起來是沒有問題的 。

但是但step較大的時候,acc打印不出來了,同樣的代碼,出錯信息也看不出來,各種莫名的報錯,看樣子和使用的代碼沒有什么關(guān)系,應(yīng)該是visualDL本身的容錯做的不夠。

出錯提示:

這部分和之前提過的一個issue很類似: Unexpected error: <type 'exceptions.RuntimeError'> 因為信息量不夠,其實很難自己這邊做問題分析,希望visualDL把這塊容錯做好一些。

這塊時間應(yīng)該有些問題,我也不知道,我總覺的有點問題 是我用的姿勢不對嗎 ?

可視化graph

使用有問題,使用paddlepaddle保存好的模型指定給model_pb 出現(xiàn)如下問題, 看了repo中的這部分的demo都是直接curl下來一個model.pb的文件,然后可視化,沒有找到能直接導(dǎo)出paddlepaddle保存模型的導(dǎo)入到visualdl中, 可能是我的使用方式有問題, 保存模型方式如下圖:


莫非需要先把paddlepaddle模型轉(zhuǎn)換為onnx格式?

可視化image

有問題,暫時沒有測試,之后更新后同步

總結(jié)

paddlepaddle現(xiàn)在在dl這塊還只是剛開始,example里面的demo和tensorflow最開始一樣,并不能完全hold住實際業(yè)務(wù)需求,當(dāng)初tensorflow的時候也有種種的問題,后來經(jīng)過社區(qū)的幫助,到現(xiàn)在很多源碼幾乎都是開箱即用,paddlepaddle現(xiàn)在可能在文檔與demo上還是0.7版本的tensorflow,不過希望能更加努力,畢竟作為同行,在參與了一些分布式dl模型的工作之后,深知其中的艱辛。visualdl相當(dāng)棒的工具,支持onnx的模型可視化,雖然在測試過程中感覺有些瑕疵,但是十分支持,希望能快速發(fā)展,個人也在閱讀這部分源碼學(xué)習(xí), histogram的相關(guān)功能沒有測試,挺有用的 尤其在訓(xùn)練跑偏的時候可以快速可視化參數(shù)的分布。***,強(qiáng)烈希望visualdl能把文檔弄的更友好一些,加油。

另外,大年三十,祝大家新年快樂,狗年跑模型妥妥的收斂

責(zé)任編輯:張燕妮 來源: 小石頭的碼瘋窩
相關(guān)推薦

2018-03-26 20:07:25

深度學(xué)習(xí)

2018-04-09 10:20:32

深度學(xué)習(xí)

2011-03-23 11:19:37

2018-03-27 22:40:59

深度學(xué)習(xí)

2013-11-14 10:34:57

Android 4.4特性

2014-06-19 15:29:44

RHEL 7.0系統(tǒng)安裝

2011-03-23 10:23:56

IE9嘗鮮體驗瀏覽器

2013-12-02 11:17:17

Linux MintLinux Mint Cinnamon

2012-04-10 14:45:05

傲游瀏覽器體驗版

2021-02-15 18:19:52

數(shù)字人民幣數(shù)字貨幣區(qū)塊鏈

2018-01-26 14:29:01

框架

2018-01-21 14:11:22

人工智能PaddlePaddlTensorflow

2014-01-13 17:12:38

IT技術(shù)周刊

2019-07-06 10:18:07

人工智能

2018-03-27 23:01:32

移動端

2024-09-20 10:02:13

2017-05-08 12:30:19

智能化垃圾分類二維碼

2018-01-18 08:48:56

百度工具深度學(xué)習(xí)

2018-03-27 22:35:35

百度

2025-02-21 10:09:44

DINOv2圖像分類開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號

国产视频精品视频| www.日本三级| 伊人精品在线视频| 欧美日韩国产亚洲一区| 亚洲国产精品推荐| 日韩精品一区二区三区不卡| 日本激情在线观看| 国产91精品一区二区| 国产成人亚洲综合青青| 欧洲猛交xxxx乱大交3| 理论片一区二区在线| 欧美人妖巨大在线| 欧美三级一级片| 黄色av电影在线播放| 91麻豆免费观看| 亚洲综合大片69999| 国产精品第5页| 国产精品mv在线观看| 国产小视频91| 中文字幕一区二区久久人妻网站| 日韩福利影视| 在线视频中文字幕一区二区| 国产av天堂无码一区二区三区| 天堂中文а√在线| www.视频一区| 不卡一区二区三区视频| 一级片aaaa| 日韩高清不卡一区二区三区| 久久久久亚洲精品国产| 黑人巨大精品一区二区在线| 日韩在线二区| 一本色道久久综合狠狠躁篇的优点 | 精品一区二区三区在线观看 | 久久色在线播放| www久久久久久久| 日本亚洲不卡| 亚洲精品99999| 免费黄视频在线观看| 曰本一区二区| 欧美精品欧美精品系列| 亚洲最大综合网| 成人啊v在线| 欧洲av在线精品| 欧美在线观看视频网站| 欧美电影免费观看高清完整| 日韩欧美国产视频| 国产精品97在线| 新片速递亚洲合集欧美合集| 色综合色综合色综合| 虎白女粉嫩尤物福利视频| av综合电影网站| 日本道在线观看一区二区| 免费在线观看的毛片| 3d性欧美动漫精品xxxx软件| 色狠狠色噜噜噜综合网| 9久久婷婷国产综合精品性色| 成人精品电影在线| 欧美日韩一区二区三区四区五区 | 久久综合亚洲精品| 国产黄大片在线观看画质优化| 亚洲色图欧洲色图婷婷| 真人做人试看60分钟免费| 牛牛精品在线| 欧美日韩国产综合新一区| 国产成人精品视频免费看| 暖暖成人免费视频| 欧美日韩视频在线一区二区| 亚洲日本黄色片| av不卡一区| 亚洲精品在线观看www| 久久久久久国产免费a片| 97精品97| 久久久久亚洲精品国产| 亚洲va在线观看| 精品一区二区三区在线播放视频| 99理论电影网| 你懂的视频在线播放| 中文字幕不卡在线观看| 成人国产在线看| 免费高潮视频95在线观看网站| 欧洲精品一区二区| 国产精品一级无码| 亚洲影院天堂中文av色| 日韩在线观看精品| 国产成人无码精品| 蜜桃视频在线观看一区| 岛国视频一区| 风间由美一区| 亚洲综合一区在线| 亚洲精品高清无码视频| 视频一区在线| 亚洲偷熟乱区亚洲香蕉av| 波多野结衣不卡视频| 久久一日本道色综合久久| 亚洲影院色无极综合| 天堂在线视频免费| 亚洲人xxxx| 超碰影院在线观看| 99re热精品视频| 色悠悠久久久久| www.毛片.com| 国产一区二区免费视频| 欧美日韩一区二区三区免费| 99自拍视频在线观看| 在线观看亚洲一区| 欧美熟妇精品一区二区蜜桃视频 | 在线精品视频视频中文字幕| 久久中文字幕在线观看| 美腿丝袜在线亚洲一区| 久久亚洲精品欧美| 丁香花视频在线观看| 欧美日韩国产大片| 日本少妇高潮喷水xxxxxxx| 国产一区美女| 成人一区二区电影| 1024国产在线| 91久久精品午夜一区二区| 亚洲精品乱码久久久久久蜜桃欧美| 日韩成人影院| 国产精品成人av性教育| 视频污在线观看| 一区二区三区四区激情| 国产精品久久久久久久av福利| 日韩av专区| 国产精品你懂得| 每日更新av在线播放| 午夜电影一区二区三区| 国产麻豆剧传媒精品国产| 91精品推荐| 国产色婷婷国产综合在线理论片a| 久草视频在线看| 欧美小视频在线| 国产网站无遮挡| 一区二区视频欧美| 不卡视频一区二区| 美女日批视频在线观看| 精品久久一区二区三区| 免费视频一二三区| 国产成人av自拍| 日韩一区二区高清视频| 99亚洲乱人伦aⅴ精品| 欧美成人性生活| 国产黄色片免费| 亚洲综合成人网| 国产51自产区| 在线亚洲免费| 欧美日韩亚洲一区二区三区四区| 成人影院网站| 国产一区二区免费| 一级久久久久久| 中文字幕五月欧美| 亚洲一级片免费观看| 午夜日韩电影| 国产一区二区三区黄| 中老年在线免费视频| 亚洲欧美中文日韩v在线观看| 中文字幕在线播| 中文欧美字幕免费| 中文字幕资源在线观看| 欧美日本中文| 九色91视频| 麻豆精品蜜桃| 久久精品国产69国产精品亚洲| 国产熟女一区二区三区五月婷| 一区二区三区四区五区视频在线观看| 久久久老熟女一区二区三区91| 在线视频精品| 亚洲欧洲国产精品久久| 亚洲1区在线观看| 51视频国产精品一区二区| 国产在线中文字幕| 91精品国产福利在线观看| 99免费在线观看| 久久久国产午夜精品| 日本精品一区在线| 亚洲永久免费精品| 久久久一二三四| 激情小说亚洲色图| 国产美女久久精品| 大黄网站在线观看| 一区二区三欧美| www日本高清视频| 色噜噜夜夜夜综合网| 曰本女人与公拘交酡| www久久久久| 肉色超薄丝袜脚交| 另类激情亚洲| 久久久99精品视频| 精品国产精品久久一区免费式| 97se亚洲综合| 午夜精品成人av| 国产69精品99久久久久久宅男| 国产三级在线免费观看| 欧美不卡视频一区| 中文字幕在线观看欧美| 午夜激情综合网| 久久国产精品国语对白| 久久精品人人爽人人爽| 国内精品免费视频| 麻豆成人91精品二区三区| 精品久久一二三| 亚洲精品小说| 亚洲激情电影在线| 色愁久久久久久| av色综合网| 国产亚洲字幕| 国产精品欧美亚洲777777| 精品捆绑调教一区二区三区| 久久资源免费视频| av福利在线播放| 亚洲欧美日韩在线高清直播| 丰满人妻一区二区三区免费| 欧美精品v日韩精品v韩国精品v| www亚洲视频| 五月综合激情网| 精品无码人妻一区二区三| 亚洲色图另类专区| 国产三级精品三级观看| 久久九九久精品国产免费直播| 色综合久久五月| 高清不卡一区二区| 男男受被啪到高潮自述| 精品影院一区二区久久久| 国产野外作爱视频播放| 日韩黄色一级片| 日韩手机在线观看视频| 亚洲一区自拍| 成人观看免费完整观看| 亚洲综合日韩| 亚洲欧洲日产国码无码久久99| 影音先锋中文字幕一区| 国产一二三区在线播放| 国产精品v一区二区三区| 黄色网在线视频| 好看的亚洲午夜视频在线| 亚洲精品国产suv一区88| 91精品一区二区三区综合| 天天综合中文字幕| 亚洲第一偷拍| 69精品丰满人妻无码视频a片| 欧美精品激情| 国产三级中文字幕| 午夜久久一区| 国产 日韩 欧美在线| 亚洲全部视频| 久草青青在线观看| 日本网站在线观看一区二区三区| 男女啪啪网站视频| 久久99热这里只有精品| 免费不卡av网站| 成人国产亚洲欧美成人综合网| 免费a v网站| 久久精品视频免费观看| avhd101老司机| 亚洲婷婷在线视频| 青娱乐免费在线视频| 性感美女极品91精品| 亚洲免费黄色网址| 欧美三级韩国三级日本一级| 91在线公开视频| 精品三级在线观看| 日本大片在线观看| 色偷偷噜噜噜亚洲男人的天堂| 免费网站免费进入在线| 欧美激情精品久久久久久| 国产自产自拍视频在线观看| 国产精国产精品| 国产精品成人3p一区二区三区| 不卡一卡2卡3卡4卡精品在| 五月国产精品| 正在播放一区| 亚洲精选国产| 五月婷婷六月合| 国产成人自拍网| 老鸭窝一区二区| 日韩美女精品在线| 日韩污视频在线观看| 欧美色图12p| 亚洲精品免费在线观看视频| 亚洲视频在线看| 亚洲小说区图片| 国产999在线| 亚洲天堂中文字幕在线观看| 欧美精品123| 欧美精品成人| 欧美黑人又粗又大又爽免费| 国产**成人网毛片九色| 性猛交ⅹxxx富婆video | 自拍偷拍亚洲欧美| 后进极品白嫩翘臀在线播放| 日韩免费黄色av| 亚洲一区二区三区日本久久九| 欧美一级日本a级v片| 欧美理论在线| 午夜两性免费视频| 成人av在线看| 午夜精品久久久久99蜜桃最新版| 精品成人久久av| 国产chinasex对白videos麻豆| 亚洲网站在线看| а√在线中文网新版地址在线| 国产日韩欧美成人| 国产日产精品一区二区三区四区的观看方式 | 国产精品18在线| 欧美日韩性生活视频| 国产强伦人妻毛片| 伊人久久大香线蕉av一区二区| 大香伊人中文字幕精品| 亚洲精品日韩av| 日韩精品欧美激情一区二区| 高清在线观看免费| 成人午夜在线免费| 日韩成人毛片视频| 欧美日韩国产大片| 岛国在线视频| 欧美一级视频在线观看| 国产成人高清精品免费5388| 干日本少妇视频| 激情丁香综合五月| 1024在线看片| 欧美亚洲自拍偷拍| 免费黄网站在线观看| 6080yy精品一区二区三区| 91精品久久久久久综合五月天| ijzzijzzij亚洲大全| 捆绑调教一区二区三区| 日本美女xxx| 欧美午夜电影网| av在线播放网| 国产精品日韩精品| 成人嫩草影院| 在线免费av播放| 中国色在线观看另类| 中文字幕激情视频| 在线电影欧美日韩一区二区私密| 日本成人伦理电影| 日韩中文字幕一区| 日本 国产 欧美色综合| 日本污视频网站| 精品污污网站免费看| 日本不卡不卡| 成人在线观看视频网站| 国产精品毛片一区二区在线看| 国产免费中文字幕| 亚洲精品免费看| 欧美一级特黄aaaaaa大片在线观看| 欧美国产在线电影| 动漫3d精品一区二区三区乱码| 一二三四视频社区在线| 99久久伊人久久99| 潘金莲一级淫片aaaaaa播放| 亚洲欧洲成视频免费观看| 亚洲精品粉嫩美女一区| 亚洲精品永久www嫩草| 国产一区二区在线视频| 欧美精品成人久久| 日韩精品在线电影| 97人人做人人爽香蕉精品| 一本一生久久a久久精品综合蜜 | 欧美在线一区二区| 77导航福利在线| 成人免费网站在线| 亚洲婷婷免费| 日韩在线免费观看av| 欧美日韩免费观看一区二区三区| 成人免费看片| 国产一区二区高清不卡| 三级亚洲高清视频| 波多野结衣久久久久| 精品av久久707| av高清一区| 国产日产欧美一区二区| 99久久精品国产一区| 亚洲性猛交富婆| 欧美成人精品h版在线观看| 啪啪国产精品| 国产三级国产精品国产专区50| 亚洲精品国产第一综合99久久| 亚州视频一区二区三区| 国产拍精品一二三| 亚洲黄色高清| 国产日产在线观看| 亚洲电影中文字幕| 色诱色偷偷久久综合| 国内精品视频一区二区三区| 国产精品五月天| 神马午夜电影一区二区三区在线观看| 国产精品亚洲综合天堂夜夜| 韩国在线视频一区| 欧美成人短视频| 亚洲精品国精品久久99热| 欧美成人免费全部网站| 国产特级黄色大片| 亚洲天堂免费在线观看视频| 亚洲av电影一区| 91国产丝袜在线放| 蜜臀av亚洲一区中文字幕| 日本熟妇毛耸耸xxxxxx| 久久精品国产99国产精品澳门 | 无码人妻久久一区二区三区 |